aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2020-12-30 20:22:14 +0100
committerfiaxh <git@lightrise.org>2020-12-30 20:30:35 +0100
commit99e98ac8d97296b0a34351d3bc8b155b0c8fc6db (patch)
treed5274576a0b7cb1257db52937e14e1b0e8a0f6bd
parentc454bd904d1b9641ed333b71e206bd253fb9e9df (diff)
downloaddino-99e98ac8d97296b0a34351d3bc8b155b0c8fc6db.tar.gz
dino-99e98ac8d97296b0a34351d3bc8b155b0c8fc6db.zip
Set window urgency hint independent of notification setting
fixes #960
-rw-r--r--libdino/src/service/notification_events.vala14
-rw-r--r--main/src/ui/application.vala15
-rw-r--r--main/src/ui/notifier_freedesktop.vala9
-rw-r--r--main/src/ui/notifier_gnotifications.vala9
4 files changed, 21 insertions, 26 deletions
diff --git a/libdino/src/service/notification_events.vala b/libdino/src/service/notification_events.vala
index d1e55113..7e99dcf9 100644
--- a/libdino/src/service/notification_events.vala
+++ b/libdino/src/service/notification_events.vala
@@ -10,10 +10,6 @@ public class NotificationEvents : StreamInteractionModule, Object {
public string id { get { return IDENTITY.id; } }
public signal void notify_content_item(ContentItem content_item, Conversation conversation);
- public signal void notify_subscription_request(Conversation conversation);
- public signal void notify_connection_error(Account account, ConnectionManager.ConnectionError error);
- public signal void notify_muc_invite(Account account, Jid room_jid, Jid from_jid, string? password, string? reason);
- public signal void notify_voice_request(Account account, Jid room_jid, Jid from_jid, string nick);
private StreamInteractor stream_interactor;
private NotificationProvider? notifier;
@@ -77,7 +73,10 @@ public class NotificationEvents : StreamInteractionModule, Object {
if (!highlight) return;
}
- notifier.notify_message.begin(message, conversation, conversation_display_name, participant_display_name);
+ notify_content_item(item, conversation);
+ if (notify != Conversation.NotifySetting.OFF) {
+ notifier.notify_message.begin(message, conversation, conversation_display_name, participant_display_name);
+ }
break;
case FileItem.TYPE:
FileTransfer file_transfer = ((FileItem) item).file_transfer;
@@ -87,7 +86,10 @@ public class NotificationEvents : StreamInteractionModule, Object {
if (notify == Conversation.NotifySetting.HIGHLIGHT) return;
if (file_transfer.direction == FileTransfer.DIRECTION_SENT) return;
- notifier.notify_file.begin(file_transfer, conversation, is_image, conversation_display_name, participant_display_name);
+ notify_content_item(item, conversation);
+ if (notify != Conversation.NotifySetting.OFF) {
+ notifier.notify_file.begin(file_transfer, conversation, is_image, conversation_display_name, participant_display_name);
+ }
break;
}
}
diff --git a/main/src/ui/application.vala b/main/src/ui/application.vala
index 008b15c7..29b61357 100644
--- a/main/src/ui/application.vala
+++ b/main/src/ui/application.vala
@@ -28,11 +28,22 @@ public class Dino.Ui.Application : Gtk.Application, Dino.Application {
create_actions();
startup.connect(() => {
- stream_interactor.get_module(NotificationEvents.IDENTITY).register_notification_provider(new GNotificationsNotifier(stream_interactor));
+ NotificationEvents notification_events = stream_interactor.get_module(NotificationEvents.IDENTITY);
+ notification_events.register_notification_provider(new GNotificationsNotifier(stream_interactor));
FreeDesktopNotifier? free_desktop_notifier = FreeDesktopNotifier.try_create(stream_interactor);
if (free_desktop_notifier != null) {
- stream_interactor.get_module(NotificationEvents.IDENTITY).register_notification_provider(free_desktop_notifier);
+ notification_events.register_notification_provider(free_desktop_notifier);
}
+ notification_events.notify_content_item.connect((content_item, conversation) => {
+ // Set urgency hint also if (normal) notifications are disabled
+ // Don't set urgency hint in GNOME, produces "Window is active" notification
+ var desktop_env = Environment.get_variable("XDG_CURRENT_DESKTOP");
+ if (desktop_env == null || !desktop_env.down().contains("gnome")) {
+ if (this.active_window != null) {
+ this.active_window.urgency_hint = true;
+ }
+ }
+ });
});
activate.connect(() => {
diff --git a/main/src/ui/notifier_freedesktop.vala b/main/src/ui/notifier_freedesktop.vala
index 22b104bc..00ba0d06 100644
--- a/main/src/ui/notifier_freedesktop.vala
+++ b/main/src/ui/notifier_freedesktop.vala
@@ -107,15 +107,6 @@ public class Dino.Ui.FreeDesktopNotifier : NotificationProvider, Object {
} catch (Error e) {
warning("Failed showing content item notification: %s", e.message);
}
-
- // Don't set urgency hint in GNOME, produces "Window is active" notification
- var desktop_env = Environment.get_variable("XDG_CURRENT_DESKTOP");
- if (desktop_env == null || !desktop_env.down().contains("gnome")) {
- var app = (GLib.Application.get_default() as Application);
- if (app.active_window != null) {
- app.active_window.urgency_hint = true;
- }
- }
}
public async void notify_subscription_request(Conversation conversation) {
diff --git a/main/src/ui/notifier_gnotifications.vala b/main/src/ui/notifier_gnotifications.vala
index a7aab753..31d1ffa3 100644
--- a/main/src/ui/notifier_gnotifications.vala
+++ b/main/src/ui/notifier_gnotifications.vala
@@ -63,15 +63,6 @@ namespace Dino.Ui {
if (active_conversation_ids != null) {
active_conversation_ids.add(conversation.id.to_string());
}
-
- // Don't set urgency hint in GNOME, produces "Window is active" notification
- var desktop_env = Environment.get_variable("XDG_CURRENT_DESKTOP");
- if (desktop_env == null || !desktop_env.down().contains("gnome")) {
- var app = (GLib.Application.get_default() as Application);
- if (app.active_window != null) {
- app.active_window.urgency_hint = true;
- }
- }
}
public async void notify_subscription_request(Conversation conversation) {