diff options
author | Anatoly Spektor <aspektor@redhat.com> | 2012-07-23 16:24:29 -0400 |
---|---|---|
committer | Anatoly Spektor <aspektor@redhat.com> | 2012-07-23 16:24:29 -0400 |
commit | acd8590cc41867802e0348c82fb1c961590acf1f (patch) | |
tree | e260a36234e1bde02bc0585128a6af2a647bad5b | |
parent | b80afb5d5d649583b0278a6d35b3bbc328093e52 (diff) | |
download | eclipse.platform.swt-tracker_testing3.tar.gz eclipse.platform.swt-tracker_testing3.tar.xz eclipse.platform.swt-tracker_testing3.zip |
Trying hookEvents and create window on button presstracker_testing3
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java index 8876550db5..ce7ce374ef 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java @@ -308,10 +308,28 @@ Rectangle [] computeProportions (Rectangle [] rects) { return result; } -int /*long*/ gtk_button_press_event (int /*long*/ widget, int /*long*/ eventPtr) { +int /*long*/ gtk_button_press_event (long /*int*/ widget, long /*int*/ event) { System.out.println("Button is pressed!"); + /* getting parameters of screen and creating window size of the screen */ + int height = OS.gdk_window_get_height(window); + int width = OS.gdk_window_get_width(window); +// screenWindow = OS.gtk_window_new(OS.GTK_WINDOW_POPUP); // create window + if (screenWindow != 0) { + OS.gtk_window_resize(screenWindow,200,200); // resizing window to size of the screen (200 x 200 for testing) + OS.gtk_window_set_opacity(screenWindow, 0.3); // make window opaque ( 0 is opaque, 0.3 is for testing) + OS.gtk_widget_show(screenWindow); + } return 0; } + +void hookEvents () { + if(screenWindow == 0 ){ + screenWindow = OS.gtk_window_new(OS.GTK_WINDOW_POPUP); + } + OS.gtk_widget_add_events (screenWindow, OS.GDK_BUTTON_PRESS_MASK); // make window appear on press event + OS.g_signal_connect_closure (screenWindow, OS.button_press_event, display.closures [BUTTON_PRESS_EVENT], false); +} + void drawRectangles (Rectangle [] rects) { int /*long*/ window = OS.gdk_get_default_root_window(); if (parent != null) { @@ -340,17 +358,7 @@ void drawRectangles (Rectangle [] rects) { * 2.When mouse is released expose * 3.When mouse is pressed show window and draw Rectangle * 4. Make Window opaque - */ - /* getting parameters of screen and creating window size of the screen */ - int height = OS.gdk_window_get_height(window); - int width = OS.gdk_window_get_width(window); - screenWindow = OS.gtk_window_new(OS.GTK_WINDOW_POPUP); // create window - OS.gtk_widget_is_composited(screenWindow); - if (screenWindow != 0) { - OS.gtk_window_resize(screenWindow,height,width); // resizing window to size of the screen - OS.gtk_window_set_opacity(screenWindow, 2); // make window opaque - OS.gtk_widget_show(screenWindow); - } + */ return; } } @@ -690,6 +698,8 @@ int /*long*/ gtk_mouse (int eventType, int /*long*/ widget, int /*long*/ eventPt oldY = newY [0]; } tracking = eventType != OS.GDK_BUTTON_RELEASE; + if(eventType == OS.GDK_BUTTON_RELEASE) + OS.gtk_widget_hide(screenWindow); return 0; } @@ -722,6 +732,7 @@ void moveRectangles (int xChange, int yChange) { */ public boolean open () { checkWidget(); + hookEvents(); window = OS.gdk_get_default_root_window(); if (parent != null) { window = OS.GTK_WIDGET_WINDOW (parent.paintHandle()); @@ -787,7 +798,6 @@ public boolean open () { case OS.GDK_BUTTON_RELEASE: gtk_button_release_event (widget, eventPtr); break; case OS.GDK_KEY_PRESS: gtk_key_press_event (widget, eventPtr); break; case OS.GDK_KEY_RELEASE: gtk_key_release_event (widget, eventPtr); break; - case OS.GDK_BUTTON_PRESS: case OS.GDK_2BUTTON_PRESS: case OS.GDK_3BUTTON_PRESS: case OS.GDK_ENTER_NOTIFY: |