219 lines
9.3 KiB
Diff
219 lines
9.3 KiB
Diff
### 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) {
|