shell-info: Use transient notifications

According to the designers, system notifications should be transient;
so now that transient notifications are supported properly, make use
of it instead of using a timeout to remove the associated source.
This commit is contained in:
Florian Müllner 2010-12-16 22:34:39 +01:00
parent 22f4aabadf
commit eef194c3aa

View File

@ -28,7 +28,6 @@ const ANIMATION_TIME = 0.25;
// We split the screen vertically between the dash and the view selector. // We split the screen vertically between the dash and the view selector.
const DASH_SPLIT_FRACTION = 0.1; const DASH_SPLIT_FRACTION = 0.1;
const SHELL_INFO_HIDE_TIMEOUT = 10;
function Source() { function Source() {
this._init(); this._init();
@ -61,14 +60,10 @@ function ShellInfo() {
ShellInfo.prototype = { ShellInfo.prototype = {
_init: function() { _init: function() {
this._source = null; this._source = null;
this._timeoutId = 0;
this._undoCallback = null; this._undoCallback = null;
}, },
_onUndoClicked: function() { _onUndoClicked: function() {
Mainloop.source_remove(this._timeoutId);
this._timeoutId = 0;
if (this._undoCallback) if (this._undoCallback)
this._undoCallback(); this._undoCallback();
this._undoCallback = null; this._undoCallback = null;
@ -77,20 +72,7 @@ ShellInfo.prototype = {
this._source.destroy(); this._source.destroy();
}, },
_onTimeout: function() {
this._timeoutId = 0;
if (this._source)
this._source.destroy();
return false;
},
setMessage: function(text, undoCallback, undoLabel) { setMessage: function(text, undoCallback, undoLabel) {
if (this._timeoutId)
Mainloop.source_remove(this._timeoutId);
this._timeoutId = Mainloop.timeout_add_seconds(SHELL_INFO_HIDE_TIMEOUT,
Lang.bind(this, this._onTimeout));
if (this._source == null) { if (this._source == null) {
this._source = new Source(); this._source = new Source();
this._source.connect('destroy', Lang.bind(this, this._source.connect('destroy', Lang.bind(this,
@ -106,6 +88,8 @@ ShellInfo.prototype = {
else else
notification.update(text, null, { clear: true }); notification.update(text, null, { clear: true });
notification.setTransient(true);
this._undoCallback = undoCallback; this._undoCallback = undoCallback;
if (undoCallback) { if (undoCallback) {
notification.addButton('system-undo', notification.addButton('system-undo',