diff --git a/eclipse-gtk2.18zorder.patch b/eclipse-gtk2.18zorder.patch new file mode 100644 index 0000000..94efb52 --- /dev/null +++ b/eclipse-gtk2.18zorder.patch @@ -0,0 +1,218 @@ +### Eclipse Workspace Patch 1.0 +#P org.eclipse.swt +Index: Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java +=================================================================== +RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java,v +retrieving revision 1.380.2.1 +diff -u -r1.380.2.1 Control.java +--- Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java 7 Aug 2009 18:50:38 -0000 1.380.2.1 ++++ Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java 30 Sep 2009 16:19:55 -0000 +@@ -3332,6 +3332,30 @@ + region = null; + } + ++void restackWindow (int /*long*/ window, int /*long*/ sibling, boolean above) { ++ if (OS.GTK_VERSION >= OS.VERSION (2, 17, 11)) { ++ OS.gdk_window_restack (window, sibling, above); ++ } else { ++ /* ++ * Feature in X. If the receiver is a top level, XConfigureWindow () ++ * will fail (with a BadMatch error) for top level shells because top ++ * level shells are reparented by the window manager and do not share ++ * the same X window parent. This is the correct behavior but it is ++ * unexpected. The fix is to use XReconfigureWMWindow () instead. ++ * When the receiver is not a top level shell, XReconfigureWMWindow () ++ * behaves the same as XConfigureWindow (). ++ */ ++ int /*long*/ xDisplay = OS.gdk_x11_drawable_get_xdisplay (window); ++ int /*long*/ xWindow = OS.gdk_x11_drawable_get_xid (window); ++ int xScreen = OS.XDefaultScreen (xDisplay); ++ int flags = OS.CWStackMode | OS.CWSibling; ++ XWindowChanges changes = new XWindowChanges (); ++ changes.sibling = OS.gdk_x11_drawable_get_xid (sibling); ++ changes.stack_mode = above ? OS.Above : OS.Below; ++ OS.XReconfigureWMWindow (xDisplay, xWindow, xScreen, flags, changes); ++ } ++ } ++ + boolean sendDragEvent (int button, int stateMask, int x, int y, boolean isStateMask) { + Event event = new Event (); + event.button = button; +@@ -3682,15 +3706,7 @@ + if (!OS.GDK_WINDOWING_X11 ()) { + OS.gdk_window_raise (enableWindow); + } else { +- int /*long*/ topWindow = OS.GTK_WIDGET_WINDOW (topHandle); +- int /*long*/ xDisplay = OS.gdk_x11_drawable_get_xdisplay (topWindow); +- int /*long*/ xWindow = OS.gdk_x11_drawable_get_xid (enableWindow); +- int xScreen = OS.XDefaultScreen (xDisplay); +- int flags = OS.CWStackMode | OS.CWSibling; +- XWindowChanges changes = new XWindowChanges (); +- changes.sibling = OS.gdk_x11_drawable_get_xid (topWindow); +- changes.stack_mode = OS.Above; +- OS.XReconfigureWMWindow (xDisplay, xWindow, xScreen, flags, changes); ++ restackWindow (enableWindow, OS.GTK_WIDGET_WINDOW (topHandle), true); + } + if (OS.GTK_WIDGET_VISIBLE (topHandle)) OS.gdk_window_show_unraised (enableWindow); + } +@@ -4170,29 +4186,12 @@ + OS.gdk_window_lower (window); + } + } else { +- XWindowChanges changes = new XWindowChanges (); +- changes.sibling = OS.gdk_x11_drawable_get_xid (siblingWindow != 0 ? siblingWindow : redrawWindow); +- changes.stack_mode = above ? OS.Above : OS.Below; +- if (redrawWindow != 0 && siblingWindow == 0) changes.stack_mode = OS.Below; +- int /*long*/ xDisplay = OS.gdk_x11_drawable_get_xdisplay (window); +- int /*long*/ xWindow = OS.gdk_x11_drawable_get_xid (window); +- int xScreen = OS.XDefaultScreen (xDisplay); +- int flags = OS.CWStackMode | OS.CWSibling; +- /* +- * Feature in X. If the receiver is a top level, XConfigureWindow () +- * will fail (with a BadMatch error) for top level shells because top +- * level shells are reparented by the window manager and do not share +- * the same X window parent. This is the correct behavior but it is +- * unexpected. The fix is to use XReconfigureWMWindow () instead. +- * When the receiver is not a top level shell, XReconfigureWMWindow () +- * behaves the same as XConfigureWindow (). +- */ +- OS.XReconfigureWMWindow (xDisplay, xWindow, xScreen, flags, changes); ++ int /*long*/ siblingW = siblingWindow != 0 ? siblingWindow : redrawWindow; ++ boolean stack_mode = above; ++ if (redrawWindow != 0 && siblingWindow == 0) stack_mode = false; ++ restackWindow (window, siblingW, stack_mode); + if (enableWindow != 0) { +- changes.sibling = OS.gdk_x11_drawable_get_xid (window); +- changes.stack_mode = OS.Above; +- xWindow = OS.gdk_x11_drawable_get_xid (enableWindow); +- OS.XReconfigureWMWindow (xDisplay, xWindow, xScreen, flags, changes); ++ restackWindow (enableWindow, window, true); + } + } + } +Index: Eclipse SWT PI/gtk/library/os_stats.h +=================================================================== +RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h,v +retrieving revision 1.180 +diff -u -r1.180 os_stats.h +--- Eclipse SWT PI/gtk/library/os_stats.h 29 May 2009 21:30:13 -0000 1.180 ++++ Eclipse SWT PI/gtk/library/os_stats.h 30 Sep 2009 16:19:54 -0000 +@@ -511,6 +511,7 @@ + _1gdk_1window_1raise_FUNC, + _1gdk_1window_1remove_1filter_FUNC, + _1gdk_1window_1resize_FUNC, ++ _1gdk_1window_1restack_FUNC, + _1gdk_1window_1scroll_FUNC, + _1gdk_1window_1set_1accept_1focus_FUNC, + _1gdk_1window_1set_1back_1pixmap_FUNC, +Index: Eclipse SWT PI/gtk/library/os_custom.h +=================================================================== +RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_custom.h,v +retrieving revision 1.80 +diff -u -r1.80 os_custom.h +--- Eclipse SWT PI/gtk/library/os_custom.h 29 May 2009 21:30:14 -0000 1.80 ++++ Eclipse SWT PI/gtk/library/os_custom.h 30 Sep 2009 16:19:54 -0000 +@@ -112,6 +112,7 @@ + #define gtk_status_icon_set_tooltip_LIB "libgtk-x11-2.0.so.0" + #define gtk_window_get_group_LIB "libgtk-x11-2.0.so.0" + #define gtk_window_get_opacity_LIB "libgtk-x11-2.0.so.0" ++#define gdk_window_restack_LIB "libgdk-x11-2.0.so.0" + #define gdk_window_set_keep_above_LIB "libgdk-x11-2.0.so.0" + #define gdk_window_set_accept_focus_LIB "libgdk-x11-2.0.so.0" + #define gtk_window_set_opacity_LIB "libgtk-x11-2.0.so.0" +Index: Eclipse SWT PI/gtk/library/os_stats.c +=================================================================== +RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c,v +retrieving revision 1.180 +diff -u -r1.180 os_stats.c +--- Eclipse SWT PI/gtk/library/os_stats.c 29 May 2009 21:30:13 -0000 1.180 ++++ Eclipse SWT PI/gtk/library/os_stats.c 30 Sep 2009 16:19:54 -0000 +@@ -8,7 +8,7 @@ + * the LGPL accompanying this distribution and there is any conflict + * between the two license versions, the terms of the LGPL accompanying + * this distribution shall govern. +- * ++ * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +@@ -18,8 +18,8 @@ + + #ifdef NATIVE_STATS + +-int OS_nativeFunctionCount = 1291; +-int OS_nativeFunctionCallCount[1291]; ++int OS_nativeFunctionCount = 1292; ++int OS_nativeFunctionCallCount[1292]; + char * OS_nativeFunctionNames[] = { + #ifndef JNI64 + "Call__IIII", +@@ -503,6 +503,7 @@ + "_1gdk_1window_1raise", + "_1gdk_1window_1remove_1filter", + "_1gdk_1window_1resize", ++ "_1gdk_1window_1restack", + "_1gdk_1window_1scroll", + "_1gdk_1window_1set_1accept_1focus", + "_1gdk_1window_1set_1back_1pixmap", +Index: Eclipse SWT PI/gtk/library/os.c +=================================================================== +RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c,v +retrieving revision 1.272 +diff -u -r1.272 os.c +--- Eclipse SWT PI/gtk/library/os.c 29 May 2009 21:30:14 -0000 1.272 ++++ Eclipse SWT PI/gtk/library/os.c 30 Sep 2009 16:19:54 -0000 +@@ -5944,6 +5944,24 @@ + } + #endif + ++#ifndef NO__1gdk_1window_1restack ++JNIEXPORT void JNICALL OS_NATIVE(_1gdk_1window_1restack) ++ (JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jboolean arg2) ++{ ++ OS_NATIVE_ENTER(env, that, _1gdk_1window_1restack_FUNC); ++/* ++ gdk_window_restack((GdkWindow *)arg0, (GdkWindow *)arg1, (gboolean)arg2); ++*/ ++ { ++ LOAD_FUNCTION(fp, gdk_window_restack) ++ if (fp) { ++ ((void (CALLING_CONVENTION*)(GdkWindow *, GdkWindow *, gboolean))fp)((GdkWindow *)arg0, (GdkWindow *)arg1, (gboolean)arg2); ++ } ++ } ++ OS_NATIVE_EXIT(env, that, _1gdk_1window_1restack_FUNC); ++} ++#endif ++ + #ifndef NO__1gdk_1window_1scroll + JNIEXPORT void JNICALL OS_NATIVE(_1gdk_1window_1scroll) + (JNIEnv *env, jclass that, jintLong arg0, jint arg1, jint arg2) +Index: Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java +=================================================================== +RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java,v +retrieving revision 1.525.2.1 +diff -u -r1.525.2.1 OS.java +--- Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java 20 Aug 2009 19:16:37 -0000 1.525.2.1 ++++ Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java 30 Sep 2009 16:19:55 -0000 +@@ -4887,6 +4887,21 @@ + lock.unlock(); + } + } ++/** ++ * @method flags=dynamic ++ * @param window cast=(GdkWindow *) ++ * @param sibling cast=(GdkWindow *) ++ * @param above cast=(gboolean) ++ */ ++public static final native void _gdk_window_restack(int /*long*/ window, int /*long*/ sibling, boolean above); ++public static final void gdk_window_restack(int /*long*/ window, int /*long*/ sibling, boolean above) { ++ lock.lock(); ++ try { ++ _gdk_window_restack(window, sibling, above); ++ } finally { ++ lock.unlock(); ++ } ++} + /** @param window cast=(GdkWindow *) */ + public static final native void _gdk_window_scroll(int /*long*/ window, int dx, int dy); + public static final void gdk_window_scroll(int /*long*/ window, int dx, int dy) { diff --git a/eclipse.spec b/eclipse.spec index 0eebf12..e57662b 100644 --- a/eclipse.spec +++ b/eclipse.spec @@ -30,7 +30,7 @@ Epoch: 1 Summary: An open, extensible IDE Name: eclipse Version: %{eclipse_majmin}.%{eclipse_micro} -Release: 2%{?dist} +Release: 3%{?dist} License: EPL Group: Text Editors/Integrated Development Environments (IDE) URL: http://www.eclipse.org/ @@ -73,6 +73,10 @@ Patch6: %{name}-target-platform-template.patch # Already applied in eclipse-build upstream rev. #23023 Patch7: %{name}-addusrsharedropins.patch +# https://bugs.eclipse.org/bugs/show_bug.cgi?id=287307 +# Already applied in eclipse-build upstream +Patch8: %{name}-gtk2.18zorder.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: ant BuildRequires: jpackage-utils >= 0:1.5, make, gcc @@ -526,6 +530,10 @@ popd %patch7 -p0 popd +pushd build/eclipse-R3_5_1-fetched-src/plugins/org.eclipse.swt +%patch8 -p0 +popd + %build ORIGCLASSPATH=$CLASSPATH export JAVA_HOME=%{java_home} @@ -1294,6 +1302,9 @@ fi #%{_libdir}/%{name}/configuration/org.eclipse.equinox.source %changelog +* Wed Oct 07 2009 Andrew Overholt 1:3.5.1-3 +- Add patch for bugs.eclipse.org/287307 + * Mon Oct 5 2009 Alexander Kurtakov 1:3.5.1-2 - Add /usr/share/eclipse/dropins to dropins locations.