From ec96dbb048bd7d261e5434876e7449bee96d3059 Mon Sep 17 00:00:00 2001 From: Xiaokang2022 <2951256653@qq.com> Date: Sat, 12 Oct 2024 15:59:07 +0800 Subject: [PATCH 1/3] fix: unexpected behavior caused by the input method --- Lib/idlelib/multicall.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Lib/idlelib/multicall.py b/Lib/idlelib/multicall.py index 41f81813113062..b2bea00aea9d39 100644 --- a/Lib/idlelib/multicall.py +++ b/Lib/idlelib/multicall.py @@ -334,6 +334,13 @@ def __init__(self, *args, **kwargs): def bind(self, sequence=None, func=None, add=None): #print("bind(%s, %s, %s)" % (sequence, func, add), # file=sys.__stderr__) + def wrapper(event): + if event.type == tkinter.EventType.Key: + # Check for any mismatch between event.char and event.keysym + if len(event.char) and event.char.isprintable() \ + and event.char.lower() != event.keysym.lower(): + return None + return func(event) if type(sequence) is str and len(sequence) > 2 and \ sequence[:2] == "<<" and sequence[-2:] == ">>": if sequence in self.__eventinfo: @@ -341,13 +348,13 @@ def bind(self, sequence=None, func=None, add=None): if ei[0] is not None: for triplet in ei[1]: self.__binders[triplet[1]].unbind(triplet, ei[0]) - ei[0] = func + ei[0] = wrapper if ei[0] is not None: for triplet in ei[1]: - self.__binders[triplet[1]].bind(triplet, func) + self.__binders[triplet[1]].bind(triplet, wrapper) else: - self.__eventinfo[sequence] = [func, []] - return widget.bind(self, sequence, func, add) + self.__eventinfo[sequence] = [wrapper, []] + return widget.bind(self, sequence, wrapper, add) def unbind(self, sequence, funcid=None): if type(sequence) is str and len(sequence) > 2 and \ From c10a2d5fcca00390fa6f25aba905e90a8c699cc4 Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Sat, 12 Oct 2024 08:08:38 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../next/IDLE/2024-10-12-08-08-37.gh-issue-125349.u0nToN.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/IDLE/2024-10-12-08-08-37.gh-issue-125349.u0nToN.rst diff --git a/Misc/NEWS.d/next/IDLE/2024-10-12-08-08-37.gh-issue-125349.u0nToN.rst b/Misc/NEWS.d/next/IDLE/2024-10-12-08-08-37.gh-issue-125349.u0nToN.rst new file mode 100644 index 00000000000000..c730061c9f4bb5 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2024-10-12-08-08-37.gh-issue-125349.u0nToN.rst @@ -0,0 +1 @@ +Fixed unexpected behavior caused by the input method. From 2fbe2a8cef760aa450fe1fa7b1610e07cf849476 Mon Sep 17 00:00:00 2001 From: Xiaokang2022 <2951256653@qq.com> Date: Sun, 13 Oct 2024 19:33:29 +0800 Subject: [PATCH 3/3] style: Modified the code style --- Lib/idlelib/multicall.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/idlelib/multicall.py b/Lib/idlelib/multicall.py index b2bea00aea9d39..e1bbeb3e5c2cd5 100644 --- a/Lib/idlelib/multicall.py +++ b/Lib/idlelib/multicall.py @@ -337,8 +337,8 @@ def bind(self, sequence=None, func=None, add=None): def wrapper(event): if event.type == tkinter.EventType.Key: # Check for any mismatch between event.char and event.keysym - if len(event.char) and event.char.isprintable() \ - and event.char.lower() != event.keysym.lower(): + if (len(event.char) and event.char.isprintable() + and event.char.lower() != event.keysym.lower()): return None return func(event) if type(sequence) is str and len(sequence) > 2 and \