On Wed, 29 Sep 2004, Jan Willem Stumpel wrote:

> It is strange .. copying and pasting to and from xdosemu (text
> programs only, of course) *does* works fine in 1.3. And it works
> irrespective of the font used, and whether the text window is
> resizable or not!

I had problems myself with KDE 3.2.3: after you selected by dragging the
mouse it would be cleared as soon as I released the mouse button. That's
fixed now and committed to the CVS. The fix for 1.2.2 is below in case
anyone is interested.

> Why selections are highlighted in some programs and not in others,
> I have no idea. Even within the same program there are
> differences. For instance in Turbo C, selections are highlighted
> in the main edit screen, but not in the help screens. But
> selections can be taken from both of them.

True, I'll have a look at that later.

Bart

--- src/env/video/X.c   4 Jul 2004 05:39:55 -0000       1.4.2.10
+++ src/env/video/X.c   14 Oct 2004 09:34:04 -0000
@@ -453,9 +453,16 @@
 static int sel_start_row = -1, sel_end_row = -1, sel_start_col, sel_end_col;
 static unsigned short *sel_start = NULL, *sel_end = NULL;
 static u_char *sel_text = NULL;
-static Atom compound_text_atom = None;
-static Atom utf8_text_atom = None;
-static Atom text_atom = None;
+enum {
+  TARGETS_ATOM,
+  TIMESTAMP_ATOM,
+  COMPOUND_TARGET,
+  UTF8_TARGET,
+  TEXT_TARGET,
+  STRING_TARGET,
+  NUM_TARGETS
+};
+static Atom targets[NUM_TARGETS];
 static Boolean doing_selection = FALSE, visible_selection = FALSE;
 #endif

@@ -844,9 +851,12 @@
   }
 #if CONFIG_X_SELECTION
   /* Get atom for COMPOUND_TEXT/UTF8/TEXT type. */
-  compound_text_atom = XInternAtom(display, "COMPOUND_TEXT", False);
-  utf8_text_atom = XInternAtom(display, "UTF8_STRING", False);
-  text_atom = XInternAtom(display, "TEXT", False);
+  targets[TARGETS_ATOM] = XInternAtom(display, "TARGETS", False);
+  targets[TIMESTAMP_ATOM] = XInternAtom(display, "TIMESTAMP", False);
+  targets[COMPOUND_TARGET] = XInternAtom(display, "COMPOUND_TEXT", False);
+  targets[UTF8_TARGET] = XInternAtom(display, "UTF8_STRING", False);
+  targets[TEXT_TARGET] = XInternAtom(display, "TEXT", False);
+  targets[STRING_TARGET] = XA_STRING;
 #endif
   /* Delete-Window-Message black magic copied from xloadimage. */
   proto_atom  = XInternAtom(display, "WM_PROTOCOLS", False);
@@ -4094,8 +4104,20 @@
                        (unsigned long) requestor);
                e.xselection.property = None;
        }
-       else if ((target == XA_STRING) || (target == compound_text_atom) ||
-                (target == utf8_text_atom) || (target == text_atom)) {
+       else if (target == targets[TARGETS_ATOM]) {
+               X_printf("X: selection: TARGETS\n");
+               XChangeProperty(display, requestor, property, XA_ATOM, 32,
+                       PropModeReplace, (char *)targets, NUM_TARGETS);
+       }
+       else if (target == targets[TIMESTAMP_ATOM]) {
+               X_printf("X: timestamp atom\n");
+               XChangeProperty(display, requestor, property, XA_INTEGER, 32,
+                       PropModeReplace, (char *)&e.xselection.time, 1);
+       }
+       else if (target == targets[STRING_TARGET] ||
+               target == targets[COMPOUND_TARGET] ||
+               target == targets[UTF8_TARGET] ||
+               target == targets[TEXT_TARGET]) {
                X_printf("X: selection: %s\n",sel_text);
                e.xselection.target = target;
                XChangeProperty(display, requestor, property, target, 8, 
PropModeReplace,
@@ -4107,8 +4129,9 @@
        else
        {
                e.xselection.property = None;
-               X_printf("X: Window 0x%lx requested unknown selection format %ld\n",
-                       (unsigned long) requestor, (unsigned long) target);
+               X_printf("X: Window 0x%lx requested unknown selection format %ld %s\n",
+                       (unsigned long) requestor, (unsigned long) target,
+                        XGetAtomName(display, target));
        }
        XSendEvent(display, requestor, False, 0, &e);
 }
-
To unsubscribe from this list: send the line "unsubscribe linux-msdos" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to