From 4f51742ee12bea211b2fd0abd50a700e69a9a95c Mon Sep 17 00:00:00 2001 From: Wladimir Leuschner Date: Thu, 28 Sep 2023 13:34:28 +0200 Subject: [PATCH] Prevent state change of selected LineEdit in QWindowsVistaStyle when hovering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hovering over a selected LineEdit gives the selected state precedence over hover state. Fixes: QTBUG-117606 Pick-to: 6.5 6.6 Change-Id: Ia52ce94443100bf3fb5d83b8dffa2752818ca33d Reviewed-by: Oliver Wolff Reviewed-by: Santhosh Kumar Reviewed-by: Timothée Keller --- .../styles/windowsvista/qwindowsvistastyle.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp b/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp index a800e6ba224..b01a7eda3c6 100644 --- a/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp +++ b/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp @@ -1442,17 +1442,17 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt theme = OpenThemeData(nullptr, L"Edit"); partId = EP_EDITBORDER_NOSCROLL; - if (oldState & State_MouseOver) + if (oldState & State_HasFocus) + fromState = ETS_SELECTED; + else if (oldState & State_MouseOver) fromState = ETS_HOT; - else if (oldState & State_HasFocus) - fromState = ETS_FOCUSED; else fromState = ETS_NORMAL; - if (state & State_MouseOver) + if (state & State_HasFocus) + toState = ETS_SELECTED; + else if (state & State_MouseOver) toState = ETS_HOT; - else if (state & State_HasFocus) - toState = ETS_FOCUSED; else toState = ETS_NORMAL; @@ -1957,10 +1957,10 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt stateId = ETS_DISABLED; else if (state & State_ReadOnly) stateId = ETS_READONLY; - else if (state & State_MouseOver) - stateId = ETS_HOT; else if (state & State_HasFocus) stateId = ETS_SELECTED; + else if (state & State_MouseOver) + stateId = ETS_HOT; QWindowsThemeData theme(widget, painter, QWindowsVistaStylePrivate::EditTheme, EP_EDITBORDER_NOSCROLL, stateId, option->rect);