From 01d9b402aef7d018ccf8bdca149f7288fa5d0ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parodi=2C=20Eugenio=20=F0=9F=8C=B6?= Date: Mon, 2 Mar 2026 08:19:09 +0000 Subject: [PATCH] chore: reworked the release and drag events --- libs/pyTermTk/TermTk/TTkCore/ttk.py | 21 ++++++++------------ libs/pyTermTk/TermTk/TTkWidgets/tabwidget.py | 4 ++-- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/libs/pyTermTk/TermTk/TTkCore/ttk.py b/libs/pyTermTk/TermTk/TTkCore/ttk.py index a171bf5e..c48f4243 100644 --- a/libs/pyTermTk/TermTk/TTkCore/ttk.py +++ b/libs/pyTermTk/TermTk/TTkCore/ttk.py @@ -320,21 +320,15 @@ class TTk(_TTkRootContainer): # - Drag # - Release focusWidget = self._getFocusWidget() - if ( focusWidget is not None and - ( mevt.evt == TTkK.Drag or - mevt.evt == TTkK.Release ) and - not TTkHelper.isDnD() ) : - x,y = TTkHelper.absPos(focusWidget) + pendingReleaseWidget = self._getPendingMouseReleaseWidget() + + if ( pendingReleaseWidget is not None and + mevt.evt in (TTkK.Drag,TTkK.Release) and + not TTkHelper.isDnD() ) : + x,y = TTkHelper.absPos(pendingReleaseWidget) nmevt = mevt.clone(pos=(mevt.x-x, mevt.y-y)) - focusWidget.mouseEvent(nmevt) + pendingReleaseWidget.mouseEvent(nmevt) else: - # Sometimes the release event is not retrieved - if ( ( _pmr:=self._getPendingMouseReleaseWidget() ) and - not TTkHelper.isDnD() ): - x,y = TTkHelper.absPos(_pmr) - rmevt = mevt.clone(evt=TTkK.Release, pos=(mevt.x-x, mevt.y-y)) - _pmr.mouseEvent(rmevt) - self._setPendingMouseReleaseWidget(None) # Adding this Crappy logic to handle a corner case in the drop routine # where the mouse is leaving any widget able to handle the drop event if not self.mouseEvent(mevt): @@ -348,6 +342,7 @@ class TTk(_TTkRootContainer): # Clean the Drag and Drop in case of mouse release if mevt.evt == TTkK.Release: TTkHelper.dndEnd() + self._setPendingMouseReleaseWidget(None) def _time_event(self): # Event.{wait and clear} should be atomic, diff --git a/libs/pyTermTk/TermTk/TTkWidgets/tabwidget.py b/libs/pyTermTk/TermTk/TTkWidgets/tabwidget.py index e696a937..69f762f8 100644 --- a/libs/pyTermTk/TermTk/TTkWidgets/tabwidget.py +++ b/libs/pyTermTk/TermTk/TTkWidgets/tabwidget.py @@ -367,7 +367,7 @@ class TTkTabButton(_TTkTabColorButton): if self._closable and y == offY and w-4<=x bool: @@ -379,7 +379,7 @@ class TTkTabButton(_TTkTabColorButton): elif self._closable and y == offY and w-4<=x