summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelipe Heidrich <fheidric>2003-07-17 21:53:43 +0000
committerFelipe Heidrich <fheidric>2003-07-17 21:53:43 +0000
commit298d47afaeaee32d403fc96fe30efcf595859927 (patch)
treefad2539f1e1c9aa98b2432241ab0177cc2fbc442
parent95589cb666bce16683672158ba6c846ed5f21690 (diff)
downloadeclipse.platform.swt-298d47afaeaee32d403fc96fe30efcf595859927.tar.gz
eclipse.platform.swt-298d47afaeaee32d403fc96fe30efcf595859927.tar.xz
eclipse.platform.swt-298d47afaeaee32d403fc96fe30efcf595859927.zip
*** empty log message ***v3014d
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java33
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java19
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java15
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java33
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java17
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);
}
/**