diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java index a8f221c9fe..554709ecaf 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java @@ -1652,9 +1652,28 @@ long /*int*/ gtk_motion_notify_event (long /*int*/ widget, long /*int*/ event) { GDK.gdk_event_get_coords(event, eventX, eventY); int mode = getResizeMode (eventX[0], eventY[0]); if (mode != display.resizeMode) { - long /*int*/ window = gtk_widget_get_window (shellHandle); - long /*int*/ cursor = GDK.gdk_cursor_new_for_display (GDK.gdk_display_get_default(), mode); - GDK.gdk_window_set_cursor (window, cursor); + long /*int*/ cursor; + byte [] name; + switch (mode) { + case GDK.GDK_BOTTOM_RIGHT_CORNER: name = Converter.wcsToMbcs("se-resize", true); break; + case GDK.GDK_BOTTOM_LEFT_CORNER: name = Converter.wcsToMbcs("sw-resize", true); break; + case GDK.GDK_TOP_LEFT_CORNER: name = Converter.wcsToMbcs("nw-resize", true); break; + case GDK.GDK_TOP_RIGHT_CORNER: name = Converter.wcsToMbcs("ne-resize", true); break; + case GDK.GDK_BOTTOM_SIDE: name = Converter.wcsToMbcs("s-resize", true); break; + case GDK.GDK_TOP_SIDE: name = Converter.wcsToMbcs("n-resize", true); break; + case GDK.GDK_LEFT_SIDE: name = Converter.wcsToMbcs("w-resize", true); break; + case GDK.GDK_RIGHT_SIDE: name = Converter.wcsToMbcs("e-resize", true); break; + default: name = Converter.wcsToMbcs("none", true); break; + } + if (GTK.GTK4) { + long /*int*/ surface = gtk_widget_get_surface(shellHandle); + cursor = GDK.gdk_cursor_new_from_name(name, 0); + GDK.gdk_surface_set_cursor(surface, cursor); + } else { + long /*int*/ window = gtk_widget_get_window (shellHandle); + cursor = GDK.gdk_cursor_new_from_name (GDK.gdk_display_get_default(), name); + GDK.gdk_window_set_cursor (window, cursor); + } OS.g_object_unref (cursor); display.resizeMode = mode; } |