diff options
author | Silenio Quarti <silenio> | 2004-06-18 16:16:02 +0000 |
---|---|---|
committer | Silenio Quarti <silenio> | 2004-06-18 16:16:02 +0000 |
commit | 14133ff954794ae4fbfc12100bdaaac6c48bdf36 (patch) | |
tree | dffe11e3c53832fdf44b4b6bc0a640bf9e89b088 /bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java | |
parent | d3d3d45b54fed76abd65ad76476530e48dc0d4e2 (diff) | |
download | eclipse.platform.swt-14133ff954794ae4fbfc12100bdaaac6c48bdf36.tar.gz eclipse.platform.swt-14133ff954794ae4fbfc12100bdaaac6c48bdf36.tar.xz eclipse.platform.swt-14133ff954794ae4fbfc12100bdaaac6c48bdf36.zip |
62405
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java index c870b45c77..8777ca73a4 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java @@ -311,9 +311,9 @@ int /*long*/ gtk_key_press_event (int /*long*/ widget, int /*long*/ eventPtr) { int /*long*/ gtk_motion_notify_event (int /*long*/ widget, int /*long*/ eventPtr) { int /*long*/ result = super.gtk_motion_notify_event (widget, eventPtr); - int [] state = new int [1]; - OS.gdk_event_get_state (eventPtr, state); - if (!dragging || (state [0] & OS.GDK_BUTTON1_MASK) == 0) return 0; + GdkEventMotion gdkEvent = new GdkEventMotion (); + OS.memmove (gdkEvent, eventPtr, GdkEventButton.sizeof); + if (!dragging || (gdkEvent.state & OS.GDK_BUTTON1_MASK) == 0) return 0; int x = OS.GTK_WIDGET_X (handle); int y = OS.GTK_WIDGET_Y (handle); int width = OS.GTK_WIDGET_WIDTH (handle); @@ -321,12 +321,18 @@ int /*long*/ gtk_motion_notify_event (int /*long*/ widget, int /*long*/ eventPtr int parentBorder = 0; int parentWidth = OS.GTK_WIDGET_WIDTH (parent.handle); int parentHeight = OS.GTK_WIDGET_HEIGHT (parent.handle); - double [] root_x = new double [1], root_y = new double [1]; - OS.gdk_event_get_root_coords (eventPtr, root_x, root_y); - int /*long*/ window = OS.GTK_WIDGET_WINDOW (widget); - int [] origin_x = new int [1], origin_y = new int [1]; - OS.gdk_window_get_origin (window, origin_x, origin_y); - int eventX = (int) (root_x [0] - origin_x [0]), eventY = (int) (root_y [0] - origin_y [0]); + int eventX, eventY; + if (gdkEvent.is_hint != 0) { + int [] pointer_x = new int [1], pointer_y = new int [1]; + OS.gdk_window_get_pointer (gdkEvent.window, pointer_x, pointer_y, null); + eventX = pointer_x [0]; + eventY = pointer_y [0]; + } else { + int [] origin_x = new int [1], origin_y = new int [1]; + OS.gdk_window_get_origin (gdkEvent.window, origin_x, origin_y); + eventX = (int) (gdkEvent.x_root - origin_x [0]); + eventY = (int) (gdkEvent.y_root - origin_y [0]); + } int newX = lastX, newY = lastY; if ((style & SWT.VERTICAL) != 0) { newX = Math.min (Math.max (0, eventX + x - startX - parentBorder), parentWidth - width); @@ -338,7 +344,7 @@ int /*long*/ gtk_motion_notify_event (int /*long*/ widget, int /*long*/ eventPtr /* The event must be sent because its doit flag is used. */ Event event = new Event (); event.detail = SWT.DRAG; - event.time = OS.gdk_event_get_time (eventPtr); + event.time = gdkEvent.time; event.x = newX; event.y = newY; event.width = width; |