[Pkg-mozext-commits] [firetray] 128/399: * fix gdk declarations + typo in FiretrayWindow.jsm * unsuccessful attempt to catch a real minimize event with Gtk 'window-state-event'

David Prévot taffit at alioth.debian.org
Tue Oct 29 18:23:27 UTC 2013


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch dfsg-clean
in repository firetray.

commit 1e4254b26fbcd733402543ca2e2199b76945fe65
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Sun Jan 1 19:25:56 2012 +0100

    * fix gdk declarations + typo in FiretrayWindow.jsm
    * unsuccessful attempt to catch a real minimize event with Gtk
      'window-state-event'
    
    The problem is that GDK_WINDOW_STATE_ICONIFIED is fired on virtual desktop
    change... even both e->changed_mask and e->new_window_state get
    GDK_WINDOW_STATE_ICONIFIED ! Gdk obviously relies on WM_STATE, which may not
    be up-to-date. We better try to check _NET_WM_STATE at X11 level. See ex:
    http://trac.wxwidgets.org/ticket/10973
---
 src/modules/gobject.jsm             |   66 +++++++++++++++++++----------------
 src/modules/gtk2/FiretrayWindow.jsm |   23 +++++++++---
 2 files changed, 54 insertions(+), 35 deletions(-)

diff --git a/src/modules/gobject.jsm b/src/modules/gobject.jsm
index 0854c1a..d7a617c 100644
--- a/src/modules/gobject.jsm
+++ b/src/modules/gobject.jsm
@@ -53,36 +53,35 @@ Cu.import("resource://firetray/glib.jsm");
 function gobject_defines(lib) {
 
   this.GdkEventMask = ctypes.int; // enum
-  this.GDK_EXPOSURE_MASK            = 1 << 1,
-  this.GDK_POINTER_MOTION_MASK      = 1 << 2,
-  this.GDK_POINTER_MOTION_HINT_MASK	= 1 << 3,
-  this.GDK_BUTTON_MOTION_MASK       = 1 << 4,
-  this.GDK_BUTTON1_MOTION_MASK      = 1 << 5,
-  this.GDK_BUTTON2_MOTION_MASK      = 1 << 6,
-  this.GDK_BUTTON3_MOTION_MASK      = 1 << 7,
-  this.GDK_BUTTON_PRESS_MASK        = 1 << 8,
-  this.GDK_BUTTON_RELEASE_MASK      = 1 << 9,
-  this.GDK_KEY_PRESS_MASK           = 1 << 10,
-  this.GDK_KEY_RELEASE_MASK         = 1 << 11,
-  this.GDK_ENTER_NOTIFY_MASK        = 1 << 12,
-  this.GDK_LEAVE_NOTIFY_MASK        = 1 << 13,
-  this.GDK_FOCUS_CHANGE_MASK        = 1 << 14,
-  this.GDK_STRUCTURE_MASK           = 1 << 15,
-  this.GDK_PROPERTY_CHANGE_MASK     = 1 << 16,
-  this.GDK_VISIBILITY_NOTIFY_MASK   = 1 << 17,
-  this.GDK_PROXIMITY_IN_MASK        = 1 << 18,
-  this.GDK_PROXIMITY_OUT_MASK       = 1 << 19,
-  this.GDK_SUBSTRUCTURE_MASK        = 1 << 20,
-  this.GDK_SCROLL_MASK              = 1 << 21,
-  this.GDK_ALL_EVENTS_MASK          = 0x3FFFFE
+  this.GDK_EXPOSURE_MASK            = 1 << 1;
+  this.GDK_POINTER_MOTION_MASK      = 1 << 2;
+  this.GDK_POINTER_MOTION_HINT_MASK	= 1 << 3;
+  this.GDK_BUTTON_MOTION_MASK       = 1 << 4;
+  this.GDK_BUTTON1_MOTION_MASK      = 1 << 5;
+  this.GDK_BUTTON2_MOTION_MASK      = 1 << 6;
+  this.GDK_BUTTON3_MOTION_MASK      = 1 << 7;
+  this.GDK_BUTTON_PRESS_MASK        = 1 << 8;
+  this.GDK_BUTTON_RELEASE_MASK      = 1 << 9;
+  this.GDK_KEY_PRESS_MASK           = 1 << 10;
+  this.GDK_KEY_RELEASE_MASK         = 1 << 11;
+  this.GDK_ENTER_NOTIFY_MASK        = 1 << 12;
+  this.GDK_LEAVE_NOTIFY_MASK        = 1 << 13;
+  this.GDK_FOCUS_CHANGE_MASK        = 1 << 14;
+  this.GDK_STRUCTURE_MASK           = 1 << 15;
+  this.GDK_PROPERTY_CHANGE_MASK     = 1 << 16;
+  this.GDK_VISIBILITY_NOTIFY_MASK   = 1 << 17;
+  this.GDK_PROXIMITY_IN_MASK        = 1 << 18;
+  this.GDK_PROXIMITY_OUT_MASK       = 1 << 19;
+  this.GDK_SUBSTRUCTURE_MASK        = 1 << 20;
+  this.GDK_SCROLL_MASK              = 1 << 21;
+  this.GDK_ALL_EVENTS_MASK          = 0x3FFFFE;
   this.GSignalMatchType = ctypes.int; // enum
-  this.G_SIGNAL_MATCH_ID            = 1 << 0,
-  this.G_SIGNAL_MATCH_DETAIL        = 1 << 1,
-  this.G_SIGNAL_MATCH_CLOSURE       = 1 << 2,
-  this.G_SIGNAL_MATCH_FUNC          = 1 << 3,
-  this.G_SIGNAL_MATCH_DATA          = 1 << 4,
-  this.G_SIGNAL_MATCH_UNBLOCKED     = 1 << 5
-
+  this.G_SIGNAL_MATCH_ID            = 1 << 0;
+  this.G_SIGNAL_MATCH_DETAIL        = 1 << 1;
+  this.G_SIGNAL_MATCH_CLOSURE       = 1 << 2;
+  this.G_SIGNAL_MATCH_FUNC          = 1 << 3;
+  this.G_SIGNAL_MATCH_DATA          = 1 << 4;
+  this.G_SIGNAL_MATCH_UNBLOCKED     = 1 << 5;
   this.gpointer = ctypes.voidptr_t;
   this.gulong = ctypes.unsigned_long;
   this.guint = ctypes.unsigned_int;
@@ -97,9 +96,11 @@ function gobject_defines(lib) {
   this.gsize = ctypes.unsigned_long;
   this.GCallback = ctypes.voidptr_t;
   this.GClosureNotify = this.gpointer;
-  this.GConnectFlags = this.guint;
   this.GFunc = ctypes.void_t.ptr;
   this.GList = ctypes.StructType("GList");
+  this.GConnectFlags = this.guint; // enum
+  this.G_CONNECT_AFTER   = 1 << 0;
+  this.G_CONNECT_SWAPPED = 1 << 1;
 
   this.GType = this.gsize;
   this.GData = ctypes.StructType("GData");
@@ -133,7 +134,10 @@ function gobject_defines(lib) {
 
   this.g_signal_connect = function(instance, detailed_signal, handler, data) {
     return this.g_signal_connect_data(instance, detailed_signal, handler, data, null, 0);
-  }
+  };
+  this.g_signal_connect_after = function(instance, detailed_signal, handler, data) {
+    return this.g_signal_connect_data(instance, detailed_signal, handler, data, null, this.G_CONNECT_AFTER);
+  };
 
   lib.lazy_bind("g_object_unref", ctypes.void_t, this.gpointer);
   lib.lazy_bind("g_list_free", ctypes.void_t, this.GList.ptr);
diff --git a/src/modules/gtk2/FiretrayWindow.jsm b/src/modules/gtk2/FiretrayWindow.jsm
index 068d490..0dde823 100644
--- a/src/modules/gtk2/FiretrayWindow.jsm
+++ b/src/modules/gtk2/FiretrayWindow.jsm
@@ -203,10 +203,25 @@ firetray.Window = {
     LOG("restored WindowState: " + firetray.Handler.windows[xid].chromeWin.windowState);
   },
 
+  // http://www.gtkforums.com/viewtopic.php?t=1624
   onWindowState: function(gtkWidget, gdkEventState, userData){
-    // LOG("window-state-event");
-    // if(event->new_window_state & GDK_WINDOW_STATE_ICONIFIED){
-    let stopPropagation = true;
+    LOG("window-state-event: "+gdkEventState.contents.new_window_state);
+
+    if (gdkEventState.contents.new_window_state & gdk.GDK_WINDOW_STATE_ICONIFIED) {
+      let xid = firetray.Window.getXIDFromGtkWidget(gtkWidget);
+      LOG(xid+" iconified: "+gdkEventState.contents.changed_mask+" "+gdkEventState.contents.new_window_state);
+
+      // let hides_on_minimize = firetray.Utils.prefService.getBoolPref('hides_on_minimize');
+      // let hides_single_window = firetray.Utils.prefService.getBoolPref('hides_single_window');
+      // if (hides_on_minimize) {
+      //   if (hides_single_window) {
+      //     firetray.Handler.hideSingleWindow(xid);
+      //   } else
+      //     firetray.Handler.hideAllWindows();
+      // }
+    }
+
+    let stopPropagation = true; // not usefull
     return stopPropagation;
   }
 
@@ -296,7 +311,7 @@ firetray.Handler.getWindowIdFromChromeWindow = firetray.Window.getXIDFromChromeW
 firetray.Handler.unregisterWindow = function(win) {
   LOG("unregister window");
 
-  let xid = firetray.Window.getWinXIDFromChromeWindow(win);
+  let xid = firetray.Window.getXIDFromChromeWindow(win);
   return this._unregisterWindowByXID(xid);
 };
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/firetray.git



More information about the Pkg-mozext-commits mailing list