[gnome-terminal] server: Don't try to open a non-default display
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-terminal] server: Don't try to open a non-default display
- Date: Wed, 1 Nov 2017 21:31:37 +0000 (UTC)
commit 36cce22417358dbbf009f6323c16f84a51745cba
Author: Christian Persch <chpe src gnome org>
Date: Wed Nov 1 22:31:16 2017 +0100
server: Don't try to open a non-default display
This hasn't worked propertly anyway, e.g.
https://bugzilla.gnome.org/show_bug.cgi?id=700267
https://bugzilla.gnome.org/show_bug.cgi?id=719438
https://bugzilla.gnome.org/show_bug.cgi?id=737694
src/terminal-app.c | 12 ++++++---
src/terminal-app.h | 2 +-
src/terminal-client-utils.c | 7 +++--
src/terminal-gdbus.c | 33 +++++++++++-------------
src/terminal-options.c | 1 -
src/terminal-options.h | 1 -
src/terminal-util.c | 58 -------------------------------------------
src/terminal-util.h | 3 --
src/terminal-window.c | 7 ++---
9 files changed, 31 insertions(+), 93 deletions(-)
---
diff --git a/src/terminal-app.c b/src/terminal-app.c
index e611a70..5790e6b 100644
--- a/src/terminal-app.c
+++ b/src/terminal-app.c
@@ -923,17 +923,21 @@ terminal_app_new (const char *app_id)
NULL);
}
+/**
+ * terminal_app_new_window:
+ * @app:
+ * @monitor:
+ *
+ * Creates a new #TerminalWindow on the default display.
+ */
TerminalWindow *
terminal_app_new_window (TerminalApp *app,
- GdkScreen *screen)
+ int monitor)
{
TerminalWindow *window;
window = terminal_window_new (G_APPLICATION (app));
- if (screen)
- gtk_window_set_screen (GTK_WINDOW (window), screen);
-
return window;
}
diff --git a/src/terminal-app.h b/src/terminal-app.h
index 22436f1..89d405c 100644
--- a/src/terminal-app.h
+++ b/src/terminal-app.h
@@ -67,7 +67,7 @@ void terminal_app_remove_profile (TerminalApp *app,
GSettings *profile);
TerminalWindow * terminal_app_new_window (TerminalApp *app,
- GdkScreen *screen);
+ int monitor);
TerminalScreen *terminal_app_new_terminal (TerminalApp *app,
TerminalWindow *window,
diff --git a/src/terminal-client-utils.c b/src/terminal-client-utils.c
index 36a415c..2ab2feb 100644
--- a/src/terminal-client-utils.c
+++ b/src/terminal-client-utils.c
@@ -61,8 +61,9 @@ terminal_client_append_create_instance_options (GVariantBuilder *builder,
gboolean fullscreen_window)
{
/* Bytestring options */
- g_variant_builder_add (builder, "{sv}",
- "display", g_variant_new_bytestring (display_name));
+ if (display_name != NULL)
+ g_variant_builder_add (builder, "{sv}",
+ "display", g_variant_new_bytestring (display_name));
if (startup_id)
g_variant_builder_add (builder, "{sv}",
"desktop-startup-id", g_variant_new_bytestring (startup_id));
@@ -173,7 +174,7 @@ terminal_client_get_fallback_startup_id (void)
XEvent event;
display = gdk_display_get_default ();
- if (!GDK_IS_X11_DISPLAY (display))
+ if (display == NULL || !GDK_IS_X11_DISPLAY (display))
goto out;
xdisplay = GDK_DISPLAY_XDISPLAY (display);
diff --git a/src/terminal-gdbus.c b/src/terminal-gdbus.c
index bb456b2..82405ff 100644
--- a/src/terminal-gdbus.c
+++ b/src/terminal-gdbus.c
@@ -409,31 +409,28 @@ terminal_factory_impl_create_instance (TerminalFactory *factory,
window = TERMINAL_WINDOW (win);
have_new_window = FALSE;
} else {
- const char *startup_id, *display_name, *role;
+ const char *startup_id, *role;
gboolean start_maximized, start_fullscreen;
- int screen_number;
- GdkScreen *gdk_screen;
/* Create a new window */
- if (!g_variant_lookup (options, "display", "^&ay", &display_name)) {
- g_dbus_method_invocation_return_error_literal (invocation,
- G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS,
- "No display specified");
- goto out;
+ /* We don't do multi-display anymore */
+#if 0
+ const char *display_name;
+ if (g_variant_lookup (options, "display", "^&ay", &display_name)) {
+ GdkDisplay *display = gdk_display_get_default ();
+ const char *default_display_name = display ? gdk_display_get_name (display) : NULL;
+
+ if (g_strcmp0 (default_display_name, display_name) != 0)
+ g_printerr ("Display \"%s\" requested but default display is \"%s\"\n",
+ display_name, default_display_name);
+ /* Open window on our display anyway */
}
+#endif
- screen_number = 0;
- gdk_screen = terminal_util_get_screen_by_display_name (display_name, screen_number);
- if (gdk_screen == NULL) {
- g_dbus_method_invocation_return_error (invocation,
- G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS,
- "No screen %d on display \"%s\"",
- screen_number, display_name);
- goto out;
- }
+ int monitor = 0;
- window = terminal_app_new_window (app, gdk_screen);
+ window = terminal_app_new_window (app, monitor);
if (g_variant_lookup (options, "desktop-startup-id", "^&ay", &startup_id))
gtk_window_set_startup_id (GTK_WINDOW (window), startup_id);
diff --git a/src/terminal-options.c b/src/terminal-options.c
index 8349bea..478345e 100644
--- a/src/terminal-options.c
+++ b/src/terminal-options.c
@@ -967,7 +967,6 @@ terminal_options_parse (const char *working_directory,
options->zoom_set = FALSE;
options->any_wait = FALSE;
- options->screen_number = -1;
options->default_working_dir = g_strdup (working_directory);
/* The old -x/--execute option is broken, so we need to pre-scan for it. */
diff --git a/src/terminal-options.h b/src/terminal-options.h
index d2945e2..85ee130 100644
--- a/src/terminal-options.h
+++ b/src/terminal-options.h
@@ -69,7 +69,6 @@ typedef struct
gboolean remote_arguments;
char *startup_id;
char *display_name;
- int screen_number;
gboolean show_preferences;
GList *initial_windows;
gboolean default_window_menubar_forced;
diff --git a/src/terminal-util.c b/src/terminal-util.c
index f6980c5..6813f9e 100644
--- a/src/terminal-util.c
+++ b/src/terminal-util.c
@@ -699,64 +699,6 @@ terminal_util_add_proxy_env (GHashTable *env_table)
}
}
-GdkScreen*
-terminal_util_get_screen_by_display_name (const char *display_name,
- int screen_number)
-{
- GdkDisplay *display = NULL;
- GdkScreen *screen = NULL;
-
- /* --screen=screen_number overrides --display */
-
- if (display_name == NULL)
- display = gdk_display_get_default ();
- else
- {
- GSList *displays, *l;
- const char *period;
-
- period = strrchr (display_name, '.');
- if (period)
- {
- gulong n;
- char *end;
-
- errno = 0;
- end = NULL;
- n = g_ascii_strtoull (period + 1, &end, 0);
- if (errno == 0 && (period + 1) != end)
- screen_number = n;
- }
-
- displays = gdk_display_manager_list_displays (gdk_display_manager_get ());
- for (l = displays; l != NULL; l = l->next)
- {
- GdkDisplay *disp = l->data;
-
- /* compare without the screen number part, if present */
- if ((period && strncmp (gdk_display_get_name (disp), display_name, period - display_name) == 0) ||
- (period == NULL && strcmp (gdk_display_get_name (disp), display_name) == 0))
- {
- display = disp;
- break;
- }
- }
- g_slist_free (displays);
-
- if (display == NULL)
- display = gdk_display_open (display_name); /* FIXME we never close displays */
- }
-
- if (display == NULL)
- return NULL;
- if (screen_number >= 0)
- screen = gdk_display_get_screen (display, screen_number);
- if (screen == NULL)
- screen = gdk_display_get_default_screen (display);
-
- return screen;
-}
-
/**
* terminal_util_get_etc_shells:
*
diff --git a/src/terminal-util.h b/src/terminal-util.h
index d3b13f2..c49460e 100644
--- a/src/terminal-util.h
+++ b/src/terminal-util.h
@@ -67,9 +67,6 @@ gboolean terminal_util_dialog_response_on_delete (GtkWindow *widget);
void terminal_util_add_proxy_env (GHashTable *env_table);
-GdkScreen *terminal_util_get_screen_by_display_name (const char *display_name,
- int screen_number);
-
char **terminal_util_get_etc_shells (void);
gboolean terminal_util_get_is_shell (const char *command);
diff --git a/src/terminal-window.c b/src/terminal-window.c
index f1b3f73..a79e35c 100644
--- a/src/terminal-window.c
+++ b/src/terminal-window.c
@@ -385,7 +385,7 @@ action_new_terminal_cb (GSimpleAction *action,
return;
if (mode == TERMINAL_NEW_TERMINAL_MODE_WINDOW)
- window = terminal_app_new_window (app, gtk_widget_get_screen (GTK_WIDGET (window)));
+ window = terminal_app_new_window (app, 0);
new_working_directory = terminal_screen_get_current_dir (priv->active_screen);
terminal_app_new_terminal (app, window, profile, NULL /* use profile encoding */,
@@ -925,7 +925,7 @@ action_tab_detach_cb (GSimpleAction *action,
terminal_screen_get_size (screen, &width, &height);
g_snprintf (geometry, sizeof (geometry), "%dx%d", width, height);
- new_window = terminal_app_new_window (app, gtk_widget_get_screen (GTK_WIDGET (window)));
+ new_window = terminal_app_new_window (app, 0);
terminal_window_move_screen (window, new_window, screen, -1);
@@ -1698,8 +1698,7 @@ handle_tab_droped_on_desktop (GtkNotebook *source_notebook,
source_window = TERMINAL_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (source_notebook)));
g_return_val_if_fail (TERMINAL_IS_WINDOW (source_window), NULL);
- new_window = terminal_app_new_window (terminal_app_get (),
- gtk_widget_get_screen (GTK_WIDGET (source_window)));
+ new_window = terminal_app_new_window (terminal_app_get (), 0);
new_priv = new_window->priv;
new_priv->present_on_insert = TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]