From 7e27cd8e6f975b7f18b2c2723ca5d165c09fa1e7 Mon Sep 17 00:00:00 2001 From: John Scipione Date: Sun, 17 Nov 2019 21:55:24 -0500 Subject: [PATCH] Deskbar: Update window resize size limits MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With B_NOT_V_RESIZABLE ctrl+alt+rmb can be used to resize the window in undesired ways. Set window size limits to prevent user from resizing the window beyond the set size limits. Update window size limits on ScreenChanged() Fixes #15067 Change-Id: Ia10eafb9860009019be35ec5c244d034861eeae9 Reviewed-on: https://review.haiku-os.org/c/haiku/+/1968 Reviewed-by: Axel Dörfler Reviewed-by: Adrien Destugues --- src/apps/deskbar/BarView.cpp | 4 ++++ src/apps/deskbar/BarWindow.cpp | 17 +++++++++++++++++ src/apps/deskbar/BarWindow.h | 2 ++ 3 files changed, 23 insertions(+) diff --git a/src/apps/deskbar/BarView.cpp b/src/apps/deskbar/BarView.cpp index c362e04e4d..1450463857 100644 --- a/src/apps/deskbar/BarView.cpp +++ b/src/apps/deskbar/BarView.cpp @@ -733,6 +733,10 @@ TBarView::_ChangeState(BMessage* message) // enable or disable preference items. if (vertSwap) { + TBarWindow* window = dynamic_cast(Window()); + if (window != NULL) + window->SetSizeLimits(); + fReplicantTray->fTime->SetOrientation(fVertical); if (fExpandoMenuBar != NULL) { if (fVertical) { diff --git a/src/apps/deskbar/BarWindow.cpp b/src/apps/deskbar/BarWindow.cpp index 0b6bdcf418..388846bf5c 100644 --- a/src/apps/deskbar/BarWindow.cpp +++ b/src/apps/deskbar/BarWindow.cpp @@ -102,6 +102,8 @@ TBarWindow::TBarWindow() RemoveShortcut('H', B_COMMAND_KEY | B_CONTROL_KEY); AddShortcut('F', B_COMMAND_KEY, new BMessage(kFindButton)); + + SetSizeLimits(); } @@ -294,6 +296,7 @@ TBarWindow::ScreenChanged(BRect size, color_space depth) BWindow::ScreenChanged(size, depth); fBarView->UpdatePlacement(); + SetSizeLimits(); } @@ -647,6 +650,20 @@ TBarWindow::IsShowingMenu() const } +void +TBarWindow::SetSizeLimits() +{ + BRect screenFrame = (BScreen(this)).Frame(); + if (fBarView->Vertical()) { + BWindow::SetSizeLimits(gMinimumWindowWidth, gMaximumWindowWidth, + kMenuBarHeight - 1, screenFrame.Height()); + } else { + BWindow::SetSizeLimits(screenFrame.Width(), screenFrame.Width(), + kMenuBarHeight - 1, kMaximumIconSize + 4); + } +} + + bool TBarWindow::_IsFocusMessage(BMessage* message) { diff --git a/src/apps/deskbar/BarWindow.h b/src/apps/deskbar/BarWindow.h index 212a7ef5fb..ec6eb08fe0 100644 --- a/src/apps/deskbar/BarWindow.h +++ b/src/apps/deskbar/BarWindow.h @@ -87,6 +87,8 @@ public: bool IsShowingMenu() const; + void SetSizeLimits(); + private: bool _IsFocusMessage(BMessage* message);