diff --git a/DSView/pv/ui/xtoolbutton.cpp b/DSView/pv/ui/xtoolbutton.cpp index 7c0e9189..ab82f6b3 100644 --- a/DSView/pv/ui/xtoolbutton.cpp +++ b/DSView/pv/ui/xtoolbutton.cpp @@ -24,6 +24,10 @@ #include #include "../log.h" +#ifdef _WIN32 +#include "winnativewidget.h" +#endif + namespace { static int _click_times = 0; @@ -68,6 +72,7 @@ void XToolButton::mousePressEvent(QMouseEvent *event) setChecked(true); QPoint pt = mapToGlobal(rect().bottomLeft()); connect(_menu, SIGNAL(aboutToHide()), this, SLOT(onHidePopupMenu())); + pv::WinNativeWidget::EnalbeNoClientArea(false); _menu->popup(pt); } else{ @@ -95,6 +100,8 @@ void XToolButton::onHidePopupMenu() setChecked(false); setCheckable(false); + pv::WinNativeWidget::EnalbeNoClientArea(true); + QWidget *widgetUnderMouse = qApp->widgetAt(QCursor::pos()); if (widgetUnderMouse != this){ _is_mouse_down = false; diff --git a/DSView/pv/winnativewidget.cpp b/DSView/pv/winnativewidget.cpp index 9c72c805..b5fc4b9d 100644 --- a/DSView/pv/winnativewidget.cpp +++ b/DSView/pv/winnativewidget.cpp @@ -51,6 +51,11 @@ namespace pv { +namespace +{ + bool g_enable_ncclient = true; +} + //-----------------------------WinNativeWidget WinNativeWidget::WinNativeWidget(const int x, const int y, const int width, const int height, QColor backColor) @@ -380,6 +385,10 @@ LRESULT WinNativeWidget::hitTest(HWND hWnd, WPARAM wParam, LPARAM lParam) long x = GET_X_LPARAM(lParam); long y = GET_Y_LPARAM(lParam); + if (!g_enable_ncclient){ + return HTCLIENT; + } + // Check if the size can to resize. if (!IsMaxsized()) { @@ -797,4 +806,9 @@ void WinNativeWidget::setShadowStatus(int windowStatus) } } +void WinNativeWidget::EnalbeNoClientArea(bool bEnabled) +{ + g_enable_ncclient = bEnabled; +} + } diff --git a/DSView/pv/winnativewidget.h b/DSView/pv/winnativewidget.h index 67454196..df316f46 100644 --- a/DSView/pv/winnativewidget.h +++ b/DSView/pv/winnativewidget.h @@ -96,6 +96,8 @@ public: void ReShowWindow(); + static void EnalbeNoClientArea(bool bEnabled); + private: QScreen* screenFromCurrentMonitorHandle(); bool isWinXOrGreater(DWORD major_version, DWORD minor_version, DWORD build_number);