mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-21 06:55:39 +00:00
Fix bug#72254
* src/pgtkselect.c (Fpgtk_get_selection_internal): If requesting TARGETS with just one result, return it as a vector. (bug#72254)
This commit is contained in:
parent
9a1c76bf7f
commit
11e7ae3964
@ -1644,10 +1644,24 @@ frame's display, or the first available X display. */)
|
||||
|
||||
if (NILP (val) && FRAME_LIVE_P (f))
|
||||
{
|
||||
Lisp_Object frame;
|
||||
Lisp_Object frame, val;
|
||||
XSETFRAME (frame, f);
|
||||
return pgtk_get_foreign_selection (selection_symbol, target_type,
|
||||
time_stamp, frame);
|
||||
|
||||
val = pgtk_get_foreign_selection (selection_symbol, target_type,
|
||||
time_stamp, frame);
|
||||
|
||||
/* A window property holding just one item is indistinguishable
|
||||
from an array of one element, and is always decoded as the
|
||||
former, producing issues with programs that expect the TARGETS
|
||||
property always to return vectors, even when the toolkit
|
||||
reports just one data type. Though X sidesteps this ambiguity
|
||||
by defining TARGETS as returning at least two properties
|
||||
TARGETS and MULTIPLE, GTK knows no such scruples, and therefore
|
||||
symbol values (or nil) should be enclosed in vectors when
|
||||
TARGETS is being requested. (bug#72254) */
|
||||
if (EQ (target_type, QTARGETS) && (NILP (val) || SYMBOLP (val)))
|
||||
val = make_vector (NILP (val) ? 0 : 1, val);
|
||||
return val;
|
||||
}
|
||||
|
||||
if (CONSP (val) && SYMBOLP (XCAR (val)))
|
||||
|
Loading…
Reference in New Issue
Block a user