summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnatoly Spektor <aspektor@redhat.com>2013-05-20 18:06:15 -0400
committerAnatoly Spektor <aspektor@redhat.com>2013-05-20 18:06:15 -0400
commit7a6302745ea3f07c4d4670a0297a2eaa7a2348ae (patch)
treeca56aae3c3cb25b45df60fb016c0119e80ac2d80
parent0868ccd3e5bd81cb6504eaaabcb61f640db08a4a (diff)
downloadeclipse.platform.swt-gsignal_.tar.gz
eclipse.platform.swt-gsignal_.tar.xz
eclipse.platform.swt-gsignal_.zip
Solves gsinal invalidation errors when run ControlExample with GLIB 2.36 gsignal_
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java4
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java16
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java54
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java17
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java12
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java2
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java2
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Menu.java6
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java6
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java8
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java14
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java4
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableColumn.java6
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java20
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java8
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TrayItem.java8
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java8
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java20
18 files changed, 110 insertions, 105 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
index 9f92a459f6..28d47a5b1f 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
@@ -529,10 +529,10 @@ long /*int*/ gtk_key_press_event (long /*int*/ widget, long /*int*/ event) {
void hookEvents () {
super.hookEvents();
if (NEW_CLOSURES) {
- OS.g_signal_connect_closure (handle, OS.clicked, getClosure(CLICKED, display.windowProc2, Widget.CLICKED), false);
+ OS.g_signal_connect_closure (handle, OS.clicked, getClosure(CLICKED, display.windowProc2), false);
if (labelHandle != 0) {
- OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3, Widget.MNEMONIC_ACTIVATE), false);
+ OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3), false);
}
} else {
OS.g_signal_connect_closure (handle, OS.clicked, display.closures [CLICKED], false);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java
index 7e57a841ad..0cabb683d7 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java
@@ -666,9 +666,9 @@ void hookEvents(long /*int*/ [] handles) {
/* Connect the mouse signals */
OS.gtk_widget_add_events (eventHandle, eventMask);
if (NEW_CLOSURES){
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3, Widget.BUTTON_PRESS_EVENT), false);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_RELEASE_EVENT], 0, getClosure(BUTTON_RELEASE_EVENT, display.windowProc3, Widget.BUTTON_RELEASE_EVENT), false);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [MOTION_NOTIFY_EVENT], 0, getClosure(MOTION_NOTIFY_EVENT, display.windowProc3, Widget.MOTION_NOTIFY_EVENT), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_RELEASE_EVENT], 0, getClosure(BUTTON_RELEASE_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [MOTION_NOTIFY_EVENT], 0, getClosure(MOTION_NOTIFY_EVENT, display.windowProc3), false);
/*
* Feature in GTK. Events such as mouse move are propagated up
* the widget hierarchy and are seen by the parent. This is the
@@ -676,16 +676,16 @@ void hookEvents(long /*int*/ [] handles) {
* hook a signal after and stop the propagation using a negative
* event number to distinguish this case.
*/
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT_INVERSE, display.windowProc3, Widget.BUTTON_PRESS_EVENT_INVERSE), true);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_RELEASE_EVENT], 0, getClosure(BUTTON_RELEASE_EVENT_INVERSE, display.windowProc3, Widget.BUTTON_RELEASE_EVENT_INVERSE), true);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [MOTION_NOTIFY_EVENT], 0, getClosure(MOTION_NOTIFY_EVENT_INVERSE, display.windowProc3, Widget.MOTION_NOTIFY_EVENT_INVERSE), true);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT_INVERSE, display.windowProc3), true);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_RELEASE_EVENT], 0, getClosure(BUTTON_RELEASE_EVENT_INVERSE, display.windowProc3), true);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [MOTION_NOTIFY_EVENT], 0, getClosure(MOTION_NOTIFY_EVENT_INVERSE, display.windowProc3), true);
/* Connect the event_after signal for both key and mouse */
if (eventHandle != focusHandle ()) {
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3, Widget.EVENT_AFTER), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3), false);
}
if (OS.G_OBJECT_TYPE (eventHandle) == OS.GTK_TYPE_MENU ()) {
- OS.g_signal_connect_closure(eventHandle, OS.selection_done, getClosure(SELECTION_DONE, display.windowProc2, Widget.SELECTION_DONE), true);
+ OS.g_signal_connect_closure(eventHandle, OS.selection_done, getClosure(SELECTION_DONE, display.windowProc2), true);
}
} else {
OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, display.closures [BUTTON_PRESS_EVENT], false);
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 d0605f394b..b51f34e929 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
@@ -284,29 +284,29 @@ void hookEvents () {
long /*int*/ focusHandle = focusHandle ();
int focusMask = OS.GDK_KEY_PRESS_MASK | OS.GDK_KEY_RELEASE_MASK | OS.GDK_FOCUS_CHANGE_MASK;
OS.gtk_widget_add_events (focusHandle, focusMask);
- OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [POPUP_MENU], 0, getClosure(POPUP_MENU, display.windowProc2, Widget.POPUP_MENU), false);
- OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [SHOW_HELP], 0, getClosure(SHOW_HELP, display.windowProc3, Widget.SHOW_HELP), false);
- OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [KEY_PRESS_EVENT], 0, getClosure(KEY_PRESS_EVENT, display.windowProc3, Widget.KEY_PRESS_EVENT), false);
- OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [KEY_RELEASE_EVENT], 0, getClosure(KEY_RELEASE_EVENT, display.windowProc3, Widget.KEY_RELEASE_EVENT), false);
- OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [FOCUS], 0, getClosure(FOCUS, display.windowProc3, Widget.FOCUS), false);
- OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [FOCUS_IN_EVENT], 0, getClosure(FOCUS_IN_EVENT, display.windowProc3, Widget.FOCUS_IN_EVENT), false);
- OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [FOCUS_OUT_EVENT], 0, getClosure(FOCUS_OUT_EVENT, display.windowProc3, Widget.FOCUS_OUT_EVENT), false);
+ OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [POPUP_MENU], 0, getClosure(POPUP_MENU, display.windowProc2), false);
+ OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [SHOW_HELP], 0, getClosure(SHOW_HELP, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [KEY_PRESS_EVENT], 0, getClosure(KEY_PRESS_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [KEY_RELEASE_EVENT], 0, getClosure(KEY_RELEASE_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [FOCUS], 0, getClosure(FOCUS, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [FOCUS_IN_EVENT], 0, getClosure(FOCUS_IN_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [FOCUS_OUT_EVENT], 0, getClosure(FOCUS_OUT_EVENT, display.windowProc3), false);
/* Connect the mouse signals */
long /*int*/ eventHandle = eventHandle ();
int eventMask = OS.GDK_POINTER_MOTION_MASK | OS.GDK_BUTTON_PRESS_MASK | OS.GDK_BUTTON_RELEASE_MASK | OS.GDK_SCROLL_MASK | OS.GDK_SMOOTH_SCROLL_MASK;
OS.gtk_widget_add_events (eventHandle, eventMask);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3, Widget.BUTTON_PRESS_EVENT), false);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_RELEASE_EVENT], 0, getClosure(BUTTON_RELEASE_EVENT, display.windowProc3, Widget.BUTTON_RELEASE_EVENT), false);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [MOTION_NOTIFY_EVENT], 0, getClosure(MOTION_NOTIFY_EVENT, display.windowProc3, Widget.MOTION_NOTIFY_EVENT), false);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [SCROLL_EVENT], 0, getClosure(SCROLL_EVENT, display.windowProc3, Widget.SCROLL_EVENT), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_RELEASE_EVENT], 0, getClosure(BUTTON_RELEASE_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [MOTION_NOTIFY_EVENT], 0, getClosure(MOTION_NOTIFY_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [SCROLL_EVENT], 0, getClosure(SCROLL_EVENT, display.windowProc3), false);
/* Connect enter/exit signals */
long /*int*/ enterExitHandle = enterExitHandle ();
int enterExitMask = OS.GDK_ENTER_NOTIFY_MASK | OS.GDK_LEAVE_NOTIFY_MASK;
OS.gtk_widget_add_events (enterExitHandle, enterExitMask);
- OS.g_signal_connect_closure_by_id (enterExitHandle, display.signalIds [ENTER_NOTIFY_EVENT], 0, getClosure(ENTER_NOTIFY_EVENT, display.windowProc3, Widget.ENTER_NOTIFY_EVENT), false);
- OS.g_signal_connect_closure_by_id (enterExitHandle, display.signalIds [LEAVE_NOTIFY_EVENT], 0, getClosure(LEAVE_NOTIFY_EVENT, display.windowProc3, Widget.LEAVE_NOTIFY_EVENT), false);
+ OS.g_signal_connect_closure_by_id (enterExitHandle, display.signalIds [ENTER_NOTIFY_EVENT], 0, getClosure(ENTER_NOTIFY_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (enterExitHandle, display.signalIds [LEAVE_NOTIFY_EVENT], 0, getClosure(LEAVE_NOTIFY_EVENT, display.windowProc3), false);
/*
* Feature in GTK. Events such as mouse move are propagate up
@@ -319,14 +319,14 @@ void hookEvents () {
* lightweight widgets.
*/
long /*int*/ blockHandle = fixedHandle != 0 ? fixedHandle : eventHandle;
- OS.g_signal_connect_closure_by_id (blockHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT_INVERSE, display.windowProc3, Widget.BUTTON_PRESS_EVENT_INVERSE), true);
- OS.g_signal_connect_closure_by_id (blockHandle, display.signalIds [BUTTON_RELEASE_EVENT], 0, getClosure(BUTTON_RELEASE_EVENT_INVERSE, display.windowProc3, Widget.BUTTON_RELEASE_EVENT_INVERSE), true);
- OS.g_signal_connect_closure_by_id (blockHandle, display.signalIds [MOTION_NOTIFY_EVENT], 0, getClosure(MOTION_NOTIFY_EVENT_INVERSE, display.windowProc3, Widget.MOTION_NOTIFY_EVENT_INVERSE), true);
+ OS.g_signal_connect_closure_by_id (blockHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT_INVERSE, display.windowProc3), true);
+ OS.g_signal_connect_closure_by_id (blockHandle, display.signalIds [BUTTON_RELEASE_EVENT], 0, getClosure(BUTTON_RELEASE_EVENT_INVERSE, display.windowProc3), true);
+ OS.g_signal_connect_closure_by_id (blockHandle, display.signalIds [MOTION_NOTIFY_EVENT], 0, getClosure(MOTION_NOTIFY_EVENT_INVERSE, display.windowProc3), true);
/* Connect the event_after signal for both key and mouse */
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3, Widget.EVENT_AFTER), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3), false);
if (focusHandle != eventHandle) {
- OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3, Widget.EVENT_AFTER), false);
+ OS.g_signal_connect_closure_by_id (focusHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3), false);
}
/* Connect the paint signal */
@@ -334,30 +334,30 @@ void hookEvents () {
int paintMask = OS.GDK_EXPOSURE_MASK | OS.GDK_VISIBILITY_NOTIFY_MASK;
OS.gtk_widget_add_events (paintHandle, paintMask);
- OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [EXPOSE_EVENT], 0, getClosure(EXPOSE_EVENT_INVERSE, display.windowProc3, Widget.EXPOSE_EVENT_INVERSE), false);
+ OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [EXPOSE_EVENT], 0, getClosure(EXPOSE_EVENT_INVERSE, display.windowProc3), false);
/*
* As of GTK 2.17.11, obscured controls no longer send expose
* events. It is no longer necessary to track visiblity notify
* events.
*/
if (OS.GTK_VERSION < OS.VERSION (2, 17, 11)) {
- OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [VISIBILITY_NOTIFY_EVENT], 0, getClosure(VISIBILITY_NOTIFY_EVENT, display.windowProc3, Widget.VISIBILITY_NOTIFY_EVENT), false);
+ OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [VISIBILITY_NOTIFY_EVENT], 0, getClosure(VISIBILITY_NOTIFY_EVENT, display.windowProc3), false);
}
- OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [EXPOSE_EVENT], 0, getClosure(EXPOSE_EVENT, display.windowProc3, Widget.EXPOSE_EVENT), true);
+ OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [EXPOSE_EVENT], 0, getClosure(EXPOSE_EVENT, display.windowProc3), true);
/* Connect the Input Method signals */
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [REALIZE], 0, getClosure(REALIZE, display.windowProc2, Widget.REALIZE), true);
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [UNREALIZE], 0, getClosure(UNREALIZE, display.windowProc2, Widget.UNREALIZE), false);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [REALIZE], 0, getClosure(REALIZE, display.windowProc2), true);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [UNREALIZE], 0, getClosure(UNREALIZE, display.windowProc2), false);
long /*int*/ imHandle = imHandle ();
if (imHandle != 0) {
- OS.g_signal_connect_closure (imHandle, OS.commit, getClosure(COMMIT, display.windowProc3, Widget.COMMIT), false);
- OS.g_signal_connect_closure (imHandle, OS.preedit_changed, getClosure(PREEDIT_CHANGED, display.windowProc2, Widget.PREEDIT_CHANGED), false);
+ OS.g_signal_connect_closure (imHandle, OS.commit, getClosure(COMMIT, display.windowProc3), false);
+ OS.g_signal_connect_closure (imHandle, OS.preedit_changed, getClosure(PREEDIT_CHANGED, display.windowProc2), false);
}
- OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [STYLE_SET], 0, getClosure(STYLE_SET, display.windowProc3, Widget.STYLE_SET), false);
+ OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [STYLE_SET], 0, getClosure(STYLE_SET, display.windowProc3), false);
long /*int*/ topHandle = topHandle ();
- OS.g_signal_connect_closure_by_id (topHandle, display.signalIds [MAP], 0, getClosure(MAP, display.windowProc2, Widget.MAP), true);
+ OS.g_signal_connect_closure_by_id (topHandle, display.signalIds [MAP], 0, getClosure(MAP, display.windowProc2), true);
} else {
/* Connect the keyboard signals */
long /*int*/ focusHandle = focusHandle ();
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
index 810e919914..fe73bb0240 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
@@ -11,6 +11,9 @@
package org.eclipse.swt.widgets;
+import java.util.HashMap;
+import java.util.Map;
+
import org.eclipse.swt.*;
import org.eclipse.swt.internal.*;
import org.eclipse.swt.internal.cairo.*;
@@ -152,7 +155,10 @@ public class Display extends Device {
boolean ignoreActivate, ignoreFocus;
Tracker tracker;
-
+
+ Map closure_map = new HashMap ();
+ Integer n_notifier = new Integer(0);
+
/* Input method resources */
Control imControl;
long /*int*/ preeditWindow, preeditLabel;
@@ -3493,11 +3499,12 @@ void releaseDisplay () {
caretCallback = null;
/* Release closures */
- for (int i = 0; i < Widget.LAST_SIGNAL; i++) {
- if (closures [i] != 0) OS.g_closure_unref (closures [i]);
+ if (OS.GLIB_VERSION < OS.VERSION(2, 36, 0)){
+ for (int i = 0; i < Widget.LAST_SIGNAL; i++) {
+ if (closures [i] != 0) OS.g_closure_unref (closures [i]);
+ }
+ if (shellMapProcClosure != 0) OS.g_closure_unref (shellMapProcClosure);
}
- if (shellMapProcClosure != 0) OS.g_closure_unref (shellMapProcClosure);
-
/* Dispose the timer callback */
if (timerIds != null) {
for (int i=0; i<timerIds.length; i++) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
index b353b387ab..be38762f5e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
@@ -347,12 +347,12 @@ boolean hasFocus () {
void hookEvents () {
super.hookEvents ();
if (NEW_CLOSURES){
- OS.g_signal_connect_closure (handle, OS.activate, getClosure(ACTIVATE, display.windowProc2, Widget.ACTIVATE), false);
- OS.g_signal_connect_closure (handle, OS.activate, getClosure(ACTIVATE_INVERSE, display.windowProc2, Widget.ACTIVATE_INVERSE), true);
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3, Widget.BUTTON_PRESS_EVENT), false);
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [FOCUS_OUT_EVENT], 0, getClosure(FOCUS_OUT_EVENT, display.windowProc3, Widget.FOCUS_OUT_EVENT), false);
- OS.g_signal_connect_closure (clientHandle, OS.size_allocate, getClosure(SIZE_ALLOCATE, display.windowProc3, Widget.SIZE_ALLOCATE), true);
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [ENTER_NOTIFY_EVENT], 0, getClosure(ENTER_NOTIFY_EVENT, display.windowProc3, Widget.ENTER_NOTIFY_EVENT), false);
+ OS.g_signal_connect_closure (handle, OS.activate, getClosure(ACTIVATE, display.windowProc2), false);
+ OS.g_signal_connect_closure (handle, OS.activate, getClosure(ACTIVATE_INVERSE, display.windowProc2), true);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [FOCUS_OUT_EVENT], 0, getClosure(FOCUS_OUT_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure (clientHandle, OS.size_allocate, getClosure(SIZE_ALLOCATE, display.windowProc3), true);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [ENTER_NOTIFY_EVENT], 0, getClosure(ENTER_NOTIFY_EVENT, display.windowProc3), false);
} else {
OS.g_signal_connect_closure (handle, OS.activate, display.closures [ACTIVATE], false);
OS.g_signal_connect_closure (handle, OS.activate, display.closures [ACTIVATE_INVERSE], true);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java
index cc710a6caf..977dd3021f 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java
@@ -194,7 +194,7 @@ void hookEvents () {
super.hookEvents();
if(NEW_CLOSURES){
if (labelHandle != 0) {
- OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3, Widget.MNEMONIC_ACTIVATE), false);
+ OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3), false);
}
}else {
if (labelHandle != 0) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
index 7d8031c511..c7fa4c1be3 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
@@ -329,7 +329,7 @@ void hookEvents () {
super.hookEvents();
if(NEW_CLOSURES){
if (labelHandle != 0) {
- OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3, Widget.MNEMONIC_ACTIVATE), false);
+ OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3), false);
}
}else {
if (labelHandle != 0) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Menu.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Menu.java
index 6217fa928d..13b6ed81a7 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Menu.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Menu.java
@@ -687,9 +687,9 @@ long /*int*/ gtk_show_help (long /*int*/ widget, long /*int*/ helpType) {
void hookEvents () {
super.hookEvents ();
if (NEW_CLOSURES){
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [SHOW], 0, getClosure(SHOW, display.windowProc2, Widget.SHOW), false);
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [HIDE], 0, getClosure(HIDE, display.windowProc2, Widget.HIDE), false);
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [SHOW_HELP], 0, getClosure(SHOW_HELP, display.windowProc3, Widget.SHOW_HELP), false);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [SHOW], 0, getClosure(SHOW, display.windowProc2), false);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [HIDE], 0, getClosure(HIDE, display.windowProc2), false);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [SHOW_HELP], 0, getClosure(SHOW_HELP, display.windowProc3), false);
} else {
OS.g_signal_connect_closure_by_id (handle, display.signalIds [SHOW], 0, display.closures [SHOW], false);
OS.g_signal_connect_closure_by_id (handle, display.signalIds [HIDE], 0, display.closures [HIDE], false);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java
index 2449b79fda..a53eb461b8 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java
@@ -469,9 +469,9 @@ long /*int*/ gtk_show_help (long /*int*/ widget, long /*int*/ helpType) {
void hookEvents () {
super.hookEvents ();
if(NEW_CLOSURES){
- OS.g_signal_connect_closure (handle, OS.activate, getClosure(ACTIVATE, display.windowProc2, Widget.ACTIVATE), false);
- OS.g_signal_connect_closure (handle, OS.select, getClosure(SELECT, display.windowProc2, Widget.SELECT), false);
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [SHOW_HELP], 0, getClosure(SHOW_HELP, display.windowProc3, Widget.SHOW_HELP), false);
+ OS.g_signal_connect_closure (handle, OS.activate, getClosure(ACTIVATE, display.windowProc2), false);
+ OS.g_signal_connect_closure (handle, OS.select, getClosure(SELECT, display.windowProc2), false);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [SHOW_HELP], 0, getClosure(SHOW_HELP, display.windowProc3), false);
} else {
OS.g_signal_connect_closure (handle, OS.activate, display.closures [ACTIVATE], false);
OS.g_signal_connect_closure (handle, OS.select, display.closures [SELECT], false);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java
index 4e8ba780d1..8bcdda30aa 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java
@@ -532,10 +532,10 @@ long /*int*/ gtk_event_after (long /*int*/ widget, long /*int*/ gdkEvent) {
void hookEvents () {
super.hookEvents ();
if(NEW_CLOSURES) {
- OS.g_signal_connect_closure (handle, OS.change_value, getClosure(CHANGE_VALUE, display.windowProc5, Widget.CHANGE_VALUE), false);
- OS.g_signal_connect_closure (adjustmentHandle, OS.value_changed, getClosure(VALUE_CHANGED, display.windowProc2, Widget.VALUE_CHANGED), false);
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3, Widget.EVENT_AFTER), false);
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3, Widget.BUTTON_PRESS_EVENT), false);
+ OS.g_signal_connect_closure (handle, OS.change_value, getClosure(CHANGE_VALUE, display.windowProc5), false);
+ OS.g_signal_connect_closure (adjustmentHandle, OS.value_changed, getClosure(VALUE_CHANGED, display.windowProc2), false);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3), false);
} else {
OS.g_signal_connect_closure (handle, OS.change_value, display.closures [CHANGE_VALUE], false);
OS.g_signal_connect_closure (adjustmentHandle, OS.value_changed, display.closures [VALUE_CHANGED], false);
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 01546e3172..458ac6415a 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
@@ -825,14 +825,14 @@ boolean hasBorder () {
void hookEvents () {
super.hookEvents ();
if (NEW_CLOSURES) {
- OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [KEY_PRESS_EVENT], 0, getClosure(KEY_PRESS_EVENT, display.windowProc3, Widget.KEY_PRESS_EVENT), false);
- OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [WINDOW_STATE_EVENT], 0, getClosure(WINDOW_STATE_EVENT, display.windowProc3, Widget.WINDOW_STATE_EVENT), false);
- OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [SIZE_ALLOCATE], 0, getClosure(SIZE_ALLOCATE, display.windowProc3, Widget.SIZE_ALLOCATE), false);
- OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [CONFIGURE_EVENT], 0, getClosure(CONFIGURE_EVENT, display.windowProc3, Widget.CONFIGURE_EVENT), false);
- OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [DELETE_EVENT], 0, getClosure(DELETE_EVENT, display.windowProc3, Widget.DELETE_EVENT), false);
+ OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [KEY_PRESS_EVENT], 0, getClosure(KEY_PRESS_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [WINDOW_STATE_EVENT], 0, getClosure(WINDOW_STATE_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [SIZE_ALLOCATE], 0, getClosure(SIZE_ALLOCATE, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [CONFIGURE_EVENT], 0, getClosure(CONFIGURE_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [DELETE_EVENT], 0, getClosure(DELETE_EVENT, display.windowProc3), false);
OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [MAP_EVENT], 0, display.shellMapProcClosure, false);
- OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [ENTER_NOTIFY_EVENT], 0, getClosure(ENTER_NOTIFY_EVENT, display.windowProc3, Widget.ENTER_NOTIFY_EVENT), false);
- OS.g_signal_connect_closure (shellHandle, OS.move_focus, getClosure(MOVE_FOCUS, display.windowProc3, Widget.MOVE_FOCUS), false);
+ OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [ENTER_NOTIFY_EVENT], 0, getClosure(ENTER_NOTIFY_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure (shellHandle, OS.move_focus, getClosure(MOVE_FOCUS, display.windowProc3), false);
} else {
OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [KEY_PRESS_EVENT], 0, display.closures [KEY_PRESS_EVENT], false);
OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [WINDOW_STATE_EVENT], 0, display.closures [WINDOW_STATE_EVENT], false);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java
index 46d4dc96fd..15dc942923 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java
@@ -220,8 +220,8 @@ long /*int*/ gtk_mnemonic_activate (long /*int*/ widget, long /*int*/ arg1) {
void hookEvents () {
super.hookEvents ();
if (NEW_CLOSURES) {
- if (labelHandle != 0) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3, Widget.MNEMONIC_ACTIVATE), false);
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [ENTER_NOTIFY_EVENT], 0, getClosure(ENTER_NOTIFY_EVENT, display.windowProc3, Widget.ENTER_NOTIFY_EVENT), false);
+ if (labelHandle != 0) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [ENTER_NOTIFY_EVENT], 0, getClosure(ENTER_NOTIFY_EVENT, display.windowProc3), false);
} else {
if (labelHandle != 0) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, display.closures [MNEMONIC_ACTIVATE], false);
OS.g_signal_connect_closure_by_id (handle, display.signalIds [ENTER_NOTIFY_EVENT], 0, display.closures [ENTER_NOTIFY_EVENT], false);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableColumn.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableColumn.java
index 3a04f9533e..746a1eb210 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableColumn.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableColumn.java
@@ -398,9 +398,9 @@ void hookEvents () {
OS.g_signal_connect_closure (handle, OS.clicked, display.closures [CLICKED], false);
if (buttonHandle != 0) {
if (NEW_CLOSURES) {
- OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [SIZE_ALLOCATE], 0, getClosure(SIZE_ALLOCATE, display.windowProc3, Widget.SIZE_ALLOCATE), false);
- OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3, Widget.EVENT_AFTER), false);
- if (labelHandle != 0) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3, Widget.MNEMONIC_ACTIVATE), false);
+ OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [SIZE_ALLOCATE], 0, getClosure(SIZE_ALLOCATE, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3), false);
+ if (labelHandle != 0) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3), false);
} else {
OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [SIZE_ALLOCATE], 0, display.closures [SIZE_ALLOCATE], false);
OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [EVENT_AFTER], 0, display.closures [EVENT_AFTER], false);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java
index 839d683ff5..1a3c5d5aeb 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java
@@ -673,7 +673,7 @@ void hookEvents () {
super.hookEvents ();
if ((style & SWT.SEPARATOR) != 0) return;
if (NEW_CLOSURES) {
- OS.g_signal_connect_closure (handle, OS.clicked, getClosure(CLICKED, display.windowProc2, Widget.CLICKED), false);
+ OS.g_signal_connect_closure (handle, OS.clicked, getClosure(CLICKED, display.windowProc2), false);
/*
* Feature in GTK. GtkToolItem does not respond to basic listeners
* such as button-press, enter-notify to it. The fix is to assign
@@ -683,14 +683,14 @@ void hookEvents () {
if ((style & SWT.DROP_DOWN) != 0) {
long /*int*/ list = OS.gtk_container_get_children(eventHandle);
eventHandle = OS.g_list_nth_data(list, 0);
- if (arrowHandle != 0) OS.g_signal_connect_closure (arrowHandle, OS.clicked, getClosure(CLICKED, display.windowProc2, Widget.CLICKED), false);
+ if (arrowHandle != 0) OS.g_signal_connect_closure (arrowHandle, OS.clicked, getClosure(CLICKED, display.windowProc2), false);
}
- OS.g_signal_connect_closure (handle, OS.create_menu_proxy, getClosure(CREATE_MENU_PROXY, display.windowProc2, Widget.CREATE_MENU_PROXY), false);
+ OS.g_signal_connect_closure (handle, OS.create_menu_proxy, getClosure(CREATE_MENU_PROXY, display.windowProc2), false);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [ENTER_NOTIFY_EVENT], 0, getClosure(ENTER_NOTIFY_EVENT, display.windowProc3, Widget.ENTER_NOTIFY_EVENT), false);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [LEAVE_NOTIFY_EVENT], 0, getClosure(LEAVE_NOTIFY_EVENT, display.windowProc3, Widget.LEAVE_NOTIFY_EVENT), false);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [FOCUS_IN_EVENT], 0, getClosure(FOCUS_IN_EVENT, display.windowProc3, Widget.FOCUS_IN_EVENT), false);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [FOCUS_OUT_EVENT], 0, getClosure(FOCUS_OUT_EVENT, display.windowProc3, Widget.FOCUS_OUT_EVENT), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [ENTER_NOTIFY_EVENT], 0, getClosure(ENTER_NOTIFY_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [LEAVE_NOTIFY_EVENT], 0, getClosure(LEAVE_NOTIFY_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [FOCUS_IN_EVENT], 0, getClosure(FOCUS_IN_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [FOCUS_OUT_EVENT], 0, getClosure(FOCUS_OUT_EVENT, display.windowProc3), false);
/*
* Feature in GTK. Usually, GTK widgets propagate all events to their
* parent when they are done their own processing. However, in contrast
@@ -706,9 +706,9 @@ void hookEvents () {
OS.GDK_KEY_PRESS_MASK | OS.GDK_KEY_RELEASE_MASK |
OS.GDK_FOCUS_CHANGE_MASK;
OS.gtk_widget_add_events (eventHandle, mask);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3, Widget.BUTTON_PRESS_EVENT), false);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_RELEASE_EVENT], 0, getClosure(BUTTON_RELEASE_EVENT, display.windowProc3, Widget.BUTTON_RELEASE_EVENT), false);
- OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3, Widget.EVENT_AFTER), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_RELEASE_EVENT], 0, getClosure(BUTTON_RELEASE_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3), false);
long /*int*/ topHandle = topHandle ();
OS.g_signal_connect_closure_by_id (topHandle, display.signalIds [MAP], 0, display.closures [MAP], true);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java
index 984dad1437..b871526e32 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java
@@ -620,16 +620,16 @@ long /*int*/ gtk_size_allocate (long /*int*/ widget, long /*int*/ allocation) {
void hookEvents () {
if (NEW_CLOSURES) {
if ((style & SWT.BALLOON) != 0) {
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [EXPOSE_EVENT], 0, getClosure(EXPOSE_EVENT, display.windowProc3, Widget.EXPOSE_EVENT), true);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [EXPOSE_EVENT], 0, getClosure(EXPOSE_EVENT, display.windowProc3), true);
OS.gtk_widget_add_events (handle, OS.GDK_BUTTON_PRESS_MASK);
- OS.g_signal_connect_closure (handle, OS.button_press_event, getClosure(BUTTON_PRESS_EVENT, display.windowProc3, Widget.BUTTON_PRESS_EVENT), false);
+ OS.g_signal_connect_closure (handle, OS.button_press_event, getClosure(BUTTON_PRESS_EVENT, display.windowProc3), false);
} else {
if (OS.GTK_VERSION < OS.VERSION (2, 12, 0)) {
long /*int*/ tipWindow = OS.GTK_TOOLTIPS_TIP_WINDOW (handle);
if (tipWindow != 0) {
- OS.g_signal_connect_closure (tipWindow, OS.size_allocate, getClosure(SIZE_ALLOCATE, display.windowProc3, Widget.SIZE_ALLOCATE), false);
+ OS.g_signal_connect_closure (tipWindow, OS.size_allocate, getClosure(SIZE_ALLOCATE, display.windowProc3), false);
OS.gtk_widget_add_events (tipWindow, OS.GDK_BUTTON_PRESS_MASK);
- OS.g_signal_connect_closure (tipWindow, OS.button_press_event, getClosure(BUTTON_PRESS_EVENT, display.windowProc3, Widget.BUTTON_PRESS_EVENT), false);
+ OS.g_signal_connect_closure (tipWindow, OS.button_press_event, getClosure(BUTTON_PRESS_EVENT, display.windowProc3), false);
}
}
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TrayItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TrayItem.java
index fd6ad5a7af..a372fd5a41 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TrayItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TrayItem.java
@@ -365,13 +365,13 @@ long /*int*/ gtk_status_icon_popup_menu (long /*int*/ widget, long /*int*/ butto
void hookEvents () {
if (NEW_CLOSURES) {
if (OS.GTK_VERSION >= OS.VERSION (2, 10, 0)) {
- OS.g_signal_connect_closure (handle, OS.activate, getClosure(ACTIVATE, display.windowProc2, Widget.ACTIVATE), false);
- OS.g_signal_connect_closure (handle, OS.popup_menu, getClosure(STATUS_ICON_POPUP_MENU, display.windowProc4, Widget.STATUS_ICON_POPUP_MENU), false);
+ OS.g_signal_connect_closure (handle, OS.activate, getClosure(ACTIVATE, display.windowProc2), false);
+ OS.g_signal_connect_closure (handle, OS.popup_menu, getClosure(STATUS_ICON_POPUP_MENU, display.windowProc4), false);
} else {
int eventMask = OS.GDK_BUTTON_PRESS_MASK;
OS.gtk_widget_add_events (handle, eventMask);
- OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3, Widget.BUTTON_PRESS_EVENT), false);
- OS.g_signal_connect_closure_by_id (imageHandle, display.signalIds [SIZE_ALLOCATE], 0, getClosure(SIZE_ALLOCATE, display.windowProc3, Widget.SIZE_ALLOCATE), false);
+ OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, getClosure(BUTTON_PRESS_EVENT, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (imageHandle, display.signalIds [SIZE_ALLOCATE], 0, getClosure(SIZE_ALLOCATE, display.windowProc3), false);
}
} else {
if (OS.GTK_VERSION >= OS.VERSION (2, 10, 0)) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java
index 54f447e266..4d81a1df96 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java
@@ -398,12 +398,12 @@ long /*int*/ gtk_size_allocate (long /*int*/ widget, long /*int*/ allocation) {
void hookEvents () {
super.hookEvents ();
if (NEW_CLOSURES) {
- OS.g_signal_connect_closure (handle, OS.clicked, getClosure(CLICKED, display.windowProc2, Widget.CLICKED), false);
+ OS.g_signal_connect_closure (handle, OS.clicked, getClosure(CLICKED, display.windowProc2), false);
if (buttonHandle != 0) {
- OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [SIZE_ALLOCATE], 0, getClosure(SIZE_ALLOCATE, display.windowProc3, Widget.SIZE_ALLOCATE), false);
- OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3, Widget.EVENT_AFTER), false);
+ OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [SIZE_ALLOCATE], 0, getClosure(SIZE_ALLOCATE, display.windowProc3), false);
+ OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [EVENT_AFTER], 0, getClosure(EVENT_AFTER, display.windowProc3), false);
}
- if (labelHandle != 0) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3, Widget.MNEMONIC_ACTIVATE), false);
+ if (labelHandle != 0) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, getClosure(MNEMONIC_ACTIVATE, display.windowProc3), false);
} else {
OS.g_signal_connect_closure (handle, OS.clicked, display.closures [CLICKED], false);
if (buttonHandle != 0) {
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 aa401418d4..c9f22dc83f 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
@@ -2188,24 +2188,22 @@ void gtk_widget_get_preferred_size (long /*int*/ widget, GtkRequisition requisit
}
public boolean NEW_CLOSURES = true;
-Map closure_map = new HashMap ();
-Integer n_notifier = new Integer(0);
-long /*int*/ getClosure(int closure_id, long windowProcNum, int closure) {
+
+long /*int*/ getClosure(int closure, long windowProcNum) {
- Integer closureId = new Integer(closure_id);
+ Integer closureId = new Integer(closure);
- if (closure_map.containsKey(closureId)){
- n_notifier = Integer.valueOf(n_notifier.intValue() + 1);
+ if (display.closure_map.containsKey(closureId)){
+ display.n_notifier = Integer.valueOf(display.n_notifier.intValue() + 1);
}
- closure_map.put(closureId, n_notifier);
+ display.closure_map.put(closureId, display.n_notifier);
- if (closure == 0 || n_notifier.intValue() > 255) {
- display.closures[closure_id] = OS.g_cclosure_new (windowProcNum, closure, 0);
- System.out.println("ATTENTION: "+n_notifier.intValue());
+ if (closure == 0 || display.n_notifier.intValue() > 255) {
+ display.closures[closure] = OS.g_cclosure_new (windowProcNum, closure, 0);
}
- return display.closures [closure_id];
+ return display.closures [closure];
}
}