Bug 23103: [DCR]TableColumn doesnt support popup menus
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 5eacbd5..5adaae3 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
@@ -365,6 +365,22 @@
return 0;
}
+int /*long*/ gtk_event_after (int /*long*/ widget, int /*long*/ gdkEvent) {
+ GdkEvent event = new GdkEvent ();
+ OS.memmove (event, gdkEvent, GdkEvent.sizeof);
+ switch (event.type) {
+ case OS.GDK_BUTTON_PRESS: {
+ GdkEventButton gdkEventButton = new GdkEventButton ();
+ OS.memmove (gdkEventButton, gdkEvent, GdkEventButton.sizeof);
+ if (gdkEventButton.button == 3) {
+ parent.showMenu ((int) gdkEventButton.x_root, (int) gdkEventButton.y_root);
+ }
+ break;
+ }
+ }
+ return 0;
+}
+
int /*long*/ gtk_mnemonic_activate (int /*long*/ widget, int /*long*/ arg1) {
return parent.gtk_mnemonic_activate (widget, arg1);
}
@@ -387,7 +403,10 @@
void hookEvents () {
super.hookEvents ();
OS.g_signal_connect_closure (handle, OS.clicked, display.closures [CLICKED], false);
- if (buttonHandle != 0) OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [SIZE_ALLOCATE], 0, display.closures [SIZE_ALLOCATE], false);
+ if (buttonHandle != 0) {
+ 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);
+ }
if (labelHandle != 0) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, display.closures [MNEMONIC_ACTIVATE], false);
}
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 6050236..9720924 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
@@ -367,6 +367,22 @@
return 0;
}
+int /*long*/ gtk_event_after (int /*long*/ widget, int /*long*/ gdkEvent) {
+ GdkEvent event = new GdkEvent ();
+ OS.memmove (event, gdkEvent, GdkEvent.sizeof);
+ switch (event.type) {
+ case OS.GDK_BUTTON_PRESS: {
+ GdkEventButton gdkEventButton = new GdkEventButton ();
+ OS.memmove (gdkEventButton, gdkEvent, GdkEventButton.sizeof);
+ if (gdkEventButton.button == 3) {
+ parent.showMenu ((int) gdkEventButton.x_root, (int) gdkEventButton.y_root);
+ }
+ break;
+ }
+ }
+ return 0;
+}
+
int /*long*/ gtk_mnemonic_activate (int /*long*/ widget, int /*long*/ arg1) {
return parent.gtk_mnemonic_activate (widget, arg1);
}
@@ -389,7 +405,10 @@
void hookEvents () {
super.hookEvents ();
OS.g_signal_connect_closure (handle, OS.clicked, display.closures [CLICKED], false);
- if (buttonHandle != 0) OS.g_signal_connect_closure_by_id (buttonHandle, display.signalIds [SIZE_ALLOCATE], 0, display.closures [SIZE_ALLOCATE], false);
+ if (buttonHandle != 0) {
+ 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);
+ }
if (labelHandle != 0) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, display.closures [MNEMONIC_ACTIVATE], false);
}