[gnome-shell] boxpointer: Change 'animate' parameter on show/hide to a bitmask
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] boxpointer: Change 'animate' parameter on show/hide to a bitmask
- Date: Fri, 6 Jul 2012 14:16:40 +0000 (UTC)
commit cf6f1498889ece1e102b27508873547ef6c17a4a
Author: Rui Matos <tiagomatos gmail com>
Date: Fri Jun 15 19:16:10 2012 +0200
boxpointer: Change 'animate' parameter on show/hide to a bitmask
This allows us to have more control of the animation.
https://bugzilla.gnome.org/show_bug.cgi?id=678337
js/ui/boxpointer.js | 27 +++++++++++++++++++++------
js/ui/keyboard.js | 4 ++--
js/ui/messageTray.js | 4 ++--
js/ui/popupMenu.js | 32 ++++++++++++++++----------------
4 files changed, 41 insertions(+), 26 deletions(-)
---
diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js
index d09c8bf..c83c31e 100644
--- a/js/ui/boxpointer.js
+++ b/js/ui/boxpointer.js
@@ -9,6 +9,13 @@ const Shell = imports.gi.Shell;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
+const PopupAnimation = {
+ NONE: 0,
+ SLIDE: 1 << 0,
+ FADE: 1 << 1,
+ FULL: ~0,
+};
+
const POPUP_ANIMATION_TIME = 0.15;
/**
@@ -69,11 +76,16 @@ const BoxPointer = new Lang.Class({
show: function(animate, onComplete) {
let themeNode = this.actor.get_theme_node();
let rise = themeNode.get_length('-arrow-rise');
+ let animationTime = (animate & PopupAnimation.FULL) ? POPUP_ANIMATION_TIME : 0;
+
+ if (animate & PopupAnimation.FADE)
+ this.opacity = 0;
+ else
+ this.opacity = 255;
- this.opacity = 0;
this.actor.show();
- if (animate) {
+ if (animate & PopupAnimation.SLIDE) {
switch (this._arrowSide) {
case St.Side.TOP:
this.yOffset = -rise;
@@ -99,7 +111,7 @@ const BoxPointer = new Lang.Class({
if (onComplete)
onComplete();
}),
- time: POPUP_ANIMATION_TIME });
+ time: animationTime });
},
hide: function(animate, onComplete) {
@@ -107,8 +119,10 @@ const BoxPointer = new Lang.Class({
let yOffset = 0;
let themeNode = this.actor.get_theme_node();
let rise = themeNode.get_length('-arrow-rise');
+ let fade = (animate & PopupAnimation.FADE);
+ let animationTime = (animate & PopupAnimation.FULL) ? POPUP_ANIMATION_TIME : 0;
- if (animate) {
+ if (animate & PopupAnimation.SLIDE) {
switch (this._arrowSide) {
case St.Side.TOP:
yOffset = rise;
@@ -127,13 +141,14 @@ const BoxPointer = new Lang.Class({
this._muteInput();
- Tweener.addTween(this, { opacity: 0,
+ Tweener.addTween(this, { opacity: fade ? 0 : 255,
xOffset: xOffset,
yOffset: yOffset,
transition: 'linear',
- time: POPUP_ANIMATION_TIME,
+ time: animationTime,
onComplete: Lang.bind(this, function () {
this.actor.hide();
+ this.opacity = 0;
this.xOffset = 0;
this.yOffset = 0;
if (onComplete)
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index a5cd199..645e41e 100644
--- a/js/ui/keyboard.js
+++ b/js/ui/keyboard.js
@@ -175,7 +175,7 @@ const Key = new Lang.Class({
this.actor.fake_release();
this._boxPointer.actor.raise_top();
this._boxPointer.setPosition(this.actor, 0.5);
- this._boxPointer.show(true);
+ this._boxPointer.show(BoxPointer.PopupAnimation.FULL);
this.actor.set_hover(false);
if (!this._grabbed) {
Main.pushModal(this.actor);
@@ -186,7 +186,7 @@ const Key = new Lang.Class({
} else {
if (this._grabbed)
this._ungrab();
- this._boxPointer.hide(true);
+ this._boxPointer.hide(BoxPointer.PopupAnimation.FULL);
}
}
});
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index 51d4be3..03b9b08 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -2477,7 +2477,7 @@ const MessageTray = new Lang.Class({
this._summaryBoxPointerState = State.SHOWING;
this._clickedSummaryItem.actor.add_style_pseudo_class('selected');
- this._summaryBoxPointer.show(true, Lang.bind(this, function() {
+ this._summaryBoxPointer.show(BoxPointer.PopupAnimation.FULL, Lang.bind(this, function() {
this._summaryBoxPointerState = State.SHOWN;
}));
},
@@ -2531,7 +2531,7 @@ const MessageTray = new Lang.Class({
this._summaryBoxPointer.actor.hide();
this._hideSummaryBoxPointerCompleted();
} else {
- this._summaryBoxPointer.hide(true, Lang.bind(this, this._hideSummaryBoxPointerCompleted));
+ this._summaryBoxPointer.hide(BoxPointer.PopupAnimation.FULL, Lang.bind(this, this._hideSummaryBoxPointerCompleted));
}
},
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index 873e339..54447ca 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -942,7 +942,7 @@ const PopupMenuBase = new Lang.Class({
_connectSubMenuSignals: function(object, menu) {
object._subMenuActivateId = menu.connect('activate', Lang.bind(this, function() {
this.emit('activate');
- this.close(true);
+ this.close(BoxPointer.PopupAnimation.FULL);
}));
object._subMenuActiveChangeId = menu.connect('active-changed', Lang.bind(this, function(submenu, submenuItem) {
if (this._activeMenuItem && this._activeMenuItem != submenuItem)
@@ -977,7 +977,7 @@ const PopupMenuBase = new Lang.Class({
}));
menuItem._activateId = menuItem.connect('activate', Lang.bind(this, function (menuItem, event) {
this.emit('activate', menuItem);
- this.close(true);
+ this.close(BoxPointer.PopupAnimation.FULL);
}));
// the weird name is to avoid a conflict with some random property
// the menuItem may have, called destroyId
@@ -1050,7 +1050,7 @@ const PopupMenuBase = new Lang.Class({
menuItem._closingId = this.connect('open-state-changed',
function(self, open) {
if (!open)
- menuItem.close(false);
+ menuItem.close(BoxPointer.PopupAnimation.FADE);
});
menuItem.connect('destroy', Lang.bind(this, function() {
menuItem.disconnect(menuItem._subMenuActivateId);
@@ -1067,7 +1067,7 @@ const PopupMenuBase = new Lang.Class({
this._connectItemSignals(menuItem);
menuItem._closingId = this.connect('open-state-changed', function(self, open) {
if (!open)
- menuItem.menu.close(false);
+ menuItem.menu.close(BoxPointer.PopupAnimation.FADE);
});
} else if (menuItem instanceof PopupSeparatorMenuItem) {
this._connectItemSignals(menuItem);
@@ -1154,9 +1154,9 @@ const PopupMenuBase = new Lang.Class({
toggle: function() {
if (this.isOpen)
- this.close(true);
+ this.close(BoxPointer.PopupAnimation.FULL);
else
- this.open(true);
+ this.open(BoxPointer.PopupAnimation.FULL);
},
destroy: function() {
@@ -1217,7 +1217,7 @@ const PopupMenu = new Lang.Class({
_onKeyPressEvent: function(actor, event) {
if (event.get_key_symbol() == Clutter.Escape) {
- this.close(true);
+ this.close(BoxPointer.PopupAnimation.FULL);
return true;
}
@@ -1419,7 +1419,7 @@ const PopupSubMenu = new Lang.Class({
// Move focus back to parent menu if the user types Left.
if (this.isOpen && event.get_key_symbol() == Clutter.KEY_Left) {
- this.close(true);
+ this.close(BoxPointer.PopupAnimation.FULL);
this.sourceActor._delegate.setActive(true);
return true;
}
@@ -1501,7 +1501,7 @@ const PopupSubMenuMenuItem = new Lang.Class({
let symbol = event.get_key_symbol();
if (symbol == Clutter.KEY_Right) {
- this.menu.open(true);
+ this.menu.open(BoxPointer.PopupAnimation.FULL);
this.menu.actor.navigate_focus(null, Gtk.DirectionType.DOWN, false);
return true;
} else if (symbol == Clutter.KEY_Left && this.menu.isOpen) {
@@ -1513,7 +1513,7 @@ const PopupSubMenuMenuItem = new Lang.Class({
},
activate: function(event) {
- this.menu.open(true);
+ this.menu.open(BoxPointer.PopupAnimation.FULL);
},
_onButtonReleaseEvent: function(actor) {
@@ -1540,7 +1540,7 @@ const PopupComboMenu = new Lang.Class({
_onKeyPressEvent: function(actor, event) {
if (event.get_key_symbol() == Clutter.Escape) {
- this.close(true);
+ this.close(BoxPointer.PopupAnimation.FULL);
return true;
}
@@ -2194,11 +2194,11 @@ const PopupMenuManager = new Lang.Class({
let oldMenu = this._activeMenu;
this._activeMenu = null;
for (let i = this._menuStack.length - 1; i >= 0; i--)
- this._menuStack[i].close(false);
- oldMenu.close(false);
- newMenu.open(false);
+ this._menuStack[i].close(BoxPointer.PopupAnimation.FADE);
+ oldMenu.close(BoxPointer.PopupAnimation.FADE);
+ newMenu.open(BoxPointer.PopupAnimation.FADE);
} else
- newMenu.open(true);
+ newMenu.open(BoxPointer.PopupAnimation.FULL);
},
_onMenuSourceEnter: function(menu) {
@@ -2313,6 +2313,6 @@ const PopupMenuManager = new Lang.Class({
_closeMenu: function() {
if (this._activeMenu != null)
- this._activeMenu.close(true);
+ this._activeMenu.close(BoxPointer.PopupAnimation.FULL);
}
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]