[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