[Pkg-mozext-commits] [firetray] 315/399: fix chat icon blink forever with gnome-shell 3.4.1 (#61)

David Prévot taffit at alioth.debian.org
Tue Oct 29 18:24:05 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 5d9e0b4ef873f6d76d82f6bd34147883d1b1afb8
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Mon Sep 10 13:34:48 2012 +0200

    fix chat icon blink forever with gnome-shell 3.4.1 (#61)
---
 src/modules/FiretrayChat.jsm                 |   15 +++++++++------
 src/modules/linux/FiretrayChatStatusIcon.jsm |    4 +++-
 src/modules/linux/FiretrayWindow.jsm         |   12 ++++--------
 3 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/src/modules/FiretrayChat.jsm b/src/modules/FiretrayChat.jsm
index c3d5361..b9cd29c 100644
--- a/src/modules/FiretrayChat.jsm
+++ b/src/modules/FiretrayChat.jsm
@@ -87,12 +87,12 @@ firetray.Chat = {
     }
   },
 
-  stopIconBlinkingMaybe: function() {
+  stopIconBlinkingMaybe: function(xid) {
     log.debug("acknowledgeOnFocus.must="+this.acknowledgeOnFocus.must);
     if (!this.acknowledgeOnFocus.must) return;
 
     let convIsActiveTabInActiveWin = this.isConvActiveTabInActiveWindow(
-      this.acknowledgeOnFocus.conv);
+      this.acknowledgeOnFocus.conv, xid);
     log.debug("convIsActiveTabInActiveWin="+convIsActiveTabInActiveWin);
 
     if (this.acknowledgeOnFocus.must && convIsActiveTabInActiveWin) {
@@ -101,14 +101,17 @@ firetray.Chat = {
     }
   },
 
-  isConvActiveTabInActiveWindow: function(conv) {
-    let activeWin = firetray.Handler.findActiveWindow(),
-        activeChatTab = null;
+  isConvActiveTabInActiveWindow: function(conv, xid) {
+    let activeWin = xid || firetray.Handler.findActiveWindow();
     if (!firetray.Handler.windows[activeWin]) return false;
 
+    let activeChatTab = null;
     activeChatTab = this.findActiveChatTab(activeWin);
+
     let convNameRegex = new RegExp(" - "+conv.name+"$");
-    return activeChatTab ? convNameRegex.test(activeChatTab.title) : false;
+    let title = activeChatTab && activeChatTab.title;
+    log.debug("conv.name='"+conv.name+"' title="+title);
+    return convNameRegex.test(title);
   },
 
   findActiveChatTab: function(xid) {
diff --git a/src/modules/linux/FiretrayChatStatusIcon.jsm b/src/modules/linux/FiretrayChatStatusIcon.jsm
index ba5b541..caea80f 100644
--- a/src/modules/linux/FiretrayChatStatusIcon.jsm
+++ b/src/modules/linux/FiretrayChatStatusIcon.jsm
@@ -105,7 +105,9 @@ firetray.ChatStatusIcon = {
   // (http://sourceforge.net/tracker/index.php?func=detail&aid=3190205&group_id=35398&atid=413960)
   onFocusIn: function(widget, event, data) {
     log.debug("onFocusIn");
-    firetray.Chat.stopIconBlinkingMaybe();
+    let xid = firetray.Window.getXIDFromGtkWidget(widget);
+    log.debug("xid="+xid);
+    firetray.Chat.stopIconBlinkingMaybe(xid);
   }
 
   // FIXME: TODO: onclick/activate -> chatHandler.showCurrentConversation()
diff --git a/src/modules/linux/FiretrayWindow.jsm b/src/modules/linux/FiretrayWindow.jsm
index 684beab..9fa411d 100644
--- a/src/modules/linux/FiretrayWindow.jsm
+++ b/src/modules/linux/FiretrayWindow.jsm
@@ -147,13 +147,8 @@ firetray.Window = {
   },
 
   getXIDFromGtkWidget: function(gtkWid) {
-    try {
-      let gdkWin = gtk.gtk_widget_get_window(gtkWid);
-      return gdk.gdk_x11_drawable_get_xid(ctypes.cast(gdkWin, gdk.GdkDrawable.ptr));
-    } catch (x) {
-      log.error(x);
-    }
-    return null;
+    let gdkWin = gtk.gtk_widget_get_window(gtkWid);
+    return gdk.gdk_x11_drawable_get_xid(ctypes.cast(gdkWin, gdk.GdkDrawable.ptr));
   },
 
   addrPointedByInHex: function(ptr) {
@@ -672,7 +667,8 @@ firetray.Handler.activateLastWindow = function(gtkStatusIcon, gdkEvent, userData
   return stopPropagation;
 };
 
-/* gtk_window_is_active() not reliable */
+/* NOTE: gtk_window_is_active() not reliable, and _NET_ACTIVE_WINDOW may not
+   always be set before 'focus-in-event' (gnome-shell 3.4.1) */
 firetray.Handler.findActiveWindow = function() {
   let rootWin = x11.XDefaultRootWindow(x11.current.Display);
   let [propsFound, nitems] =

-- 
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