[gnome-shell] Dash: don't show a tooltip over an application with a popup menu
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] Dash: don't show a tooltip over an application with a popup menu
- Date: Mon, 26 Aug 2013 11:53:06 +0000 (UTC)
commit 1b206fe94cf0165668027c2aa452f7263cdabb1d
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Sun Aug 18 16:20:22 2013 +0200
Dash: don't show a tooltip over an application with a popup menu
If the popup menu associated with the application icon is open,
make sure that the tooltip is hidden.
https://bugzilla.gnome.org/show_bug.cgi?id=705611
js/ui/appDisplay.js | 7 ++++++-
js/ui/dash.js | 18 +++++++++++++-----
2 files changed, 19 insertions(+), 6 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 9132d18..4520bdf 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -878,6 +878,7 @@ const AppIcon = new Lang.Class({
this.actor.set_hover(true);
this._menu.popup();
this._menuManager.ignoreRelease();
+ this.emit('sync-tooltip');
return false;
},
@@ -924,7 +925,11 @@ const AppIcon = new Lang.Class({
// we show as the item is being dragged.
getDragActorSource: function() {
return this.icon.icon;
- }
+ },
+
+ shouldShowTooltip: function() {
+ return this.actor.hover && (!this._menu || !this._menu.isOpen);
+ },
});
Signals.addSignalMethods(AppIcon.prototype);
diff --git a/js/ui/dash.js b/js/ui/dash.js
index 498bd7a..03ceb82 100644
--- a/js/ui/dash.js
+++ b/js/ui/dash.js
@@ -502,15 +502,21 @@ const Dash = new Lang.Class({
Main.queueDeferredWork(this._workId);
},
- _hookUpLabel: function(item) {
+ _hookUpLabel: function(item, appIcon) {
item.child.connect('notify::hover', Lang.bind(this, function() {
- this._onHover(item);
+ this._syncLabel(item, appIcon);
}));
Main.overview.connect('hiding', Lang.bind(this, function() {
this._labelShowing = false;
item.hideLabel();
}));
+
+ if (appIcon) {
+ appIcon.connect('sync-tooltip', Lang.bind(this, function() {
+ this._syncLabel(item, appIcon);
+ }));
+ }
},
_createAppItem: function(app) {
@@ -539,7 +545,7 @@ const Dash = new Lang.Class({
item.setLabelText(app.get_name());
appIcon.icon.setIconSize(this.iconSize);
- this._hookUpLabel(item);
+ this._hookUpLabel(item, appIcon);
return item;
},
@@ -557,8 +563,10 @@ const Dash = new Lang.Class({
}
},
- _onHover: function (item) {
- if (item.child.get_hover()) {
+ _syncLabel: function (item, appIcon) {
+ let shouldShow = appIcon ? appIcon.shouldShowTooltip() : item.child.get_hover();
+
+ if (shouldShow) {
if (this._showLabelTimeoutId == 0) {
let timeout = this._labelShowing ? 0 : DASH_ITEM_HOVER_TIMEOUT;
this._showLabelTimeoutId = Mainloop.timeout_add(timeout,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]