mirror of https://github.com/python/cpython
Issue #14777: In an X11 windowing environment, tkinter may return
undecoded UTF-8 bytes as a string when accessing the Tk clipboard. Modify clipboad_get() to first request type UTF8_STRING when no specific type is requested in an X11 windowing environment, falling back to the current default type STRING if that fails. Original patch by Thomas Kluyver.
This commit is contained in:
parent
a790c9b6d6
commit
4d377d98a1
|
@ -526,12 +526,19 @@ class Misc:
|
|||
|
||||
The type keyword specifies the form in which the data is
|
||||
to be returned and should be an atom name such as STRING
|
||||
or FILE_NAME. Type defaults to STRING.
|
||||
or FILE_NAME. Type defaults to STRING, except on X11, where the default
|
||||
is to try UTF8_STRING and fall back to STRING.
|
||||
|
||||
This command is equivalent to:
|
||||
|
||||
selection_get(CLIPBOARD)
|
||||
"""
|
||||
if 'type' not in kw and self._windowingsystem == 'x11':
|
||||
try:
|
||||
kw['type'] = 'UTF8_STRING'
|
||||
return self.tk.call(('clipboard', 'get') + self._options(kw))
|
||||
except TclError:
|
||||
del kw['type']
|
||||
return self.tk.call(('clipboard', 'get') + self._options(kw))
|
||||
|
||||
def clipboard_clear(self, **kw):
|
||||
|
@ -613,8 +620,16 @@ class Misc:
|
|||
A keyword parameter selection specifies the name of
|
||||
the selection and defaults to PRIMARY. A keyword
|
||||
parameter displayof specifies a widget on the display
|
||||
to use."""
|
||||
to use. A keyword parameter type specifies the form of data to be
|
||||
fetched, defaulting to STRING except on X11, where UTF8_STRING is tried
|
||||
before STRING."""
|
||||
if 'displayof' not in kw: kw['displayof'] = self._w
|
||||
if 'type' not in kw and self._windowingsystem == 'x11':
|
||||
try:
|
||||
kw['type'] = 'UTF8_STRING'
|
||||
return self.tk.call(('selection', 'get') + self._options(kw))
|
||||
except TclError:
|
||||
del kw['type']
|
||||
return self.tk.call(('selection', 'get') + self._options(kw))
|
||||
def selection_handle(self, command, **kw):
|
||||
"""Specify a function COMMAND to call if the X
|
||||
|
@ -1029,6 +1044,15 @@ class Misc:
|
|||
if displayof is None:
|
||||
return ('-displayof', self._w)
|
||||
return ()
|
||||
@property
|
||||
def _windowingsystem(self):
|
||||
"""Internal function."""
|
||||
try:
|
||||
return self._root()._windowingsystem_cached
|
||||
except AttributeError:
|
||||
ws = self._root()._windowingsystem_cached = \
|
||||
self.tk.call('tk', 'windowingsystem')
|
||||
return ws
|
||||
def _options(self, cnf, kw = None):
|
||||
"""Internal function."""
|
||||
if kw:
|
||||
|
|
|
@ -63,6 +63,12 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #14777: tkinter may return undecoded UTF-8 bytes as a string when
|
||||
accessing the Tk clipboard. Modify clipboad_get() to first request type
|
||||
UTF8_STRING when no specific type is requested in an X11 windowing
|
||||
environment, falling back to the current default type STRING if that fails.
|
||||
Original patch by Thomas Kluyver.
|
||||
|
||||
- Issue #12541: Be lenient with quotes around Realm field of HTTP Basic
|
||||
Authentation in urllib2.
|
||||
|
||||
|
|
Loading…
Reference in New Issue