diff options
author | Felipe Heidrich <fheidric> | 2003-07-17 21:53:43 +0000 |
---|---|---|
committer | Felipe Heidrich <fheidric> | 2003-07-17 21:53:43 +0000 |
commit | 298d47afaeaee32d403fc96fe30efcf595859927 (patch) | |
tree | fad2539f1e1c9aa98b2432241ab0177cc2fbc442 | |
parent | 95589cb666bce16683672158ba6c846ed5f21690 (diff) | |
download | eclipse.platform.swt-298d47afaeaee32d403fc96fe30efcf595859927.tar.gz eclipse.platform.swt-298d47afaeaee32d403fc96fe30efcf595859927.tar.xz eclipse.platform.swt-298d47afaeaee32d403fc96fe30efcf595859927.zip |
*** empty log message ***v3014d
5 files changed, 108 insertions, 9 deletions
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 73d1f0a2ab..efbe39b439 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 @@ -734,6 +734,19 @@ int gtk_activate (int widget) { return 0; } +int gtk_button_press_event (int widget, int event) { + int result = super.gtk_button_press_event (widget, event) ; + if (result != 0) return result; + GdkEventButton gdkEvent = new GdkEventButton (); + OS.memmove (gdkEvent, event, GdkEventButton.sizeof); + if (gdkEvent.button == 3 && gdkEvent.type == OS.GDK_BUTTON_PRESS) { + if (showMenu ((int)gdkEvent.x_root, (int)gdkEvent.y_root)) { + return 1; + } + } + return 0; +} + int gtk_changed (int widget) { sendEvent (SWT.Modify); return 0; @@ -764,6 +777,20 @@ int gtk_commit (int imContext, int text) { return 0; } +int gtk_event_after (int widget, int gdkEvent) { + GdkEvent event = new GdkEvent (); + OS.memmove (event, gdkEvent, GdkEventButton.sizeof); + switch (event.type) { + case OS.GDK_FOCUS_CHANGE: { + GdkEventFocus gdkEventFocus = new GdkEventFocus (); + OS.memmove (gdkEventFocus, gdkEvent, GdkEventFocus.sizeof); + sendFocusEvent (gdkEventFocus.in != 0 ? SWT.FocusIn : SWT.FocusOut); + break; + } + } + return 0; +} + int gtk_key_press_event (int widget, int event) { if (widget != entryHandle) { return super.gtk_key_press_event (widget, event); @@ -780,6 +807,12 @@ int gtk_key_press_event (int widget, int event) { return super.gtk_key_press_event (widget, event); } +int gtk_popup_menu (int widget) { + int [] x = new int [1], y = new int [1]; + OS.gdk_window_get_pointer (0, x, y, null); + return showMenu (x [0], y [0]) ? 1 : 0; +} + int gtk_select_child (int list, int widget) { if (lastSelectedItem == widget) return 0; int event = OS.gtk_get_current_event (); 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 f315a68d2c..234da3508c 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 @@ -1600,12 +1600,6 @@ int gtk_button_press_event (int widget, int event) { display.dragStartX = (int) gdkEvent.x; display.dragStartY = (int) gdkEvent.y; display.dragging = false; - int result = 0; - if (gdkEvent.button == 3 && gdkEvent.type == OS.GDK_BUTTON_PRESS) { - if (showMenu ((int)gdkEvent.x_root, (int)gdkEvent.y_root)) { - result = 1; - } - } int button = gdkEvent.button; int type = gdkEvent.type != OS.GDK_2BUTTON_PRESS ? SWT.MouseDown : SWT.MouseDoubleClick; sendMouseEvent (type, button, event); @@ -1619,7 +1613,7 @@ int gtk_button_press_event (int widget, int event) { if (!shell.isDisposed ()) { shell.setActiveControl (this); } - return result; + return 0; } int gtk_button_release_event (int widget, int event) { @@ -1653,6 +1647,14 @@ int gtk_event_after (int widget, int gdkEvent) { GdkEvent event = new GdkEvent (); OS.memmove (event, gdkEvent, GdkEventButton.sizeof); switch (event.type) { + case OS.GDK_BUTTON_PRESS: { + GdkEventButton gdkEventButton = new GdkEventButton (); + OS.memmove (gdkEventButton, gdkEvent, GdkEventButton.sizeof); + if (gdkEventButton.button == 3) { + showMenu ((int) gdkEventButton.x_root, (int) gdkEventButton.y_root); + } + break; + } case OS.GDK_FOCUS_CHANGE: { GdkEventFocus gdkEventFocus = new GdkEventFocus (); OS.memmove (gdkEventFocus, gdkEvent, GdkEventFocus.sizeof); @@ -1778,7 +1780,8 @@ int gtk_motion_notify_event (int widget, int event) { int gtk_popup_menu (int widget) { int [] x = new int [1], y = new int [1]; OS.gdk_window_get_pointer (0, x, y, null); - return showMenu (x [0], y [0]) ? 1 : 0; + showMenu (x [0], y [0]); + return 0; } int gtk_preedit_changed (int imcontext) { 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 3a33394338..3712e2ac63 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 @@ -948,11 +948,24 @@ public void setVisible (boolean visible) { // widget could be disposed at this point if (isDisposed ()) return; OS.gtk_widget_show (shellHandle); - while (!isDisposed () && !OS.GTK_WIDGET_MAPPED (shellHandle)) { + + //TEMPORARY CODE + final boolean[] mapped = new boolean [1]; + Callback proc = new Callback(new Object() { + public int proc(int widget, int event, int userdata) { + mapped [0] = true; + return 0; + } + }, "proc", 3); + int id = OS.g_signal_connect (shellHandle, OS.map_event, proc.getAddress (), 0); + while (!isDisposed () && !mapped [0]) { OS.gtk_main_iteration (); } + proc.dispose(); // widget could be disposed at this point if (isDisposed ()) return; + OS.g_signal_handler_disconnect (shellHandle, id); + adjustTrim (); } else { OS.gtk_widget_hide (shellHandle); diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java index ae777c0ffa..818c2be4f2 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java @@ -820,6 +820,19 @@ int gtk_activate (int widget) { return 0; } +int gtk_button_press_event (int widget, int event) { + int result = super.gtk_button_press_event (widget, event) ; + if (result != 0) return result; + GdkEventButton gdkEvent = new GdkEventButton (); + OS.memmove (gdkEvent, event, GdkEventButton.sizeof); + if (gdkEvent.button == 3 && gdkEvent.type == OS.GDK_BUTTON_PRESS) { + if (showMenu ((int)gdkEvent.x_root, (int)gdkEvent.y_root)) { + return 1; + } + } + return 0; +} + int gtk_changed (int widget) { sendEvent (SWT.Modify); return 0; @@ -876,6 +889,20 @@ int gtk_delete_text (int widget, int start_pos, int end_pos) { return 0; } +int gtk_event_after (int widget, int gdkEvent) { + GdkEvent event = new GdkEvent (); + OS.memmove (event, gdkEvent, GdkEventButton.sizeof); + switch (event.type) { + case OS.GDK_FOCUS_CHANGE: { + GdkEventFocus gdkEventFocus = new GdkEventFocus (); + OS.memmove (gdkEventFocus, gdkEvent, GdkEventFocus.sizeof); + sendFocusEvent (gdkEventFocus.in != 0 ? SWT.FocusIn : SWT.FocusOut); + break; + } + } + return 0; +} + int gtk_insert_text (int widget, int int0, int int1, int int2) { if (!hooks (SWT.Verify) && !filters (SWT.Verify)) return 0; if ((style & SWT.SINGLE) != 0) { @@ -936,6 +963,12 @@ int gtk_key_press_event (int widget, int event) { return super.gtk_key_press_event (widget, event); } +int gtk_popup_menu (int widget) { + int [] x = new int [1], y = new int [1]; + OS.gdk_window_get_pointer (0, x, y, null); + return showMenu (x [0], y [0]) ? 1 : 0; +} + void hookEvents () { super.hookEvents(); int windowProc2 = display.windowProc2; 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 90c239eb47..8f93be90b5 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 @@ -475,6 +475,22 @@ int gtk_enter_notify_event (int widget, int event) { return 0; } +int gtk_event_after (int widget, int 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 gtk_leave_notify_event (int widget, int event) { if (drawHotImage) { drawHotImage = false; @@ -511,6 +527,7 @@ void hookEvents () { OS.gtk_widget_add_events (handle, mask); OS.g_signal_connect (handle, OS.button_press_event, windowProc3, BUTTON_PRESS_EVENT); OS.g_signal_connect (handle, OS.button_release_event, windowProc3, BUTTON_RELEASE_EVENT); + OS.g_signal_connect (handle, OS.event_after, windowProc3, EVENT_AFTER); } /** |