mirror of
https://github.com/python/cpython
synced 2024-09-16 01:31:10 +00:00
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 @@ def clipboard_get(self, **kw):
|
|||
|
||||
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 @@ def selection_get(self, **kw):
|
|||
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 @@ def _displayof(self, displayof):
|
|||
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 a new issue