When I copy some text with Shift-left-click from the CLIM Listener for later copying somewhere else, I get an infinite loop that displays messages (all identical) like this to the KDE Konsole from which I have started the Listener:
#<CLIM-CLX::CLX-SELECTION-REQUEST-EVENT {5850A54D}> is an instance of type CLX-SELECTION-REQUEST-EVENT it has the following slots: TIMESTAMP: 5010524 SHEET: #<CLIM:INTERACTOR-PANE CLIM-LISTENER::INTERACTOR {58B8A0CD}> REGION: <unbound> SELECTION: :PRIMARY REQUESTOR: #<XLIB:WINDOW :0 31457298> TARGET: :COMPOUND_TEXT PROPERTY: :_QT_SELECTION
If I later paste with Shift-middle-click the clipboard selection to another Konsole pane, I get a garbled string similar to that described here:
http://common-lisp.net/pipermail/mcclim-devel/2004-December/002731.html
I have to quit the Listener in order to stop the infinite loop.
I use CMUCL Snapshot 2005-02 with the latest McCLIM CVS sources under Slackware Linux 10.0, with a 2.6.10 kernel.
Paolo
Paolo Amoroso amoroso@mclink.it writes:
When I copy some text with Shift-left-click from the CLIM Listener for later copying somewhere else, I get an infinite loop that displays messages (all identical) like this to the KDE Konsole from which I have started the Listener:
If it's still not working for you, could you please try the attached patch?
If this fails to work correctly, could you provide me with a few more details about your setup? You're working in Konsole -- could you tell me also what your LANG and LC_ALL settings are, and what the following program produces?
#include <stdlib.h> #include <langinfo.h>
int main () { printf("CODESET: %s\n", nl_langinfo(CODESET)); }
Thanks,
Christophe
Christophe Rhodes csr21@cam.ac.uk writes:
If it's still not working for you, could you please try the attached patch?
With the latest McCLIM CVS sources, I can correctly paste text from the CLIM Listener to a Konsole. But I get an endless stream of identical messages like this in the Konsole from which I start McCLIM:
<CLIM-CLX::CLX-SELECTION-REQUEST-EVENT {59E5A935}> is an instance of type CLX-SELECTION-REQUEST-EVENT it has the following slots: TIMESTAMP: 3664352 SHEET: #<CLIM:INTERACTOR-PANE CLIM-LISTENER::INTERACTOR {59EC4F6D}> REGION: <unbound> SELECTION: :PRIMARY REQUESTOR: #<XLIB:WINDOW :0 31457298> TARGET: :COMPOUND_TEXT PROPERTY: :_QT_SELECTION ;; clim-clx::send-selection - Requested target COMPOUND_TEXT, sent COMPOUND_TEXT to property _QT_SELECTION.
If this fails to work correctly, could you provide me with a few more
With your patch applied to the latest CVS sources, when I Shift-middle-click to paste some text from the CLIM Listener to a Konsole, the Listener and the Konsole hang for a few tens of seconds and then I get the message, error and backtrace included below.
details about your setup? You're working in Konsole -- could you tell me also what your LANG and LC_ALL settings are, and what the following
LANG: en_US. LC_ALL is not set.
program produces?
#include <stdlib.h> #include <langinfo.h>
int main () { printf("CODESET: %s\n", nl_langinfo(CODESET)); }
It produces:
CODESET: ANSI_X3.4-1968
I use KDE 3.2.3.
Paolo
-------------------------------------------------------------------------- #<CLIM-CLX::CLX-SELECTION-REQUEST-EVENT {59F6E7A5}> is an instance of type CLX-SELECTION-REQUEST-EVENT it has the following slots: TIMESTAMP: 2845031 SHEET: #<CLIM:INTERACTOR-PANE CLIM-LISTENER::INTERACTOR {59730C45}> REGION: <unbound> SELECTION: :PRIMARY REQUESTOR: #<XLIB:WINDOW :0 31457298> TARGET: :TARGETS PROPERTY: :_QT_SELECTION ;; clim-clx::send-selection - Requested target TARGETS, sent TARGETS to property _QT_SELECTION. Received CLX LENGTH-ERROR in process "#<CLIM-CLX::CLX-PORT :HOST "" :DISPLAY-ID 0 {5832166D}>'s event process."
Asynchronous LENGTH-ERROR in request 10634 (last request was 10635) Code 110.0 [ListHosts] [Condition of type XLIB:LENGTH-ERROR]
Restarts: 0: [CONTINUE ] Ignore 1: [RESTART-EVENT-LOOP] Restart CLIM's event loop. 2: [DESTROY ] Destroy the process
Debug (type H for help)
(XLIB::READ-ERROR-INPUT #<XLIB:DISPLAY :0 (The X.Org Foundation R60700000)> 10634 #S(XLIB::REPLY-BUFFER :SIZE 32 :IBUF8 #(0 16 138 41 38 ...) :NEXT #S(XLIB::REPLY-BUFFER :SIZE 32 :IBUF8 # :NEXT # :DATA-SIZE 32) :DATA-SIZE 32) #<Process #<CLIM-CLX::CLX-PORT :HOST "" :DISPLAY-ID 0 {5832166D}>'s event process. {59729FED}>) Source: Error finding source: Error in function DEBUG::GET-FILE-TOP-LEVEL-FORM: Source file no longer exists: target:clx/input.lisp. 0] backtrace
0: (XLIB::READ-ERROR-INPUT #<XLIB:DISPLAY :0 (The X.Org Foundation R60700000)> 10634 #S(XLIB::REPLY-BUFFER :SIZE 32 :IBUF8 #(0 16 138 41 38 ...) :NEXT #S(XLIB::REPLY-BUFFER :SIZE 32 :IBUF8 # :NEXT # :DATA-SIZE 32) :DATA-SIZE 32) #<Process #<CLIM-CLX::CLX-PORT :HOST "" :DISPLAY-ID 0 {5832166D}>'s event process. {59729FED}>) 1: (XLIB::READ-INPUT #<XLIB:DISPLAY :0 (The X.Org Foundation R60700000)> NIL NIL #<Function "DEFUN READ-REPLY" {592186B1}> ...) 2: (XLIB::READ-REPLY #<XLIB:DISPLAY :0 (The X.Org Foundation R60700000)> #S(XLIB::PENDING-COMMAND :SEQUENCE 10635 :REPLY-BUFFER NIL :PROCESS #<Process #<CLIM-CLX::CLX-PORT :HOST "" :DISPLAY-ID 0 {5832166D}>'s event process. {59729FED}> :NEXT NIL)) 3: (XLIB::WITH-BUFFER-REQUEST-AND-REPLY-FUNCTION #<XLIB:DISPLAY :0 (The X.Org Foundation R60700000)> NIL #<Function (FLET XLIB::.REQUEST-BODY. XLIB:DISPLAY-FINISH-OUTPUT) {5914D091}> #<Function (FLET XLIB::.REPLY-BODY. XLIB:DISPLAY-FINISH-OUTPUT) {5914D051}>) 4: (XLIB:DISPLAY-FINISH-OUTPUT #<XLIB:DISPLAY :0 (The X.Org Foundation R60700000)>) 5: ((METHOD CLIM-BACKEND:GET-NEXT-EVENT NIL (CLIM-CLX::CLX-PORT)) (#(14) . #()) #<unused-arg> #<CLIM-CLX::CLX-PORT :HOST "" :DISPLAY-ID 0 {5832166D}> (:WAIT-FUNCTION NIL :TIMEOUT NIL)) 6: ("LAMBDA (.KEYARGS-START. .VALID-KEYS. G6851 G6852 G6853)" #<unused-arg> #<unused-arg> #<CLIM-CLX::CLX-PORT :HOST "" :DISPLAY-ID 0 {5832166D}> (:WAIT-FUNCTION NIL :TIMEOUT NIL)) 7: ((METHOD CLIM:PROCESS-NEXT-EVENT NIL (CLIM:BASIC-PORT)) (#() . #(#)) #<unused-arg> #<CLIM-CLX::CLX-PORT :HOST "" :DISPLAY-ID 0 {5832166D}> NIL) 8: ("DEFMETHOD INITIALIZE-CLX (CLX-PORT)") 9: ("DEFUN MAKE-PROCESS")
0] --------------------------------------------------------------------------
Paolo Amoroso amoroso@mclink.it writes:
Christophe Rhodes csr21@cam.ac.uk writes:
If it's still not working for you, could you please try the attached patch?
With the latest McCLIM CVS sources, I can correctly paste text from the CLIM Listener to a Konsole. But I get an endless stream of identical messages like this in the Konsole from which I start McCLIM:
OK. I still have no idea what's going on -- all of these work as expected for me, with Konsole 1.3.2 (KDE 3.2.3, Qt 3.2.3).
9: ("DEFUN MAKE-PROCESS")
Can you try running the clim-listener single-threaded, please -- there might be slightly less to go wrong.
In addition, if you could try (clipboard:main) from http://www-jcsu.jesus.cam.ac.uk/~csr21/clipboard.lisp, clicking in the clx window which appears, then middle-clicking in console, and sending in the transcript, that would help.
Thanks,
Christophe
Christophe Rhodes csr21@cam.ac.uk writes:
OK. I still have no idea what's going on -- all of these work as expected for me, with Konsole 1.3.2 (KDE 3.2.3, Qt 3.2.3).
I have Konsole 1.3.2, KDE 3.2.3, Qt 3.3.3 and X.Org 6.7.0 under Slackware Linux 10.0 with a customized 2.6.10 kernel.
9: ("DEFUN MAKE-PROCESS")
Can you try running the clim-listener single-threaded, please -- there
Do you mean starting the Listener like this?
(clim-listener:run-listener)
If so, I already did this for these tests.
In addition, if you could try (clipboard:main) from http://www-jcsu.jesus.cam.ac.uk/~csr21/clipboard.lisp, clicking in the clx window which appears, then middle-clicking in console, and sending in the transcript, that would help.
With CMUCL Snapshot 2005-02 I get:
* (load "clipboard")
; Loading #P"/home/paolo/clipboard.lisp". T * (clipboard:main) ;
; Warning: This function is undefined: ; CLIPBOARD::OPEN-DEFAULT-DISPLAY
Error in KERNEL:%COERCE-TO-FUNCTION: the function CLIPBOARD::OPEN-DEFAULT-DISPLAY is undefined. [Condition of type UNDEFINED-FUNCTION]
Restarts: 0: [ABORT] Return to Top-Level.
Debug (type H for help)
(KERNEL:%COERCE-TO-FUNCTION CLIPBOARD::OPEN-DEFAULT-DISPLAY) Source: Error finding source: Error in function DEBUG::GET-FILE-TOP-LEVEL-FORM: Source file no longer exists: target:code/fdefinition.lisp. 0] backtrace
0: (KERNEL:%COERCE-TO-FUNCTION CLIPBOARD::OPEN-DEFAULT-DISPLAY) 1: (CLIPBOARD:MAIN) 2: (INTERACTIVE-EVAL (CLIPBOARD:MAIN)) 3: (LISP::%TOP-LEVEL) 4: ((LABELS LISP::RESTART-LISP SAVE-LISP))
0]
Paolo
Paolo Amoroso amoroso@mclink.it writes:
9: ("DEFUN MAKE-PROCESS")
Can you try running the clim-listener single-threaded, please -- there
Do you mean starting the Listener like this?
(clim-listener:run-listener)
If so, I already did this for these tests.
Well, maybe, but the backtrace you provided indicates that multithreading was running. Could you turn it off completely, please? I'd like to see the results when there is precisely one cmucl thread.
In addition, if you could try (clipboard:main) from http://www-jcsu.jesus.cam.ac.uk/~csr21/clipboard.lisp, clicking in the clx window which appears, then middle-clicking in console, and sending in the transcript, that would help.
With CMUCL Snapshot 2005-02 I get:
- (load "clipboard")
; Loading #P"/home/paolo/clipboard.lisp". T
- (clipboard:main)
;
; Warning: This function is undefined: ; CLIPBOARD::OPEN-DEFAULT-DISPLAY
Oh, yes, CMUCL's clx doesn't have this useful feature. Please replace the call to OPEN-DEFAULT-DISPLAY with however you manage to open displays; maybe (open-display "localhost") or (open-display "your-host-name") or (open-display "").
Cheers,
Christophe
I'm not sure there's an easy way to disable threading in CMUCL. It might involve finding where :clim-mp gets pushed onto *features* and preventing that from happening, then recompiling McCLIM from scratch.
On Mon, 07 Mar 2005 17:46:15 +0000, Christophe Rhodes csr21@cam.ac.uk wrote:
Paolo Amoroso amoroso@mclink.it writes:
9: ("DEFUN MAKE-PROCESS")
Can you try running the clim-listener single-threaded, please -- there
Do you mean starting the Listener like this?
(clim-listener:run-listener)
If so, I already did this for these tests.
Well, maybe, but the backtrace you provided indicates that multithreading was running. Could you turn it off completely, please? I'd like to see the results when there is precisely one cmucl thread.
In addition, if you could try (clipboard:main) from http://www-jcsu.jesus.cam.ac.uk/~csr21/clipboard.lisp, clicking in the clx window which appears, then middle-clicking in console, and sending in the transcript, that would help.
With CMUCL Snapshot 2005-02 I get:
- (load "clipboard")
; Loading #P"/home/paolo/clipboard.lisp". T
- (clipboard:main)
;
; Warning: This function is undefined: ; CLIPBOARD::OPEN-DEFAULT-DISPLAY
Oh, yes, CMUCL's clx doesn't have this useful feature. Please replace the call to OPEN-DEFAULT-DISPLAY with however you manage to open displays; maybe (open-display "localhost") or (open-display "your-host-name") or (open-display "").
Cheers,
Christophe _______________________________________________ mcclim-devel mailing list mcclim-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/mcclim-devel
Andy Hefner ahefner@gmail.com writes:
I'm not sure there's an easy way to disable threading in CMUCL. It might involve finding where :clim-mp gets pushed onto *features* and preventing that from happening, then recompiling McCLIM from scratch.
I see. Christophe was probably talking about disabling threading in McCLIM, but I misunderstood and thought he referred to CMUCL's multithreading.
Paolo
Christophe Rhodes csr21@cam.ac.uk writes:
Paolo Amoroso amoroso@mclink.it writes:
[...]
Can you try running the clim-listener single-threaded, please -- there
Do you mean starting the Listener like this?
(clim-listener:run-listener)
If so, I already did this for these tests.
Well, maybe, but the backtrace you provided indicates that multithreading was running. Could you turn it off completely, please?
To do these tests I start CMUCL with CLX, load the CLIM Listener with:
(asdf:operate 'asdf:load-op :mcclim)
and start it with:
(clim-listener:run-listener)
Just before starting the Listener, the state of CMUCL multithreading is as follows:
* (mp:show-processes)
-> #<Process Initial {58B8442D}> "Run" ACTIVE NIL *
Is multithreading running at this stage? If so, how do I turn it off?
Oh, yes, CMUCL's clx doesn't have this useful feature. Please replace the call to OPEN-DEFAULT-DISPLAY with however you manage to open displays; maybe (open-display "localhost") or (open-display "your-host-name") or (open-display "").
I replaced it with (open-display "localhost") and run the test, i.e. started the program, left clicked in its window, and midlle-clicked in a Konsole. The pasted string is:
Hello, World (from the CLX clipboard)!
Just after starting the program, the output is:
* (clipboard:main)
PropertyNotify :_KDE_NET_WM_USER_CREATION_TIME :NEW-VALUE PropertyNotify :_NET_WM_DESKTOP :NEW-VALUE PropertyNotify :_KDE_NET_WM_FRAME_STRUT :NEW-VALUE PropertyNotify :_NET_WM_ALLOWED_ACTIONS :NEW-VALUE PropertyNotify :WM_STATE :NEW-VALUE PropertyNotify :_NET_WM_STATE :NEW-VALUE PropertyNotify :_NET_WM_ICON_GEOMETRY :NEW-VALUE PropertyNotify :_NET_WM_ICON_GEOMETRY :NEW-VALUE ButtonPress
When left clicking, an endless loop displaying messages like this starts:
set-selection-owner
SelectionRequest :PRIMARY :TIMESTAMP :KLIPPER
sending none
SelectionRequest :PRIMARY :TARGETS :_QT_SELECTION
sending targets list
SelectionRequest :PRIMARY :STRING :_QT_SELECTION
sending text data
SelectionRequest :PRIMARY :TIMESTAMP :KLIPPER
sending none
SelectionRequest :PRIMARY :TARGETS :_QT_SELECTION
sending targets list
SelectionRequest :PRIMARY :STRING :_QT_SELECTION
sending text data
SelectionRequest :PRIMARY :TIMESTAMP :KLIPPER
sending none
SelectionRequest :PRIMARY :TARGETS :_QT_SELECTION
sending targets list
SelectionRequest :PRIMARY :STRING :_QT_SELECTION
sending text data
SelectionRequest :PRIMARY :TIMESTAMP :KLIPPER
sending none
PropertyNotify :_NET_WM_ICON_GEOMETRY :NEW-VALUE SelectionRequest :PRIMARY :TARGETS :_QT_SELECTION
sending targets list
SelectionRequest :PRIMARY :STRING :_QT_SELECTION
sending text data
SelectionRequest :PRIMARY :TARGETS :_QT_SELECTION
sending targets list
SelectionRequest :PRIMARY :STRING :_QT_SELECTION
sending text data
SelectionRequest :PRIMARY :TIMESTAMP :KLIPPER
sending none
[...]
Paolo
-> #<Process Initial {58B8442D}> "Run" ACTIVE | NIL | * | | Is multithreading running at this stage? If so, how do I turn it off?
(mp::shutdown-multi-processing)
Paul
Paolo Amoroso amoroso@mclink.it writes:
Christophe Rhodes csr21@cam.ac.uk writes:
Oh, yes, CMUCL's clx doesn't have this useful feature. Please replace the call to OPEN-DEFAULT-DISPLAY with however you manage to open displays; maybe (open-display "localhost") or (open-display "your-host-name") or (open-display "").
I replaced it with (open-display "localhost") and run the test, i.e. started the program, left clicked in its window, and midlle-clicked in a Konsole. The pasted string is:
Hello, World (from the CLX clipboard)!
OK, so my clipboard demo succesfully pastes to console...
Just after starting the program, the output is:
- (clipboard:main)
PropertyNotify :_KDE_NET_WM_USER_CREATION_TIME :NEW-VALUE PropertyNotify :_NET_WM_DESKTOP :NEW-VALUE PropertyNotify :_KDE_NET_WM_FRAME_STRUT :NEW-VALUE PropertyNotify :_NET_WM_ALLOWED_ACTIONS :NEW-VALUE PropertyNotify :WM_STATE :NEW-VALUE PropertyNotify :_NET_WM_STATE :NEW-VALUE PropertyNotify :_NET_WM_ICON_GEOMETRY :NEW-VALUE PropertyNotify :_NET_WM_ICON_GEOMETRY :NEW-VALUE ButtonPress
When left clicking, an endless loop displaying messages like this starts:
set-selection-owner
SelectionRequest :PRIMARY :TIMESTAMP :KLIPPER
sending none
SelectionRequest :PRIMARY :TARGETS :_QT_SELECTION
sending targets list
SelectionRequest :PRIMARY :STRING :_QT_SELECTION
sending text data
SelectionRequest :PRIMARY :TIMESTAMP :KLIPPER
... but "KLIPPER", probably some bizarre KDE thing, is now getting in the way. OK, but in this test you're not getting any length-errors. Hmm.
So I might not be seeing the problems you're seeing because I'm not running a KDE environment; I'm simply testing in the terminals you're saying you see problems with. If there are desktop-specific clipboard daemons, there is quite reasonably MORE PAIN to be experienced.
I don't really know what to suggest; I'd probably ask the developers of whatever desktop environment you're using about known interoperability issues with clipboard handling, and see if they act shy and bashful. I claim that clipboard.lisp is ICCCM-compliant code, but I've been wrong before -- specifically, I've been wrong when I reported a bug in gdk about it, so it's possible there are bugs lurking. There is C code referenced from the lisp file which might be of assistance when talking to C-based developers; asking them why the C code produces an endless loop might prompt a response.
Cheers,
Christophe
Christophe Rhodes csr21@cam.ac.uk writes:
... but "KLIPPER", probably some bizarre KDE thing, is now getting in the way. OK, but in this test you're not getting any length-errors.
According to the KDE documentation:
Klipper is the KDE clipboard utility. It stores clipboard history, and allows you to link clipboard contents to application actions.
If I disable it and try pasting text from the CLIM Listener to a Konsole, the text is pasted correctly and I only get these 2 messages (no longer an infinite loop):
#<CLIM-CLX::CLX-SELECTION-REQUEST-EVENT {598A0ED5}> is an instance of type CLX-SELECTION-REQUEST-EVENT it has the following slots: TIMESTAMP: 4226073 SHEET: #<CLIM:INTERACTOR-PANE CLIM-LISTENER::INTERACTOR {59DED39D}> REGION: <unbound> SELECTION: :PRIMARY REQUESTOR: #<XLIB:WINDOW :0 33554937> TARGET: :TARGETS PROPERTY: :_QT_SELECTION ;; Warning, unhandled type "TARGETS". Trying to send as UTF8_STRING. ;; clim-clx::send-selection - Requested target TARGETS, sent UTF8_STRING to property NIL. #<CLIM-CLX::CLX-SELECTION-REQUEST-EVENT {59919455}> is an instance of type CLX-SELECTION-REQUEST-EVENT it has the following slots: TIMESTAMP: 4226073 SHEET: #<CLIM:INTERACTOR-PANE CLIM-LISTENER::INTERACTOR {59DED39D}> REGION: <unbound> SELECTION: :PRIMARY REQUESTOR: #<XLIB:WINDOW :0 33554937> TARGET: :COMPOUND_TEXT PROPERTY: :_QT_SELECTION ;; clim-clx::send-selection - Requested target COMPOUND_TEXT, sent COMPOUND_TEXT to property _QT_SELECTION.
So, it looks like this is a KDE thing. No big deal, once I am aware of this.
I don't really know what to suggest; I'd probably ask the developers
I don't use Klipper much anyway, so I'll probably keep it disabled.
Thanks,
Paolo
Paolo Amoroso amoroso@mclink.it writes:
Christophe Rhodes csr21@cam.ac.uk writes:
I don't really know what to suggest; I'd probably ask the developers
I don't use Klipper much anyway, so I'll probably keep it disabled.
Hi, Paolo.
Could you try pasting with Klipper enabled and with the attached patch? (I spent some time with the ICCCM, and some more time debugging my use of CLX, but I /think/ the attached now behaves at least partly correctly).
[ Andy, if you're listening in: there have been several issues involved here: Klipper is entitled per ICCCM to assume that we implement the :TARGETS and :TIMESTAMP selection targets. More to follow on the CLX lists. ]
Cheers,
Christophe
Christophe Rhodes csr21@cam.ac.uk writes:
Hi, Paolo.
Could you try pasting with Klipper enabled and with the attached patch? (I spent some time with the ICCCM, and some more time
Sure. Now, when I copy from the CLIM Listener and paste to a Konsole pane, the text is pasted correctly, and a stream of messages like the ones included below are displayed until I quit the listener.
My current setup is: CMUCL Snapshot 2005-03, latest McCLIM CVS sources with your patch applied.
Paolo
----------------------------------------------------------------------- #<CLIM-CLX::CLX-SELECTION-REQUEST-EVENT {59B8394D}> is an instance of type CLX-SELECTION-REQUEST-EVENT it has the following slots: TIMESTAMP: 1328099 SHEET: #<CLIM:INTERACTOR-PANE CLIM-LISTENER::INTERACTOR {59DFE89D}> REGION: <unbound> SELECTION: :PRIMARY REQUESTOR: #<XLIB:WINDOW :0 31457307> TARGET: :COMPOUND_TEXT PROPERTY: :_QT_SELECTION ;; clim-clx::send-selection - Requested target COMPOUND_TEXT, sent COMPOUND_TEXT to property _QT_SELECTION. #<CLIM-CLX::CLX-SELECTION-REQUEST-EVENT {59B87685}> is an instance of type CLX-SELECTION-REQUEST-EVENT it has the following slots: TIMESTAMP: 1328099 SHEET: #<CLIM:INTERACTOR-PANE CLIM-LISTENER::INTERACTOR {59DFE89D}> REGION: <unbound> SELECTION: :PRIMARY REQUESTOR: #<XLIB:WINDOW :0 31457307> TARGET: :STRING PROPERTY: :_QT_SELECTION ;; clim-clx::send-selection - Requested target STRING, sent STRING to property _QT_SELECTION. #<CLIM-CLX::CLX-SELECTION-REQUEST-EVENT {59C061DD}> is an instance of type CLX-SELECTION-REQUEST-EVENT it has the following slots: TIMESTAMP: 1329099 SHEET: #<CLIM:INTERACTOR-PANE CLIM-LISTENER::INTERACTOR {59DFE89D}> REGION: <unbound> SELECTION: :PRIMARY REQUESTOR: #<XLIB:WINDOW :0 31457334> TARGET: :TIMESTAMP PROPERTY: :KLIPPER ;; clim-clx::send-selection - Requested target TIMESTAMP, sent TIMESTAMP to property KLIPPER. -----------------------------------------------------------------------
Paolo Amoroso amoroso@mclink.it writes:
Sure. Now, when I copy from the CLIM Listener and paste to a Konsole pane, the text is pasted correctly, and a stream of messages like the ones included below are displayed until I quit the listener.
OK. So I think the clipboard-handling code is now correct, and to make the user experience better one would simply not print the debugging cruft to *trace-output*.
Anyone care to review the latest patch I sent?
Cheers,
Christophe
Paolo Amoroso amoroso@mclink.it writes:
Christophe Rhodes csr21@cam.ac.uk writes:
Hi, Paolo.
Could you try pasting with Klipper enabled and with the attached patch? (I spent some time with the ICCCM, and some more time
Sure. Now, when I copy from the CLIM Listener and paste to a Konsole pane, the text is pasted correctly, and a stream of messages like the ones included below are displayed until I quit the listener.
My current setup is: CMUCL Snapshot 2005-03, latest McCLIM CVS sources with your patch applied.
Right. Reading around the web indicates that Klipper is not completely alone in its strategy of polling the selection owner for the timestamp of its selection ownership to see if anything has changed.
I've therefore committed more-or-less what I sent, along with something which disables logging these events to the console. I hope that I haven't broken anything in the process.
In the meantime, here are some things which don't currently work (they didn't before the patch either):
* pasting high-latin characters into the listener. (pasting them out from the listener is fine). This is possibly because the paste is implemented in terms of generating key-press-events -- is there a mismatch somewhere between what is a key press and what is a character?
* selecting user-typed input to the listener. I think this is because such user-typed input has no associated output records; getting this right might be tricky.
* (relatedly) pasting from Climacs doesn't work as expected, because Space and Tab characters in the buffer don't get associated output records. Presumably what needs to happen here is that Climacs needs to implement its own methods for these protocol functions.
Cheers,
Christophe
Christophe Rhodes csr21@cam.ac.uk writes:
Right. Reading around the web indicates that Klipper is not completely alone in its strategy of polling the selection owner for the timestamp of its selection ownership to see if anything has changed.
I've therefore committed more-or-less what I sent, along with something which disables logging these events to the console. I hope that I haven't broken anything in the process.
Text paste seems to be working fine with Klipper now.
Paolo