From c25fe68bb700cca5ea76c81c2a0755335395133e Mon Sep 17 00:00:00 2001 From: Olivier Duchateau Date: Mon, 26 Feb 2018 21:44:06 +0100 Subject: [PATCH] Fix a couple of warnings --- terminal/terminal-screen.c | 40 +++++++++++++++++++++++++++++++++++++ terminal/terminal-window-dropdown.c | 26 ++++++++++++++++++++++-- 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/terminal/terminal-screen.c b/terminal/terminal-screen.c index bff96f2f..bf427160 100644 --- a/terminal/terminal-screen.c +++ b/terminal/terminal-screen.c @@ -61,6 +61,8 @@ /* offset of saturation random value */ #define SATURATION_WINDOW 0.20 +/* taken from gnome-terminal (terminal-screen.c) */ +#define SPAWN_TIMEOUT (30 * 1000) enum { @@ -1673,6 +1675,32 @@ terminal_screen_set_custom_command (TerminalScreen *screen, +#if VTE_CHECK_VERSION (0, 48, 0) +static void +terminal_screen_spawn_async_cb (VteTerminal *terminal, + GPid pid, + GError *error, + gpointer user_data) +{ + TerminalScreen *screen = TERMINAL_SCREEN (user_data); + + terminal_return_if_fail (TERMINAL_IS_SCREEN (screen)); + terminal_return_if_fail (VTE_IS_TERMINAL (screen->terminal)); + + if (error) + { + xfce_dialog_show_error (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (screen))), + error, + _("Failed to execute child")); + g_error_free (error); + } + + return; +} +#endif + + + /** * terminal_screen_new: * @attr : Terminal attributes. @@ -1755,6 +1783,17 @@ terminal_screen_launch_child (TerminalScreen *screen) spawn_flags |= G_SPAWN_FILE_AND_ARGV_ZERO; } +#if VTE_CHECK_VERSION (0, 48, 0) + vte_terminal_spawn_async (VTE_TERMINAL (screen->terminal), + pty_flags, + screen->working_directory, + argv2, env, spawn_flags, + NULL, NULL, + NULL, SPAWN_TIMEOUT, + NULL, + terminal_screen_spawn_async_cb, + screen); +#else if (!vte_terminal_spawn_sync (VTE_TERMINAL (screen->terminal), pty_flags, screen->working_directory, argv2, env, @@ -1766,6 +1805,7 @@ terminal_screen_launch_child (TerminalScreen *screen) error, _("Failed to execute child")); g_error_free (error); } +#endif #ifdef HAVE_LIBUTEMPTER g_object_get (G_OBJECT (screen->preferences), "command-update-records", &update_records, NULL); diff --git a/terminal/terminal-window-dropdown.c b/terminal/terminal-window-dropdown.c index 78b8820b..f81041d4 100644 --- a/terminal/terminal-window-dropdown.c +++ b/terminal/terminal-window-dropdown.c @@ -576,13 +576,35 @@ G_GNUC_END_IGNORE_DEPRECATIONS static gboolean terminal_window_dropdown_can_grab (gpointer data) { - GdkWindow *window = gtk_widget_get_window (GTK_WIDGET (data)); - GdkGrabStatus status = gdk_keyboard_grab (window, FALSE, GDK_CURRENT_TIME); + GdkWindow *window; + GdkGrabStatus status; +#if GTK_CHECK_VERSION (3, 20, 0) + GdkDisplay *display; + GdkSeat *seat; + + window = gtk_widget_get_window (GTK_WIDGET (data)); + display = gdk_window_get_display (window); + seat = gdk_display_get_default_seat (display); + + status = gdk_seat_grab (seat, window, + GDK_SEAT_CAPABILITY_POINTER + | GDK_SEAT_CAPABILITY_KEYBOARD, + FALSE, + gdk_cursor_new_for_display (display, GDK_FLEUR), + NULL, NULL, NULL); +#else + window = gtk_widget_get_window (GTK_WIDGET (data)); + status = gdk_keyboard_grab (window, FALSE, GDK_CURRENT_TIME); +#endif if (status == GDK_GRAB_SUCCESS) { /* drop the grab */ +#if GTK_CHECK_VERSION (3, 20, 0) + gdk_seat_ungrab (seat); +#else gdk_keyboard_ungrab (GDK_CURRENT_TIME); +#endif return FALSE; } -- 2.14.3