diff options
author | Felipe Heidrich | 2009-02-23 19:59:36 +0000 |
---|---|---|
committer | Felipe Heidrich | 2009-02-23 19:59:36 +0000 |
commit | 202915b4e0c2a8401f55d01a3e78d0175ca8da7d (patch) | |
tree | 826a149a32612e786e6436f1cc5e416f2a64941e | |
parent | 31f3bac92f47f0e977cf9f95b4070908e4797b9c (diff) | |
download | eclipse.platform.swt-202915b4e0c2a8401f55d01a3e78d0175ca8da7d.tar.gz eclipse.platform.swt-202915b4e0c2a8401f55d01a3e78d0175ca8da7d.tar.xz eclipse.platform.swt-202915b4e0c2a8401f55d01a3e78d0175ca8da7d.zip |
Bug 23103: [DCR]TableColumn doesnt support popup menus
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableColumn.java | 21 | ||||
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java | 21 |
2 files changed, 40 insertions, 2 deletions
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 5eacbd59ab..5adaae3e75 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 @@ int /*long*/ gtk_clicked (int /*long*/ widget) { 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 @@ int /*long*/ gtk_size_allocate (int /*long*/ widget, int /*long*/ allocation) { 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 60502365f9..9720924b84 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 @@ int /*long*/ gtk_clicked (int /*long*/ widget) { 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 @@ int /*long*/ gtk_size_allocate (int /*long*/ widget, int /*long*/ allocation) { 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); } |