]> git.eshelyaron.com Git - emacs.git/commitdiff
(x_own_selection): Accept Lisp string as result of
authorYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Fri, 6 May 2005 08:03:08 +0000 (08:03 +0000)
committerYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Fri, 6 May 2005 08:03:08 +0000 (08:03 +0000)
selection converter function.
(x_clear_frame_selections): Don't call x-lost-selection-functions
if Emacs is not owner of the selection.
(Vmac_services_selection): Put variable and initialization in
#ifdef MAC_OSX.
(syms_of_macselect) [MAC_OSX]: Set default value of
Vmac_services_selection to PRIMARY.

src/macselect.c

index 49246f7eddc9734ae5d3d79174e5e2e54babd45a..a115c9b32299ef8ab39cea9ff9499237de91049f 100644 (file)
@@ -98,8 +98,10 @@ static Lisp_Object Vselection_converter_alist;
    selection type with a scrap flavor type via `mac-ostype'.  */
 static Lisp_Object Qmac_scrap_name, Qmac_ostype;
 
+#ifdef MAC_OSX
 /* Selection name for communication via Services menu.  */
 static Lisp_Object Vmac_services_selection;
+#endif
 \f
 /* Get a reference to the scrap corresponding to the symbol SYM.  The
    reference is set to *SCRAP, and it becomes NULL if there's no
@@ -455,9 +457,11 @@ x_own_selection (selection_name, selection_value)
            value = call3 (handler_fn, selection_name,
                           type, selection_value);
 
-         if (CONSP (value)
-             && EQ (XCAR (value), type)
-             && STRINGP (XCDR (value)))
+         if (STRINGP (value))
+           err = put_scrap_string (scrap, type, value);
+         else if (CONSP (value)
+                  && EQ (XCAR (value), type)
+                  && STRINGP (XCDR (value)))
            err = put_scrap_string (scrap, type, XCDR (value));
        }
 
@@ -622,7 +626,8 @@ x_clear_frame_selections (f)
       hooks = Vx_lost_selection_functions;
       selection_symbol = Fcar (Fcar (Vselection_alist));
 
-      if (!EQ (hooks, Qunbound))
+      if (!EQ (hooks, Qunbound)
+         && !NILP (Fx_selection_owner_p (selection_symbol)))
        {
          for (; CONSP (hooks); hooks = Fcdr (hooks))
            call1 (Fcar (hooks), selection_symbol);
@@ -646,7 +651,8 @@ x_clear_frame_selections (f)
        hooks = Vx_lost_selection_functions;
        selection_symbol = Fcar (Fcar (XCDR (rest)));
 
-       if (!EQ (hooks, Qunbound))
+       if (!EQ (hooks, Qunbound)
+         && !NILP (Fx_selection_owner_p (selection_symbol)))
          {
            for (; CONSP (hooks); hooks = Fcdr (hooks))
              call1 (Fcar (hooks), selection_symbol);