From: John Darrington Date: Sun, 16 May 2010 11:21:47 +0000 (+0200) Subject: Paste to a single common syntax window instead of a new one. X-Git-Tag: v0.7.5~25^2~4 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d1e3437ae5fe29a75c984b9d24b77120a56deb4;p=pspp-builds.git 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 --- 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); }