summaryrefslogtreecommitdiff
path: root/recipes/xfce-base/xfce-terminal/into-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/xfce-base/xfce-terminal/into-support.patch')
-rw-r--r--recipes/xfce-base/xfce-terminal/into-support.patch94
1 files changed, 94 insertions, 0 deletions
diff --git a/recipes/xfce-base/xfce-terminal/into-support.patch b/recipes/xfce-base/xfce-terminal/into-support.patch
new file mode 100644
index 0000000000..30540d0558
--- /dev/null
+++ b/recipes/xfce-base/xfce-terminal/into-support.patch
@@ -0,0 +1,94 @@
+diff --git a/terminal/terminal-app.c b/terminal/terminal-app.c
+index 4b7ae6f..a581a85 100644
+--- a/terminal/terminal-app.c
++++ b/terminal/terminal-app.c
+@@ -37,6 +37,8 @@
+ #include <string.h>
+ #endif
+
++#include <gdk/gdkx.h>
++
+ #include <terminal/terminal-accel-map.h>
+ #include <terminal/terminal-app.h>
+ #include <terminal/terminal-config.h>
+@@ -565,7 +567,8 @@ terminal_app_open_window (TerminalApp *app,
+ g_free (geometry);
+
+ /* show the window */
+- gtk_widget_show (window);
++ if (!attr->embed_window)
++ gtk_widget_show (window);
+ }
+
+ terminal_screen_launch_child (TERMINAL_SCREEN (terminal));
+@@ -584,6 +587,14 @@ terminal_app_open_window (TerminalApp *app,
+ g_signal_connect (G_OBJECT (app->session_client), "save-yourself",
+ G_CALLBACK (terminal_app_save_yourself), app);
+ }
++
++ if (attr->embed_window)
++ {
++ GdkDrawable* win = GDK_DRAWABLE(window->window);
++ XReparentWindow(GDK_DRAWABLE_XDISPLAY(win), GDK_DRAWABLE_XID(win), attr->embed_window, 0, 0);
++ XMapWindow(GDK_DRAWABLE_XDISPLAY(win), GDK_DRAWABLE_XID(win));
++ gtk_widget_show(window);
++ }
+ }
+
+
+diff --git a/terminal/terminal-options.c b/terminal/terminal-options.c
+index ec6a934..ad9dace 100644
+--- a/terminal/terminal-options.c
++++ b/terminal/terminal-options.c
+@@ -30,6 +30,8 @@
+ #include <string.h>
+ #endif
+
++#include <stdlib.h>
++
+ #include <libxfce4util/libxfce4util.h>
+
+ #include <terminal/terminal-options.h>
+@@ -454,6 +456,31 @@ terminal_options_parse (gint argc,
+ g_free (default_directory);
+ default_directory = g_strdup (s);
+ }
++ else if (strncmp ("--into", argv[n], 6) == 0)
++ {
++ s = argv[n] + 6;
++
++ if (*s == '=')
++ {
++ ++s;
++ }
++ else if (n + 1 >= argc)
++ {
++ g_set_error (error, G_SHELL_ERROR, G_SHELL_ERROR_FAILED,
++ _("Option \"--into\" requires specifying "
++ "the window id as its parameter"));
++ goto failed;
++ }
++ else
++ {
++ s = argv[++n];
++ }
++
++ if (win_attr != NULL)
++ {
++ win_attr->embed_window = strtoul(s, NULL, 0);
++ }
++ }
+ else
+ {
+ g_set_error (error, G_SHELL_ERROR, G_SHELL_ERROR_FAILED,
+diff --git a/terminal/terminal-options.h b/terminal/terminal-options.h
+index b047269..4783596 100644
+--- a/terminal/terminal-options.h
++++ b/terminal/terminal-options.h
+@@ -65,5 +65,6 @@ struct _TerminalWindowAttr
+ TerminalVisibility borders;
+ TerminalVisibility toolbars;
++ guint32 embed_window;
+ };
+
+ gboolean terminal_options_parse (gint argc,