[polari/wip/fmuellner/window-experiments: 15/32] chatView: Only show notifications for the active window
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [polari/wip/fmuellner/window-experiments: 15/32] chatView: Only show notifications for the active window
- Date: Tue, 19 Jul 2016 16:51:08 +0000 (UTC)
commit 53a727cc1906341da0b90d68b03ff89095e3814f
Author: Florian Müllner <fmuellner gnome org>
Date: Fri Jul 15 21:17:29 2016 +0200
chatView: Only show notifications for the active window
When we allow opening additional windows, the condition for showing
a notification may be true for multiple views representing the same
room, but it doesn't make sense to notify more than once for the
same message. To ensure that, restrict notifications to the app's
:active-window. Assuming that this is the only window that may have
toplevel focus, this should work correctly in all cases (i.e. we
don't suppress notifications that should be shown or show ones that
should not).
src/chatView.js | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
---
diff --git a/src/chatView.js b/src/chatView.js
index 975428d..2027daf 100644
--- a/src/chatView.js
+++ b/src/chatView.js
@@ -1212,8 +1212,6 @@ const ChatView = new Lang.Class({
_insertTpMessage: function(tpMessage) {
let message = this._createMessage(tpMessage);
- let shouldHighlight = this._room.should_highlight_message(message.nick,
- message.text);
this._ensureNewLine();
@@ -1221,8 +1219,12 @@ const ChatView = new Lang.Class({
this._insertMessage(iter, message, this._state);
this._trackContact(tpMessage.sender);
- if (shouldHighlight &&
- !(this._toplevelFocus && this._active)) {
+ let highlight = this._room.should_highlight_message(message.nick,
+ message.text);
+ let visible = this._toplevelFocus && this._active && this._autoscroll;
+ let toplevelActive = this.get_toplevel() == this._app.active_window;
+
+ if (highlight && !visible && toplevelActive) {
let summary = '%s %s'.format(this._room.display_name, message.nick);
let notification = new Gio.Notification();
notification.set_title(summary);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]