messageTray: Focusing the text entry should force chats to stay open

https://bugzilla.gnome.org/show_bug.cgi?id=682236
This commit is contained in:
Debarshi Ray 2012-09-05 18:59:50 +02:00
parent ec52928736
commit 5030d59fcc
2 changed files with 13 additions and 0 deletions

View File

@ -756,6 +756,14 @@ const ChatNotification = new Lang.Class({
this._responseEntry.clutter_text.connect('text-changed', Lang.bind(this, this._onEntryChanged)); this._responseEntry.clutter_text.connect('text-changed', Lang.bind(this, this._onEntryChanged));
this.setActionArea(this._responseEntry); this.setActionArea(this._responseEntry);
this._responseEntry.clutter_text.connect('key-focus-in', Lang.bind(this, function() {
this.focused = true;
}));
this._responseEntry.clutter_text.connect('key-focus-out', Lang.bind(this, function() {
this.focused = false;
this.emit('unfocused');
}));
this._oldMaxScrollAdjustment = 0; this._oldMaxScrollAdjustment = 0;
this._createScrollArea(); this._createScrollArea();
this._lastGroup = null; this._lastGroup = null;

View File

@ -318,6 +318,7 @@ const Notification = new Lang.Class({
// 'transient' is a reserved keyword in JS, so we have to use an alternate variable name // 'transient' is a reserved keyword in JS, so we have to use an alternate variable name
this.isTransient = false; this.isTransient = false;
this.expanded = false; this.expanded = false;
this.focused = false;
this.showWhenLocked = false; this.showWhenLocked = false;
this.acknowledged = false; this.acknowledged = false;
this._destroyed = false; this._destroyed = false;
@ -1913,6 +1914,7 @@ const MessageTray = new Lang.Class({
let notificationExpanded = this._notification && this._notification.expanded; let notificationExpanded = this._notification && this._notification.expanded;
let notificationExpired = this._notificationTimeoutId == 0 && let notificationExpired = this._notificationTimeoutId == 0 &&
!(this._notification && this._notification.urgency == Urgency.CRITICAL) && !(this._notification && this._notification.urgency == Urgency.CRITICAL) &&
!(this._notification && this._notification.focused) &&
!this._pointerInTray && !this._pointerInTray &&
!this._locked && !this._locked &&
!(this._pointerInKeyboard && notificationExpanded); !(this._pointerInKeyboard && notificationExpanded);
@ -2125,6 +2127,9 @@ const MessageTray = new Lang.Class({
Lang.bind(this, this._onIdleMonitorWatch)); Lang.bind(this, this._onIdleMonitorWatch));
this._notificationClickedId = this._notification.connect('done-displaying', this._notificationClickedId = this._notification.connect('done-displaying',
Lang.bind(this, this._escapeTray)); Lang.bind(this, this._escapeTray));
this._notification.connect('unfocused', Lang.bind(this, function() {
this._updateState();
}));
this._notificationBin.child = this._notification.actor; this._notificationBin.child = this._notification.actor;
this._notificationWidget.opacity = 0; this._notificationWidget.opacity = 0;