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: sav-api~266^2~4 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d1e3437ae5fe29a75c984b9d24b77120a56deb4;p=pspp 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 e25342ed0d..e6f7c672b0 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); }