Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul D'Pong2020-08-27 17:30:28 +0000
committerAlexander Kurtakov2020-09-08 18:31:56 +0000
commit92b1b1b26f82a083958f385083df42b365e223f1 (patch)
treee4006a96bd906e64995613753405b79b7aba8d39
parent3326ba2329d9185a94e99b92c30b6eb0837c313b (diff)
downloadeclipse.platform.swt-92b1b1b26f82a083958f385083df42b365e223f1.tar.gz
eclipse.platform.swt-92b1b1b26f82a083958f385083df42b365e223f1.tar.xz
eclipse.platform.swt-92b1b1b26f82a083958f385083df42b365e223f1.zip
Bug 566415 - [GTK4] Get Snippet 14 to run
- Set hexpand & vexpand to true for scrolled window in Composite widget (only for GTK4) - Added GTK4 specific handling for gtk_enter_notify_event & gtk_leave_notify_event (currently an issue of being able to retrieve the event from "enter" & "leave" signals) - Removed GTK version handling in Proc functions since they these callbacks are only called/registered in GTK4. - Removed gdk_event_free as it seems to be freed by the event controller Change-Id: I1c24c4ad0fc287ee97938a94e4b1d87de2d96a03 Signed-off-by: Paul D'Pong <sdamrong@redhat.com>
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c28
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c2
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h2
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java4
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java13
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java14
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java96
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java60
8 files changed, 136 insertions, 83 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
index d0bc4a1e41..dff6a85ec1 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
@@ -1018,7 +1018,7 @@ JNIEXPORT jboolean JNICALL GDK_NATIVE(gdk_1event_1get_1position)
GDK_NATIVE_ENTER(env, that, gdk_1event_1get_1position_FUNC);
if (arg1) if ((lparg1 = (*env)->GetDoubleArrayElements(env, arg1, NULL)) == NULL) goto fail;
if (arg2) if ((lparg2 = (*env)->GetDoubleArrayElements(env, arg2, NULL)) == NULL) goto fail;
- rc = (jboolean)gdk_event_get_position((GdkEvent *)arg0, (gdouble *)lparg1, (gdouble *)lparg2);
+ rc = (jboolean)gdk_event_get_position((GdkEvent *)arg0, (double *)lparg1, (double *)lparg2);
fail:
if (arg2 && lparg2) (*env)->ReleaseDoubleArrayElements(env, arg2, lparg2, 0);
if (arg1 && lparg1) (*env)->ReleaseDoubleArrayElements(env, arg1, lparg1, 0);
@@ -5519,7 +5519,7 @@ JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1event_1controller_1get_1current_1event)
{
jlong rc = 0;
GTK_NATIVE_ENTER(env, that, gtk_1event_1controller_1get_1current_1event_FUNC);
- rc = (jlong)gtk_event_controller_get_current_event(arg0);
+ rc = (jlong)gtk_event_controller_get_current_event((GtkEventController *)arg0);
GTK_NATIVE_EXIT(env, that, gtk_1event_1controller_1get_1current_1event_FUNC);
return rc;
}
@@ -5605,12 +5605,12 @@ JNIEXPORT void JNICALL GTK_NATIVE(gtk_1event_1controller_1set_1propagation_1phas
{
GTK_NATIVE_ENTER(env, that, gtk_1event_1controller_1set_1propagation_1phase_FUNC);
/*
- gtk_event_controller_set_propagation_phase(arg0, arg1);
+ gtk_event_controller_set_propagation_phase((GtkEventController *)arg0, (GtkPropagationPhase)arg1);
*/
{
GTK_LOAD_FUNCTION(fp, gtk_event_controller_set_propagation_phase)
if (fp) {
- ((void (CALLING_CONVENTION*)(jlong, jint))fp)(arg0, arg1);
+ ((void (CALLING_CONVENTION*)(GtkEventController *, GtkPropagationPhase))fp)((GtkEventController *)arg0, (GtkPropagationPhase)arg1);
}
}
GTK_NATIVE_EXIT(env, that, gtk_1event_1controller_1set_1propagation_1phase_FUNC);
@@ -8880,6 +8880,16 @@ JNIEXPORT void JNICALL GTK_NATIVE(gtk_1scrolled_1window_1set_1child)
}
#endif
+#ifndef NO_gtk_1scrolled_1window_1set_1hadjustment
+JNIEXPORT void JNICALL GTK_NATIVE(gtk_1scrolled_1window_1set_1hadjustment)
+ (JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+ GTK_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1set_1hadjustment_FUNC);
+ gtk_scrolled_window_set_hadjustment((GtkScrolledWindow *)arg0, (GtkAdjustment *)arg1);
+ GTK_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1set_1hadjustment_FUNC);
+}
+#endif
+
#ifndef NO_gtk_1scrolled_1window_1set_1has_1frame
JNIEXPORT void JNICALL GTK_NATIVE(gtk_1scrolled_1window_1set_1has_1frame)
(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -8910,6 +8920,16 @@ JNIEXPORT void JNICALL GTK_NATIVE(gtk_1scrolled_1window_1set_1shadow_1type)
}
#endif
+#ifndef NO_gtk_1scrolled_1window_1set_1vadjustment
+JNIEXPORT void JNICALL GTK_NATIVE(gtk_1scrolled_1window_1set_1vadjustment)
+ (JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+ GTK_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1set_1vadjustment_FUNC);
+ gtk_scrolled_window_set_vadjustment((GtkScrolledWindow *)arg0, (GtkAdjustment *)arg1);
+ GTK_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1set_1vadjustment_FUNC);
+}
+#endif
+
#ifndef NO_gtk_1search_1entry_1new
JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1search_1entry_1new)
(JNIEnv *env, jclass that)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
index a2aa310a6a..44951971a1 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
@@ -708,9 +708,11 @@ char * GTK_nativeFunctionNames[] = {
"gtk_1scrolled_1window_1new__",
"gtk_1scrolled_1window_1new__JJ",
"gtk_1scrolled_1window_1set_1child",
+ "gtk_1scrolled_1window_1set_1hadjustment",
"gtk_1scrolled_1window_1set_1has_1frame",
"gtk_1scrolled_1window_1set_1policy",
"gtk_1scrolled_1window_1set_1shadow_1type",
+ "gtk_1scrolled_1window_1set_1vadjustment",
"gtk_1search_1entry_1new",
"gtk_1selection_1data_1free",
"gtk_1selection_1data_1get_1data",
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
index eb21ffd584..85728920c6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
@@ -706,9 +706,11 @@ typedef enum {
gtk_1scrolled_1window_1new___FUNC,
gtk_1scrolled_1window_1new__JJ_FUNC,
gtk_1scrolled_1window_1set_1child_FUNC,
+ gtk_1scrolled_1window_1set_1hadjustment_FUNC,
gtk_1scrolled_1window_1set_1has_1frame_FUNC,
gtk_1scrolled_1window_1set_1policy_FUNC,
gtk_1scrolled_1window_1set_1shadow_1type_FUNC,
+ gtk_1scrolled_1window_1set_1vadjustment_FUNC,
gtk_1search_1entry_1new_FUNC,
gtk_1selection_1data_1free_FUNC,
gtk_1selection_1data_1get_1data_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java
index eaf62534dd..ffab3255c0 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java
@@ -558,8 +558,8 @@ public class GDK extends OS {
public static final native void gdk_event_unref(long event);
/**
* @param event cast=(GdkEvent *)
- * @param px cast=(gdouble *)
- * @param py cast=(gdouble *)
+ * @param px cast=(double *)
+ * @param py cast=(double *)
*/
public static final native boolean gdk_event_get_position(long event, double[] px, double[] py);
/** @param event cast=(GdkEvent *) */
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java
index 5cc30fe1a4..871c8524fc 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java
@@ -1131,6 +1131,8 @@ public class GTK extends OS {
public static final native void gtk_widget_add_controller(long widget, long controller);
/**
* @method flags=dynamic
+ * @param controller cast=(GtkEventController *)
+ * @param phase cast=(GtkPropagationPhase)
*/
public static final native void gtk_event_controller_set_propagation_phase(long controller, int phase);
/**
@@ -1321,6 +1323,7 @@ public class GTK extends OS {
/* [GTK3 only, if-def'd in os.h] */
public static final native long gtk_get_current_event();
/* [GTK4 only, if-def'd in os.h] */
+ /** @param controller cast=(GtkEventController *) */
public static final native long gtk_event_controller_get_current_event(long controller);
/** @param state cast=(GdkModifierType*) */
public static final native boolean gtk_get_current_event_state(int[] state);
@@ -2178,6 +2181,16 @@ public class GTK extends OS {
* @param scrolled_window cast=(GtkScrolledWindow *)
*/
public static final native boolean gtk_scrolled_window_get_overlay_scrolling(long scrolled_window);
+ /**
+ * @param scrolled_window cast=(GtkScrolledWindow *)
+ * @param adjustment cast=(GtkAdjustment *)
+ * */
+ public static final native void gtk_scrolled_window_set_vadjustment(long scrolled_window, long adjustment);
+ /**
+ * @param scrolled_window cast=(GtkScrolledWindow *)
+ * @param adjustment cast=(GtkAdjustment *)
+ * */
+ public static final native void gtk_scrolled_window_set_hadjustment(long scrolled_window, long adjustment);
/* GtkScrolledWindow [GTK3 only, if-def'd in os.h] */
/**
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java
index 01095a695d..495bf780de 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java
@@ -307,16 +307,20 @@ void createHandle (int index, boolean fixed, boolean scrolled) {
gtk_widget_set_has_surface_or_window (fixedHandle, true);
}
+ long vadj = GTK.gtk_adjustment_new (0, 0, 100, 1, 10, 10);
+ if (vadj == 0) error (SWT.ERROR_NO_HANDLES);
+ long hadj = GTK.gtk_adjustment_new (0, 0, 100, 1, 10, 10);
+ if (hadj == 0) error (SWT.ERROR_NO_HANDLES);
+
if (GTK.GTK4) {
scrolledHandle = GTK.gtk_scrolled_window_new();
+ GTK.gtk_scrolled_window_set_hadjustment(scrolledHandle, hadj);
+ GTK.gtk_scrolled_window_set_vadjustment(scrolledHandle, vadj);
+ GTK.gtk_widget_set_hexpand(scrolledHandle, true);
+ GTK.gtk_widget_set_vexpand(scrolledHandle, true);
} else {
- long vadj = GTK.gtk_adjustment_new (0, 0, 100, 1, 10, 10);
- if (vadj == 0) error (SWT.ERROR_NO_HANDLES);
- long hadj = GTK.gtk_adjustment_new (0, 0, 100, 1, 10, 10);
- if (hadj == 0) error (SWT.ERROR_NO_HANDLES);
scrolledHandle = GTK.gtk_scrolled_window_new (hadj, vadj);
}
-
if (scrolledHandle == 0) error (SWT.ERROR_NO_HANDLES);
}
handle = OS.g_object_new (display.gtk_fixed_get_type (), 0);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
index c7769aaa45..40d4390450 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
@@ -3686,6 +3686,21 @@ long gtk_commit (long imcontext, long text) {
@Override
long gtk_enter_notify_event (long widget, long event) {
+ if (GTK.GTK4) {
+ if (display.currentControl == this) return 0;
+
+ if (display.currentControl != null && !display.currentControl.isDisposed ()) {
+ display.removeMouseHoverTimeout (display.currentControl.handle);
+ display.currentControl.sendMouseEvent (SWT.MouseExit, 0, 0, 0, 0, false, 0);
+ }
+ if (!isDisposed ()) {
+ display.currentControl = this;
+ return sendMouseEvent (SWT.MouseEnter, 0, 0, 0, 0, false, 0) ? 0 : 1;
+ }
+
+ return 0;
+ }
+
/*
* Feature in GTK. Children of a shell will inherit and display the shell's
* tooltip if they do not have a tooltip of their own. The fix is to use the
@@ -4021,6 +4036,19 @@ long gtk_key_release_event (long widget, long event) {
@Override
long gtk_leave_notify_event (long widget, long event) {
+ if (GTK.GTK4) {
+ if (display.currentControl != this) return 0;
+
+ display.removeMouseHoverTimeout (handle);
+ int result = 0;
+ if (sendLeaveNotify () || display.getCursorControl () == null) {
+ result = sendMouseEvent (SWT.MouseExit, 0, 0, 0, 0, false, 0) ? 0 : 1;
+ display.currentControl = null;
+ }
+ return result;
+ }
+
+
if (display.currentControl != this) return 0;
int [] state = new int [1];
double [] eventX = new double [1];
@@ -4087,25 +4115,23 @@ long gtk_mnemonic_activate (long widget, long arg1) {
@Override
long gtk_motion_notify_event (long widget, long event) {
+ int result;
if (mouseDown) {
dragBegun = true;
}
- int result;
- double [] eventX = new double [1];
- double [] eventY = new double [1];
+
+ double[] eventX = new double[1];
+ double[] eventY = new double[1];
if (GTK.GTK4) {
GDK.gdk_event_get_position(event, eventX, eventY);
} else {
GDK.gdk_event_get_coords(event, eventX, eventY);
}
- double [] eventRX = new double[1];
- double [] eventRY = new double[1];
- GDK.gdk_event_get_root_coords(event, eventRX, eventRY);
-
- lastInput.x = (int) eventX[0];
- lastInput.y = (int) eventY[0];
+ lastInput.x = (int)eventX[0];
+ lastInput.y = (int)eventY[0];
if (containedInRegion(lastInput.x, lastInput.y)) return 0;
+
/*
* Feature in GTK: DND detection for X.11 & Wayland support is done through motion notify event
* instead of mouse click event. See Bug 503431.
@@ -4143,16 +4169,33 @@ long gtk_motion_notify_event (long widget, long event) {
}
}
}
- if (this == display.currentControl && (hooks (SWT.MouseHover) || filters (SWT.MouseHover))) {
- display.addMouseHoverTimeout (handle);
+
+ if (this == display.currentControl && (hooks(SWT.MouseHover) || filters(SWT.MouseHover))) {
+ display.addMouseHoverTimeout(handle);
}
- double x = eventRX[0], y = eventRY[0];
+
+ int time = GDK.gdk_event_get_time(event);
+ double x, y;
int [] state = new int [1];
- GdkEventMotion gdkEvent = new GdkEventMotion();
- if (!GTK.GTK4) {
+ boolean isHint = false;
+
+ if (GTK.GTK4) {
+ state[0] = GDK.gdk_event_get_modifier_state(event);
+ x = eventX[0];
+ y = eventY[0];
+ } else {
+ double [] eventRX = new double[1];
+ double [] eventRY = new double[1];
+ GDK.gdk_event_get_root_coords(event, eventRX, eventRY);
+ x = eventRX[0];
+ y = eventRY[0];
+
+ GdkEventMotion gdkEvent = new GdkEventMotion();
OS.memmove(gdkEvent, event, GdkEventMotion.sizeof);
state[0] = gdkEvent.state;
- if (gdkEvent.is_hint != 0) {
+ isHint = gdkEvent.is_hint != 0;
+
+ if (isHint) {
int [] pointer_x = new int [1], pointer_y = new int [1], mask = new int [1];
long window = eventWindow ();
display.gdk_window_get_device_position (window, pointer_x, pointer_y, mask);
@@ -4160,22 +4203,21 @@ long gtk_motion_notify_event (long widget, long event) {
y = pointer_y [0];
state[0] = mask [0];
}
- } else {
- state[0] = GDK.gdk_event_get_modifier_state(event);
}
- int time = GDK.gdk_event_get_time(event);
+
if (this != display.currentControl) {
if (display.currentControl != null && !display.currentControl.isDisposed ()) {
- display.removeMouseHoverTimeout (display.currentControl.handle);
- Point pt = display.mapInPixels (this, display.currentControl, (int) x, (int) y);
- display.currentControl.sendMouseEvent (SWT.MouseExit, 0, time, pt.x, pt.y, GTK.GTK4 ? false : gdkEvent.is_hint != 0, state[0]);
+ display.removeMouseHoverTimeout(display.currentControl.handle);
+ Point pt = display.mapInPixels(this, display.currentControl, (int)x, (int)y);
+ display.currentControl.sendMouseEvent(SWT.MouseExit, 0, time, pt.x, pt.y, isHint, state[0]);
}
if (!isDisposed ()) {
display.currentControl = this;
- sendMouseEvent (SWT.MouseEnter, 0, time, x, y, GTK.GTK4 ? false : gdkEvent.is_hint != 0, state[0]);
+ sendMouseEvent(SWT.MouseEnter, 0, time, x, y, isHint, state[0]);
}
}
- result = sendMouseEvent (SWT.MouseMove, 0, time, x, y, GTK.GTK4 ? false : gdkEvent.is_hint != 0, state[0]) ? 0 : 1;
+
+ result = sendMouseEvent(SWT.MouseMove, 0, time, x, y, isHint, state[0]) ? 0 : 1;
return result;
}
@@ -4931,10 +4973,10 @@ boolean sendMouseEvent (int type, int button, int count, int detail, boolean sen
int [] origin_x = new int [1], origin_y = new int [1];
Rectangle eventRect;
if (GTK.GTK4) {
- long surface = eventSurface ();
- GDK.gdk_surface_get_origin (surface, origin_x, origin_y);
- eventRect = new Rectangle ((int)x - origin_x [0], (int)y - origin_y [0], 0, 0);
- event.setBounds (DPIUtil.autoScaleDown (eventRect));
+// long surface = eventSurface ();
+// GDK.gdk_surface_get_origin (surface, origin_x, origin_y);
+// eventRect = new Rectangle ((int)x - origin_x [0], (int)y - origin_y [0], 0, 0);
+// event.setBounds (DPIUtil.autoScaleDown (eventRect));
} else {
long window = eventWindow ();
GDK.gdk_window_get_origin (window, origin_x, origin_y);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
index bddc494c20..1d044176e4 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
@@ -2143,15 +2143,9 @@ boolean translateTraversal (int event) {
return false;
}
-long enterMotionScrollProc (long controller, long handle, double x, double y, long user_data) {
- long event;
+long enterMotionScrollProc(long controller, long handle, double x, double y, long user_data) {
long result = 0;
-
- if (GTK.GTK4) {
- event = GTK.gtk_event_controller_get_current_event(controller);
- } else {
- event = GTK.gtk_get_current_event();
- }
+ long event = GTK.gtk_event_controller_get_current_event(controller);
switch ((int)user_data) {
case ENTER:
@@ -2167,19 +2161,13 @@ long enterMotionScrollProc (long controller, long handle, double x, double y, lo
result = gtk_scroll_event(handle, event);
break;
}
- gdk_event_free(event);
+
return result;
}
-long focusProc (long controller, long handle, long user_data) {
- long event;
+long focusProc(long controller, long handle, long user_data) {
long result = 0;
-
- if (GTK.GTK4) {
- event = GTK.gtk_event_controller_get_current_event(controller);
- } else {
- event = GTK.gtk_get_current_event();
- }
+ long event = GTK.gtk_event_controller_get_current_event(controller);
switch ((int)user_data) {
case FOCUS_IN:
@@ -2189,19 +2177,13 @@ long focusProc (long controller, long handle, long user_data) {
result = gtk_focus_out_event(handle, event);
break;
}
- gdk_event_free(event);
+
return result;
}
-long keyPressReleaseProc (long controller, long handle, int keyval, int keycode, int state, long user_data) {
- long event;
+long keyPressReleaseProc(long controller, long handle, int keyval, int keycode, int state, long user_data) {
long result = 0;
-
- if (GTK.GTK4) {
- event = GTK.gtk_event_controller_get_current_event(controller);
- } else {
- event = GTK.gtk_get_current_event();
- }
+ long event = GTK.gtk_event_controller_get_current_event(controller);
switch ((int)user_data) {
case KEY_PRESSED:
@@ -2211,19 +2193,13 @@ long keyPressReleaseProc (long controller, long handle, int keyval, int keycode,
result = gtk_key_release_event(handle, event);
break;
}
- gdk_event_free(event);
+
return result;
}
-long gesturePressReleaseProc (long gesture, int n_press, double x, double y, long user_data) {
- long event;
+long gesturePressReleaseProc(long gesture, int n_press, double x, double y, long user_data) {
long result = 0;
-
- if (GTK.GTK4) {
- event = GTK.gtk_event_controller_get_current_event(gesture);
- } else {
- event = GTK.gtk_get_current_event();
- }
+ long event = GTK.gtk_event_controller_get_current_event(gesture);
switch ((int)user_data) {
case GESTURE_PRESSED:
@@ -2233,26 +2209,20 @@ long gesturePressReleaseProc (long gesture, int n_press, double x, double y, lon
result = gtk_gesture_release_event(gesture, n_press, x, y, event);
break;
}
- gdk_event_free(event);
+
return result;
}
-long leaveProc (long controller, long handle, long user_data) {
- long event;
+long leaveProc(long controller, long handle, long user_data) {
long result = 0;
-
- if (GTK.GTK4) {
- event = GTK.gtk_event_controller_get_current_event(controller);
- } else {
- event = GTK.gtk_get_current_event();
- }
+ long event = GTK.gtk_event_controller_get_current_event(controller);
switch ((int)user_data) {
case LEAVE:
result = gtk_leave_notify_event(handle, event);
break;
}
- gdk_event_free(event);
+
return result;
}

Back to the top