[Pkg-mozext-commits] [firetray] 237/399: if all windows visible, middle click on the tray icon activates last registered window, shows all windows otherwise.

David Prévot taffit at alioth.debian.org
Tue Oct 29 18:23:50 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 f4431160883da7cb9e64046ed8e97d2e6c60975b
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Sun May 13 16:01:41 2012 +0200

    if all windows visible, middle click on the tray icon activates last registered
    window, shows all windows otherwise.
    
    reverts 97dcbc8c
---
 src/modules/FiretrayHandler.jsm          |    1 +
 src/modules/ctypes/linux/gdk.jsm         |   17 ++++++++++++++++-
 src/modules/ctypes/linux/gtk.jsm         |    1 +
 src/modules/linux/FiretrayStatusIcon.jsm |    6 ++++++
 src/modules/linux/FiretrayWindow.jsm     |   28 +++++++++++++++++++++++-----
 5 files changed, 47 insertions(+), 6 deletions(-)

diff --git a/src/modules/FiretrayHandler.jsm b/src/modules/FiretrayHandler.jsm
index b82e2a1..5dbb3fe 100644
--- a/src/modules/FiretrayHandler.jsm
+++ b/src/modules/FiretrayHandler.jsm
@@ -184,6 +184,7 @@ firetray.Handler = {
   hideSingleWindow: function(winId) {},
   showSingleWindow: function(winId) {},
   showHideAllWindows: function() {},
+  activateLastWindow: function(gtkStatusIcon, gdkEvent, userData) {},
 
   showAllWindows: function() {
     F.LOG("showAllWindows");
diff --git a/src/modules/ctypes/linux/gdk.jsm b/src/modules/ctypes/linux/gdk.jsm
index 19535f0..1bb29f0 100644
--- a/src/modules/ctypes/linux/gdk.jsm
+++ b/src/modules/ctypes/linux/gdk.jsm
@@ -219,9 +219,24 @@ function gdk_defines(lib) {
     { "state": gobject.guint },
     { "direction": this.GdkScrollDirection },
     { "device": this.GdkDevice.ptr },
-    { "x_root": gobject.gdouble }, { "y_root": gobject.gdouble }
+    { "x_root": gobject.gdouble },
+    { "y_root": gobject.gdouble }
   ]);
   this.GdkAtom = ctypes.StructType("GdkAtom");
+  this.GdkEventButton = ctypes.StructType("GdkEventButton", [
+    { "type": this.GdkEventType },
+    { "window": this.GdkWindow.ptr },
+    { "send_event": gobject.gint8 },
+    { "time": gobject.guint32 },
+    { "x": gobject.gdouble },
+    { "y": gobject.gdouble },
+    { "axes": gobject.gdouble.ptr },
+    { "state": gobject.guint },
+    { "button": gobject.guint },
+    { "device": this.GdkDevice.ptr },
+    { "x_root": gobject.gdouble },
+    { "y_root": gobject.gdouble }
+  ]);
 
   this.GdkFilterFunc_t = ctypes.FunctionType(
     ctypes.default_abi, this.GdkFilterReturn,
diff --git a/src/modules/ctypes/linux/gtk.jsm b/src/modules/ctypes/linux/gtk.jsm
index 5dfd936..8b52561 100644
--- a/src/modules/ctypes/linux/gtk.jsm
+++ b/src/modules/ctypes/linux/gtk.jsm
@@ -67,6 +67,7 @@ function gtk_defines(lib) {
   this.GCallbackOnScroll_t = ctypes.FunctionType(
     ctypes.default_abi, gobject.gboolean,
     [this.GtkStatusIcon.ptr, gdk.GdkEvent.ptr, gobject.gpointer]).ptr;
+  this.GCallbackStatusIconMiddleClick_t = this.GCallbackOnScroll_t;
   this.GCallbackGenericEvent_t = ctypes.FunctionType(
     ctypes.default_abi, gobject.gboolean,
     [this.GtkWidget.ptr, gdk.GdkEvent.ptr, gobject.gpointer]).ptr;
diff --git a/src/modules/linux/FiretrayStatusIcon.jsm b/src/modules/linux/FiretrayStatusIcon.jsm
index f6b6660..5824f83 100644
--- a/src/modules/linux/FiretrayStatusIcon.jsm
+++ b/src/modules/linux/FiretrayStatusIcon.jsm
@@ -142,6 +142,12 @@ firetray.StatusIcon = {
     let handlerId = gobject.g_signal_connect(firetray.StatusIcon.trayIcon,
       "activate", firetray.StatusIcon.callbacks.iconActivate, null);
     F.LOG("g_connect activate="+handlerId);
+
+    this.callbacks.iconMiddleClick = gtk.GCallbackStatusIconMiddleClick_t(
+      firetray.Handler.activateLastWindow);
+    handlerId = gobject.g_signal_connect(firetray.StatusIcon.trayIcon,
+      "button-press-event", firetray.StatusIcon.callbacks.iconMiddleClick, null);
+    F.LOG("g_connect middleClick="+handlerId);
   },
 
   onScroll: function(icon, event, data) {
diff --git a/src/modules/linux/FiretrayWindow.jsm b/src/modules/linux/FiretrayWindow.jsm
index 3b29f91..3313461 100644
--- a/src/modules/linux/FiretrayWindow.jsm
+++ b/src/modules/linux/FiretrayWindow.jsm
@@ -581,11 +581,8 @@ firetray.Handler.showHideAllWindows = function(gtkStatusIcon, userData) {
   F.LOG("windowsCount="+firetray.Handler.windowsCount);
   let visibilityRate = firetray.Handler.visibleWindowsCount/firetray.Handler.windowsCount;
   F.LOG("visibilityRate="+visibilityRate);
-  if (visibilityRate === 1) {
-    for(var key in firetray.Handler.windows);
-    firetray.Window.activate(key);
-  } else if ((0.5 < visibilityRate) && (visibilityRate < 1)
-             || visibilityRate === 0) { // TODO: should be configurable
+  if ((0.5 < visibilityRate) && (visibilityRate < 1)
+      || visibilityRate === 0) { // TODO: should be configurable
     firetray.Handler.showAllWindows();
   } else {
     firetray.Handler.hideAllWindows();
@@ -595,6 +592,27 @@ firetray.Handler.showHideAllWindows = function(gtkStatusIcon, userData) {
   return stopPropagation;
 };
 
+firetray.Handler.activateLastWindow = function(gtkStatusIcon, gdkEvent, userData) {
+  F.LOG("activateLastWindow");
+
+  let gdkEventButton = ctypes.cast(gdkEvent, gdk.GdkEventButton.ptr);
+  if (gdkEventButton.contents.button === 2 && gdkEventButton.contents.type === gdk.GDK_BUTTON_PRESS) {
+    F.LOG("MIDDLE CLICK");
+
+    let visibilityRate = firetray.Handler.visibleWindowsCount/firetray.Handler.windowsCount;
+    F.LOG("visibilityRate="+visibilityRate);
+    if (visibilityRate === 1) {
+      for(var key in firetray.Handler.windows);
+      firetray.Window.activate(key);
+    } else {
+      firetray.Handler.showAllWindows();
+    }
+  }
+
+  let stopPropagation = false;
+  return stopPropagation;
+};
+
 
 /**
  * init X11 Display and handled XAtoms.

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