From 873c72216713553e7b94d061de9aafbf24cac2ae Mon Sep 17 00:00:00 2001 From: William Wold Date: Mon, 17 Jun 2019 20:59:45 +0000 Subject: Wayland support for libegg --- mate-panel/libegg/eggdesktopfile.c | 54 ++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 14 deletions(-) (limited to 'mate-panel/libegg/eggdesktopfile.c') diff --git a/mate-panel/libegg/eggdesktopfile.c b/mate-panel/libegg/eggdesktopfile.c index 84e611f7..5e069770 100644 --- a/mate-panel/libegg/eggdesktopfile.c +++ b/mate-panel/libegg/eggdesktopfile.c @@ -31,9 +31,12 @@ #include #include -#include #include +#ifdef HAVE_X11 +#include +#endif + struct EggDesktopFile { GKeyFile *key_file; char *source; @@ -909,6 +912,7 @@ parse_link (EggDesktopFile *desktop_file, return TRUE; } +#ifdef HAVE_X11 static char * start_startup_notification (GdkDisplay *display, EggDesktopFile *desktop_file, @@ -922,6 +926,8 @@ start_startup_notification (GdkDisplay *display, char *description, *wmclass; char *screen_str, *workspace_str; + g_assert(GDK_IS_X11_DISPLAY (display)); + if (g_key_file_has_key (desktop_file->key_file, EGG_DESKTOP_FILE_GROUP, EGG_DESKTOP_FILE_KEY_STARTUP_NOTIFY, @@ -1019,6 +1025,7 @@ set_startup_notification_timeout (GdkDisplay *display, g_timeout_add_seconds (EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH, startup_notification_timeout, sn_data); } +#endif // HAVE_X11 static GPtrArray * array_putenv (GPtrArray *env, char *variable) @@ -1072,7 +1079,7 @@ egg_desktop_file_launchv (EggDesktopFile *desktop_file, EggDesktopFileLaunchOption option; GSList *translated_documents = NULL, *docs = NULL; char *command, **argv; - int argc, i, screen_num; + int argc, i; gboolean success, current_success; GdkDisplay *display; char *startup_id; @@ -1184,7 +1191,6 @@ egg_desktop_file_launchv (EggDesktopFile *desktop_file, display = gdk_display_get_default (); screen = gdk_display_get_default_screen (display); } - screen_num = gdk_x11_screen_get_screen_number (screen); translated_documents = translate_document_list (desktop_file, documents); docs = translated_documents; @@ -1204,16 +1210,31 @@ egg_desktop_file_launchv (EggDesktopFile *desktop_file, } g_free (command); - startup_id = start_startup_notification (display, desktop_file, - argv[0], screen_num, - workspace, launch_time); - if (startup_id) - { - char *startup_id_env = g_strdup_printf ("DESKTOP_STARTUP_ID=%s", - startup_id); - env = array_putenv (env, startup_id_env); - g_free (startup_id_env); - } + startup_id = NULL; + +#ifdef HAVE_X11 + if (GDK_IS_X11_DISPLAY (display)) + { + int screen_num; + + screen_num = gdk_x11_screen_get_screen_number (screen); + startup_id = start_startup_notification (display, desktop_file, + argv[0], screen_num, + workspace, launch_time); + + if (startup_id) + { + char *startup_id_env = g_strdup_printf ("DESKTOP_STARTUP_ID=%s", + startup_id); + env = array_putenv (env, startup_id_env); + g_free (startup_id_env); + } + } +#else + // Suppress unused variable warnings when not compiling with X + (void)workspace; + (void)launch_time; +#endif if (env != NULL) g_ptr_array_add (env, NULL); @@ -1233,7 +1254,12 @@ egg_desktop_file_launchv (EggDesktopFile *desktop_file, { if (current_success) { - set_startup_notification_timeout (display, startup_id); +#ifdef HAVE_X11 + if (GDK_IS_X11_DISPLAY (display)) + { + set_startup_notification_timeout (display, startup_id); + } +#endif if (ret_startup_id) *ret_startup_id = startup_id; -- cgit v1.2.1