summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViktor Odintsev <zakhams@gmail.com>2017-07-02 18:32:42 +0300
committerViktor Odintsev <ninetls@xfce.org>2017-07-02 18:32:42 +0300
commitdb7e36617bca979517a6cc6bc3d45f9e85982e56 (patch)
tree66a8251674c1504123091237ec2e62f7ce24a23d
parent050a52ed2d44b1b5c16af4b85c518c16dd3c51d9 (diff)
downloadxfwm4-db7e36617bca979517a6cc6bc3d45f9e85982e56.tar.gz
Remove deprecated gdk_screen_make_display_name
-rw-r--r--common/xfwm-common.c37
-rw-r--r--common/xfwm-common.h2
-rw-r--r--src/screen.c2
-rw-r--r--src/terminate.c18
4 files changed, 55 insertions, 4 deletions
diff --git a/common/xfwm-common.c b/common/xfwm-common.c
index a89fc9307..fd698465e 100644
--- a/common/xfwm-common.c
+++ b/common/xfwm-common.c
@@ -123,3 +123,40 @@ xfwm_get_n_monitors (GdkScreen *screen)
return gdk_screen_get_n_monitors (screen);
#endif
}
+
+
+
+static gchar *
+substitute_screen_number (const gchar *display_name,
+ gint screen_number)
+{
+ GString *str;
+ gchar *p;
+
+ str = g_string_new (display_name);
+
+ p = strrchr (str->str, '.');
+ if (p != NULL && p > strchr (str->str, ':'))
+ {
+ /* remove screen number from string */
+ g_string_truncate (str, p - str->str);
+ }
+
+ g_string_append_printf (str, ".%d", screen_number);
+
+ return g_string_free (str, FALSE);
+}
+
+
+
+gchar *
+xfwm_make_display_name (GdkScreen *screen)
+{
+ const gchar *name;
+ gint number;
+
+ name = gdk_display_get_name (gdk_screen_get_display (screen));
+ number = gdk_x11_screen_get_screen_number (screen);
+
+ return substitute_screen_number (name, number);
+}
diff --git a/common/xfwm-common.h b/common/xfwm-common.h
index 742767fb5..e2e8c97b4 100644
--- a/common/xfwm-common.h
+++ b/common/xfwm-common.h
@@ -38,4 +38,6 @@ void xfwm_get_primary_monitor_geometry (GdkScreen *screen,
gint xfwm_get_n_monitors (GdkScreen *screen);
+gchar *xfwm_make_display_name (GdkScreen *screen);
+
#endif /* !__COMMON_H__ */
diff --git a/src/screen.c b/src/screen.c
index 0d80916d0..609ca9431 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -92,7 +92,7 @@ myScreenSetWMAtom (ScreenInfo *screen_info, gboolean replace_wm)
display_info = screen_info->display_info;
g_snprintf (selection, sizeof (selection), "WM_S%d", screen_info->screen);
wm_sn_atom = XInternAtom (display_info->dpy, selection, FALSE);
- display_name = gdk_screen_make_display_name (screen_info->gscr);
+ display_name = xfwm_make_display_name (screen_info->gscr);
wm_name = gdk_x11_screen_get_window_manager_name (screen_info->gscr);
XSync (display_info->dpy, FALSE);
diff --git a/src/terminate.c b/src/terminate.c
index 6e83d4b0e..c1d8ff4c2 100644
--- a/src/terminate.c
+++ b/src/terminate.c
@@ -29,6 +29,8 @@
#include <unistd.h>
#include <errno.h>
+#include <common/xfwm-common.h>
+
#include "client.h"
#include "terminate.h"
@@ -91,6 +93,14 @@ terminateProcessIO (GIOChannel *channel,
return FALSE;
}
+static void
+terminateShowDialogSetEnvironment (gpointer user_data)
+{
+ GdkScreen *screen = user_data;
+
+ g_setenv ("DISPLAY", xfwm_make_display_name (screen), TRUE);
+}
+
gboolean
terminateShowDialog (Client *c)
{
@@ -116,9 +126,11 @@ terminateShowDialog (Client *c)
argv[3] = NULL;
err = NULL;
- if (!gdk_spawn_on_screen_with_pipes (screen_info->gscr, NULL, argv, NULL,
- 0, NULL, NULL, &child_pid, NULL, &outpipe,
- NULL, &err))
+ if (!g_spawn_async_with_pipes (NULL, argv, NULL, 0,
+ terminateShowDialogSetEnvironment,
+ screen_info->gscr,
+ &child_pid, NULL, &outpipe,
+ NULL, &err))
{
g_warning (_("Cannot spawn helper-dialog: %s\n"), err->message);
g_error_free (err);