Thanks,. Can you try the attached patch and see if it makes any improvement.
J'
On Tue, Jan 06, 2015 at 10:55:51PM +0100, Harry Thijssen wrote:
----------------------------------------------------
>
> On Thu, Jan 01, 2015 at 08:43:38PM +0100, Harry Thijssen wrote:
> >
> > On Tue, Dec 30, 2014 at 04:58:48PM -0600, Alan Mead wrote:
> > John and Harry,
> >
> > PSPPIRE.exe 0.8.4-g5ce6b1 (and the associated PSPP) is pretty
> wonky.
> > Paste doesn't work correctly (I believe that's a know
issue?).
> To
> > paste
> > syntax into the syntax window, I had to right-click and
choose
> paste;
> > neither Control-v or Edit > Paste would paste the text.
> >
>
> I could reproduce this and it is indeed realy strange. It is not
> limited to
> the syntax window, but the same happens in the dataview. If you copy
> some
> data from outside PSPPIRE (for example from notepad to psppire) you
> can
> only paste it in PSPPIRE when you right-click. Data copied from
inside
> PSPPIRE (for instance from dataview to syntax editor) can be copied
> pasted
> the usual way!
> A reason for this.......I have no idea...
>
>
> Looking at the code near line 385 in psppire-syntax-window.c I am
> guessing that this is due
> to the encoding type declared by the clipboard contents.
>
> Perhaps you could do some experiements to see if the functions
> on_edit_paste and/or contents_received_callback are actually called?
> And if the latter does get called, what is the value of the type field
> in the GtkSelectionData ?
>
Always fun with MSWindows !@#$%^&*
If I copy a text, start the syntaxeditor and paste the text. The text get
pasted and I get no printf that on_edit_paste and/or
contents_received_callback is entered. But I get the error message:
<psppire.exe:968>:Gdk-CRITICAL **: gdk_property_delete: assertion 'window
!= NULL' failed
If I start the syntaxeditor and then copy a text and try to paste it, Prinf
reports that on_edit_paste and contents_received_callback are entered. The
text is NOT pasted and I get the error
<psppire.exe:968>:Gdk-CRITICAL **: gtk_text_buffer_emit_insertion:
assertion 'g_utf8_validate <text, len, NULL>' failed
My other 2 printf's are not triggered.
I don't know how to printf GtkSelectionData . So if it is needed, I need
the printf statemet for that.
I used the attached patch.
Anything more I could do?
Have fun
iff -r -u b/src/ui/gui/psppire-syntax-window.c
a/src/ui/gui/psppire-syntax-window.c
--- b/src/ui/gui/psppire-syntax-window.c 2014-12-14 01:52:34.000000000
+0100
+++ a/src/ui/gui/psppire-syntax-window.c 2015-01-06 21:23:14.449820019
+0100
@@ -376,13 +376,20 @@
GtkSelectionData *sd,
gpointer data)
{
+ printf ("%s:%d contents_received_callback\n", __FILE__, __LINE__);
PsppireSyntaxWindow *syntax_window = data;
if ( sd->length < 0 )
+ {
+ printf ("%s:%d contents_received_callback sd->length < 0 \n",
__FILE__, __LINE__);
return;
+ }
if ( sd->type != gdk_atom_intern ("UTF8_STRING", FALSE))
+ {
+ printf ("%s:%d contents_received_callback sd->type !=
gdk_atom_intern ('UTF8_STRING', FALSE)) \n", __FILE__, __LINE__);
return;
+ }
gtk_text_buffer_insert_at_cursor (GTK_TEXT_BUFFER
(syntax_window->buffer),
(gchar *) sd->data,
@@ -393,6 +400,7 @@
static void
on_edit_paste (PsppireSyntaxWindow *sw)
{
+ printf ("%s:%d on_edit_paste\n", __FILE__, __LINE__);
GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET (sw));
GtkClipboard *clipboard =
gtk_clipboard_get_for_display (display, GDK_SELECTION_CLIPBOARD);
_______________________________________________
pspp-dev mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/pspp-dev
--
PGP Public key ID: 1024D/2DE827B3
fingerprint = 8797 A26D 0854 2EAB 0285 A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.
diff --git a/src/ui/gui/psppire-syntax-window.c b/src/ui/gui/psppire-syntax-window.c
index 8491eb3..ca04756 100644
--- a/src/ui/gui/psppire-syntax-window.c
+++ b/src/ui/gui/psppire-syntax-window.c
@@ -370,26 +370,6 @@ on_edit_copy (PsppireSyntaxWindow *sw)
}
-/* A callback for when the clipboard contents have been received */
-static void
-contents_received_callback (GtkClipboard *clipboard,
- GtkSelectionData *sd,
- gpointer data)
-{
- PsppireSyntaxWindow *syntax_window = data;
-
- if ( sd->length < 0 )
- return;
-
- if ( sd->type != gdk_atom_intern ("UTF8_STRING", FALSE))
- return;
-
- gtk_text_buffer_insert_at_cursor (GTK_TEXT_BUFFER (syntax_window->buffer),
- (gchar *) sd->data,
- sd->length);
-
-}
-
static void
on_edit_paste (PsppireSyntaxWindow *sw)
{
@@ -397,10 +377,7 @@ on_edit_paste (PsppireSyntaxWindow *sw)
GtkClipboard *clipboard =
gtk_clipboard_get_for_display (display, GDK_SELECTION_CLIPBOARD);
- gtk_clipboard_request_contents (clipboard,
- gdk_atom_intern ("UTF8_STRING", TRUE),
- contents_received_callback,
- sw);
+ gtk_text_buffer_paste_clipboard (GTK_TEXT_BUFFER (sw->buffer), clipboard, NULL, TRUE);
}
signature.asc
Description: Digital signature
_______________________________________________ pspp-dev mailing list [email protected] https://lists.gnu.org/mailman/listinfo/pspp-dev
