From 5d1e3437ae5fe29a75c984b9d24b77120a56deb4 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sun, 16 May 2010 13:21:47 +0200 Subject: [PATCH] Paste to a single common syntax window instead of a new one. Previously, when a dialog box's "paste" button was pressed, a new syntax window was created and the syntax pasted to it. This change alters that behaviour. Now there is just one syntax window that is used for all paste operations. Fixes bug #27686 --- src/ui/gui/helper.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/ui/gui/helper.c b/src/ui/gui/helper.c index e25342ed..e6f7c672 100644 --- a/src/ui/gui/helper.c +++ b/src/ui/gui/helper.c @@ -40,6 +40,7 @@ #include #include "psppire-data-store.h" +#include "psppire.h" #include "gl/configmake.h" #include "xalloc.h" @@ -274,14 +275,35 @@ clone_list_store (const GtkListStore *src) } + + +static gboolean +on_delete (GtkWindow *window, GdkEvent *e, GtkWindow **addr) +{ + *addr = NULL; + + return FALSE; +} + void paste_syntax_in_new_window (const gchar *syntax) { - GtkWidget *se = psppire_syntax_window_new (); + static GtkWidget *the_syntax_pasteboard = NULL; + + if ( NULL == the_syntax_pasteboard) + { + the_syntax_pasteboard = psppire_syntax_window_new (); + g_signal_connect (the_syntax_pasteboard, "delete-event", G_CALLBACK (on_delete), + &the_syntax_pasteboard); + } + + gtk_text_buffer_insert_at_cursor (PSPPIRE_SYNTAX_WINDOW (the_syntax_pasteboard)->buffer, + syntax, -1); - gtk_text_buffer_insert_at_cursor (PSPPIRE_SYNTAX_WINDOW (se)->buffer, syntax, -1); + gtk_text_buffer_insert_at_cursor (PSPPIRE_SYNTAX_WINDOW (the_syntax_pasteboard)->buffer, + "\n", 1); - gtk_widget_show (se); + gtk_widget_show (the_syntax_pasteboard); } -- 2.30.2