summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnatoly Spektor <aspektor@redhat.com>2012-07-23 16:24:29 -0400
committerAnatoly Spektor <aspektor@redhat.com>2012-07-23 16:24:29 -0400
commitacd8590cc41867802e0348c82fb1c961590acf1f (patch)
treee260a36234e1bde02bc0585128a6af2a647bad5b
parentb80afb5d5d649583b0278a6d35b3bbc328093e52 (diff)
downloadeclipse.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.java36
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: