vcl/osx/salnativewidgets.cxx | 24 ++++++++++++++++-------- vcl/source/control/imp_listbox.cxx | 3 +++ vcl/source/window/brdwin.cxx | 8 +++++++- 3 files changed, 26 insertions(+), 9 deletions(-)
New commits: commit 5e75b7ca828954f9a23d7a3e8c3be3e0934210b3 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Wed Mar 3 21:10:57 2021 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Thu Mar 4 14:07:31 2021 +0100 macOS: use HITheme to draw listbox window border Change-Id: I39fd6f643649bc405447d10e7072ae6dabd679b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111935 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/vcl/osx/salnativewidgets.cxx b/vcl/osx/salnativewidgets.cxx index 17d1744433f4..5dd5929c2fc6 100644 --- a/vcl/osx/salnativewidgets.cxx +++ b/vcl/osx/salnativewidgets.cxx @@ -732,16 +732,14 @@ bool AquaSalGraphics::drawNativeControl(ControlType nType, case ControlPart::ListboxWindow: HIThemeFrameDrawInfo aTextDrawInfo; aTextDrawInfo.version = 0; - aTextDrawInfo.kind = kHIThemeFrameTextFieldSquare; - aTextDrawInfo.state = getState(nState); + aTextDrawInfo.kind = kHIThemeFrameListBox; + aTextDrawInfo.state = kThemeStateActive; aTextDrawInfo.isFocused = false; - rc.size.width -= 2 * FOCUS_RING_WIDTH; - rc.size.height -= 2 * FOCUS_RING_WIDTH; - rc.origin.x += FOCUS_RING_WIDTH; - rc.origin.y += FOCUS_RING_WIDTH; + rc.size.width += 2 * kThemeMetricListBoxFrameOutset - 2; + rc.size.height += 2 * kThemeMetricListBoxFrameOutset - 2; + rc.origin.x -= kThemeMetricListBoxFrameOutset - 1; + rc.origin.y -= kThemeMetricListBoxFrameOutset - 1; HIThemeDrawFrame(&rc, &aTextDrawInfo, maContextHolder.get(), kHIThemeOrientationNormal); - if (nState & ControlState::FOCUSED) - HIThemeDrawFocusRect(&rc, true, maContextHolder.get(), kHIThemeOrientationNormal); bOK = true; break; default: @@ -1046,6 +1044,16 @@ bool AquaSalGraphics::getNativeControlRegion(ControlType nType, rNativeContentRegion = tools::Rectangle(Point(x, y), Size(w, h)); toReturn = true; } + else if (nPart == ControlPart::ListboxWindow) + { + w = aCtrlBoundRect.GetWidth() - 2 * kThemeMetricListBoxFrameOutset; + h = aCtrlBoundRect.GetHeight() - 2 * kThemeMetricListBoxFrameOutset; + x += kThemeMetricListBoxFrameOutset; + y += kThemeMetricListBoxFrameOutset; + rNativeBoundingRegion = aCtrlBoundRect; + rNativeContentRegion = tools::Rectangle(Point(x, y), Size(w, h)); + toReturn = true; + } break; case ControlType::Spinbox: if (nPart == ControlPart::Entire) diff --git a/vcl/source/control/imp_listbox.cxx b/vcl/source/control/imp_listbox.cxx index ddff67bae584..0c5e8f1237f6 100644 --- a/vcl/source/control/imp_listbox.cxx +++ b/vcl/source/control/imp_listbox.cxx @@ -2792,6 +2792,9 @@ void ImplBtn::MouseButtonDown( const MouseEvent& ) ImplListBoxFloatingWindow::ImplListBoxFloatingWindow( vcl::Window* pParent ) : FloatingWindow( pParent, WB_BORDER | WB_SYSTEMWINDOW | WB_NOSHADOW ) // no drop shadow for list boxes { + // for native widget rendering we must be able to detect this window type + SetType( WindowType::LISTBOXWINDOW ); + mpImplLB = nullptr; mnDDLineCount = 0; mbAutoWidth = false; diff --git a/vcl/source/window/brdwin.cxx b/vcl/source/window/brdwin.cxx index b5bdd05d53d4..ec1e95c9db46 100644 --- a/vcl/source/window/brdwin.cxx +++ b/vcl/source/window/brdwin.cxx @@ -427,6 +427,7 @@ void ImplSmallBorderWindowView::Init( OutputDevice* pDev, tools::Long nWidth, to // for native widget drawing we must find out what // control this border belongs to ControlType aCtrlType = ControlType::Generic; + ControlPart aCtrlPart = ControlPart::Entire; if (pCtrl) { switch( pCtrl->GetType() ) @@ -438,6 +439,11 @@ void ImplSmallBorderWindowView::Init( OutputDevice* pDev, tools::Long nWidth, to mbNWFBorder = true; } break; + case WindowType::LISTBOXWINDOW: + aCtrlType = ControlType::Listbox; + aCtrlPart = ControlPart::ListboxWindow; + mbNWFBorder = true; + break; case WindowType::COMBOBOX: if( pCtrl->GetStyle() & WB_DROPDOWN ) { @@ -475,7 +481,7 @@ void ImplSmallBorderWindowView::Init( OutputDevice* pDev, tools::Long nWidth, to if( aMinSize.Height() < 10 ) aMinSize.setHeight( 10 ); tools::Rectangle aCtrlRegion( Point(mnLeftBorder, mnTopBorder), aMinSize ); tools::Rectangle aBounds, aContent; - if( pWin->GetNativeControlRegion( aCtrlType, ControlPart::Entire, aCtrlRegion, + if( pWin->GetNativeControlRegion( aCtrlType, aCtrlPart, aCtrlRegion, ControlState::ENABLED, aControlValue, aBounds, aContent ) ) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits