On Wed, Aug 17, 2011 at 04:11:55PM -0500, Marco Peereboom wrote:
> After the long debate yesterday about clipboards sucking major eggs and
> stuff I started looking into the problem.  One of the problems is that
> xterm doesn't honor the "Keep Selection" flag.  The code is a little
> tangly but if I read it correctly it looks like a simple test was
> missed.  This brings xterm in line with all other applications
> (including gtk ones) where, by default, if a selection is cleared on the
> screen it ISN'T cleared from PRIMARY.  People who desire the clearing of
> PRIMARY should use the "XTerm*keepSelection: false" setting as described
> in the manual.
> 
> This is just step one.  The rest of the issues seem to be hidden in gtk.
> 
> Index: button.c
> ===================================================================
> RCS file: /cvs/xenocara/app/xterm/button.c,v
> retrieving revision 1.17
> diff -u -p -u -p -r1.17 button.c
> --- button.c  7 Mar 2011 20:41:27 -0000       1.17
> +++ button.c  17 Aug 2011 21:01:24 -0000
> @@ -3890,7 +3890,7 @@ DisownSelection(XtermWidget xw)
>  
>      for (i = 0; i < count; i++) {
>       int cutbuffer = CutBuffer(atoms[i]);
> -     if (cutbuffer < 0) {
> +     if (!screen->keepSelection && cutbuffer < 0) {
>           XtDisownSelection((Widget) xw, atoms[i],
>                             screen->selection_time);
>       }
> 

Actually this seems to be a much better patch.

Index: button.c
===================================================================
RCS file: /cvs/xenocara/app/xterm/button.c,v
retrieving revision 1.17
diff -u -p -r1.17 button.c
--- button.c    7 Mar 2011 20:41:27 -0000       1.17
+++ button.c    18 Aug 2011 14:12:19 -0000
@@ -2308,7 +2308,7 @@ SelectSet(XtermWidget xw,
     if (!isSameCELL(&(screen->startSel), &(screen->endSel))) {
        SaltTextAway(xw, &(screen->startSel), &(screen->endSel), params, 
num_params);
     } else {
-       DisownSelection(xw);
+       ScrnDisownSelection(xw);
     }
 }

Reply via email to