diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/daemon/daemon.c | 48 |
1 files changed, 19 insertions, 29 deletions
diff --git a/src/daemon/daemon.c b/src/daemon/daemon.c index 473a598..7f4516f 100644 --- a/src/daemon/daemon.c +++ b/src/daemon/daemon.c @@ -367,11 +367,11 @@ _gtk_get_monitor_num (GdkMonitor *monitor) return -1; } -static void create_stack_for_monitor(NotifyDaemon* daemon, GdkScreen* screen, GdkMonitor *monitor_num) +static void create_stack_for_monitor(NotifyDaemon* daemon, GdkScreen* screen, GdkMonitor *monitor_num, int num) { NotifyScreen* nscreen = daemon->screen; - nscreen->stacks[_gtk_get_monitor_num(monitor_num)] = notify_stack_new(daemon, screen, monitor_num, daemon->stack_location); + nscreen->stacks[num] = notify_stack_new(daemon, screen, monitor_num, daemon->stack_location); } static void on_screen_monitors_changed(GdkScreen* screen, NotifyDaemon* daemon) @@ -461,7 +461,7 @@ static void create_stacks_for_screen(NotifyDaemon* daemon, GdkScreen *screen) for (i = 0; i < nscreen->n_stacks; i++) { - create_stack_for_monitor(daemon, screen, gdk_display_get_monitor (display, i)); + create_stack_for_monitor(daemon, screen, gdk_display_get_monitor (display, i), i); } } @@ -1840,17 +1840,10 @@ static gboolean notify_daemon_notify_handler(NotifyDaemonNotifications *object, monitor_id = gdk_display_get_monitor (gdk_display_get_default(), (int) daemon->screen->n_stacks - 1); } - if (monitor_id != NULL && _gtk_get_monitor_num (monitor_id) >= daemon->screen->n_stacks) + int mon_num = monitor_id != NULL ? _gtk_get_monitor_num (monitor_id) : -1; + if (mon_num >= 0 && mon_num < (int) daemon->screen->n_stacks) { - /* screw it - dump it on the last one we'll get - a monitors-changed signal soon enough*/ - monitor_id = gdk_display_get_monitor (gdk_display_get_default(), (int) daemon->screen->n_stacks - 1); - } - - /* If we still don't have a valid monitor, something is seriously wrong */ - if (monitor_id != NULL && daemon->screen->n_stacks > 0) - { - notify_stack_add_window (daemon->screen->stacks[_gtk_get_monitor_num (monitor_id)], nw, new_notification); + notify_stack_add_window (daemon->screen->stacks[mon_num], nw, new_notification); } } @@ -1950,25 +1943,22 @@ static gboolean notify_daemon_close_notification_handler(NotifyDaemonNotificatio static gboolean notify_daemon_get_capabilities( NotifyDaemonNotifications *object, GDBusMethodInvocation *invocation) { - GVariantBuilder *builder; - GVariant *value; - - builder = g_variant_builder_new (G_VARIANT_TYPE ("as")); - g_variant_builder_add (builder, "s", "actions"); - g_variant_builder_add (builder, "s", "action-icons"); - g_variant_builder_add (builder, "s", "body"); - g_variant_builder_add (builder, "s", "body-hyperlinks"); - g_variant_builder_add (builder, "s", "body-markup"); - g_variant_builder_add (builder, "s", "icon-static"); - g_variant_builder_add (builder, "s", "sound"); - g_variant_builder_add (builder, "s", "persistence"); - value = g_variant_new ("as", builder); - g_variant_builder_unref (builder); + static const gchar *const capabilities[] = { + "actions", + "action-icons", + "body", + "body-hyperlinks", + "body-markup", + "icon-static", + "sound", + "persistence", + NULL + }; + notify_daemon_notifications_complete_get_capabilities ( object, invocation, - (const gchar* const *)g_variant_dup_strv (value, NULL)); - g_variant_unref (value); + capabilities); return TRUE; } |
