From 78b80bc233f4a3fb430462ddd93163cc781b0843 Mon Sep 17 00:00:00 2001 From: ChugunovRoman Date: Fri, 19 Dec 2025 01:01:50 +0300 Subject: [PATCH 1/2] xrUICore/ComboBox/UIComboBox.cpp: fix missing clear mouse capturer if a current window has any opened ComboBox --- src/xrUICore/ComboBox/UIComboBox.cpp | 6 ++++++ src/xrUICore/ComboBox/UIComboBox.h | 2 ++ src/xrUICore/Windows/UIWindow.h | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/xrUICore/ComboBox/UIComboBox.cpp b/src/xrUICore/ComboBox/UIComboBox.cpp index 6117e1b1975..5cc71aa1b69 100644 --- a/src/xrUICore/ComboBox/UIComboBox.cpp +++ b/src/xrUICore/ComboBox/UIComboBox.cpp @@ -268,6 +268,12 @@ void CUIComboBox::ShowList(bool bShow) } } +void CUIComboBox::SetCapture(CUIWindow* pChildWindow, bool capture_status) +{ + if (m_eState == LIST_EXPANDED) + return; +} + void CUIComboBox::Update() { CUIWindow::Update(); diff --git a/src/xrUICore/ComboBox/UIComboBox.h b/src/xrUICore/ComboBox/UIComboBox.h index 611c3c6be23..5375b66b977 100644 --- a/src/xrUICore/ComboBox/UIComboBox.h +++ b/src/xrUICore/ComboBox/UIComboBox.h @@ -54,6 +54,8 @@ class XRUICORE_API CUIComboBox final : public CUIWindow, public CUIOptionsItem, void disable_id(int id); void enable_id(int id); + void SetCapture(CUIWindow* pChildWindow, bool capture_status) override; + pcstr GetDebugType() override { return "CUIComboBox"; } protected: diff --git a/src/xrUICore/Windows/UIWindow.h b/src/xrUICore/Windows/UIWindow.h index 3fdb39a7d9d..c64a85f28ea 100644 --- a/src/xrUICore/Windows/UIWindow.h +++ b/src/xrUICore/Windows/UIWindow.h @@ -209,7 +209,7 @@ class XRUICORE_API CUIWindow : public CUIDebuggable //захватить/освободить мышь окном //сообщение посылается дочерним окном родительскому - void SetCapture(CUIWindow* pChildWindow, bool capture_status); + virtual void SetCapture(CUIWindow* pChildWindow, bool capture_status); [[nodiscard]] CUIWindow* GetMouseCapturer() const { return m_pMouseCapturer; } From f8bcc8aa14854b1c6b4a237f284809ee71572bb2 Mon Sep 17 00:00:00 2001 From: ChugunovRoman Date: Fri, 19 Dec 2025 07:36:36 +0300 Subject: [PATCH 2/2] xrUICore/ComboBox/UIComboBox.cpp: update SetCapture condition --- src/xrUICore/ComboBox/UIComboBox.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xrUICore/ComboBox/UIComboBox.cpp b/src/xrUICore/ComboBox/UIComboBox.cpp index 5cc71aa1b69..ce3da4ea371 100644 --- a/src/xrUICore/ComboBox/UIComboBox.cpp +++ b/src/xrUICore/ComboBox/UIComboBox.cpp @@ -270,7 +270,7 @@ void CUIComboBox::ShowList(bool bShow) void CUIComboBox::SetCapture(CUIWindow* pChildWindow, bool capture_status) { - if (m_eState == LIST_EXPANDED) + if (m_eState == LIST_EXPANDED && !capture_status) return; }