include/svx/gridctrl.hxx | 4 - sd/source/ui/inc/ViewShellBase.hxx | 1 svx/source/fmcomp/fmgridif.cxx | 2 svx/source/fmcomp/gridctrl.cxx | 82 ++++++++++++++++++++++++++++++++----- 4 files changed, 74 insertions(+), 15 deletions(-)
New commits: commit 44daaebf835bb60fb7e442e928cd30191f15af52 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Nov 11 10:43:45 2015 +0000 Resolves: tdf#95723 arrange GridControl buttons to be always visible as long as there's space for them Change-Id: Id96069b5c50483309611381afdf62bb0d30e9c38 diff --git a/include/svx/gridctrl.hxx b/include/svx/gridctrl.hxx index b795a8e..5046f63 100644 --- a/include/svx/gridctrl.hxx +++ b/include/svx/gridctrl.hxx @@ -161,7 +161,6 @@ public: VclPtr<ImageButton> m_aNextBtn; // ImageButton for 'go to the next record' VclPtr<ImageButton> m_aLastBtn; // ImageButton for 'go to the last record' VclPtr<ImageButton> m_aNewBtn; // ImageButton for 'go to a new record' - sal_uInt16 m_nDefaultWidth; sal_Int32 m_nCurrentPos; bool m_bPositioning; // protect PositionDataSource against recursion @@ -191,7 +190,7 @@ public: void InvalidateState(sal_uInt16 nWhich) {SetState(nWhich);} void SetState(sal_uInt16 nWhich); bool GetState(sal_uInt16 nWhich) const; - sal_uInt16 GetDefaultWidth() const {return m_nDefaultWidth;} + sal_uInt16 ArrangeControls(); protected: virtual void Resize() override; @@ -200,7 +199,6 @@ public: private: DECL_LINK_TYPED(OnClick, Button*, void); - sal_uInt16 ArrangeControls(); void PositionDataSource(sal_Int32 nRecord); }; diff --git a/svx/source/fmcomp/gridctrl.cxx b/svx/source/fmcomp/gridctrl.cxx index aaba9fd..5348090 100644 --- a/svx/source/fmcomp/gridctrl.cxx +++ b/svx/source/fmcomp/gridctrl.cxx @@ -343,7 +343,6 @@ DbGridControl::NavigationBar::NavigationBar(vcl::Window* pParent, WinBits nStyle ,m_aNextBtn(VclPtr<ImageButton>::Create(this, WB_REPEAT|WB_RECTSTYLE|WB_NOPOINTERFOCUS)) ,m_aLastBtn(VclPtr<ImageButton>::Create(this, WB_RECTSTYLE|WB_NOPOINTERFOCUS)) ,m_aNewBtn(VclPtr<ImageButton>::Create(this, WB_RECTSTYLE|WB_NOPOINTERFOCUS)) - ,m_nDefaultWidth(0) ,m_nCurrentPos(-1) ,m_bPositioning(false) { @@ -372,8 +371,6 @@ DbGridControl::NavigationBar::NavigationBar(vcl::Window* pParent, WinBits nStyle m_aRecordOf->SetText(SVX_RESSTR(RID_STR_REC_FROM_TEXT)); m_aRecordCount->SetText(OUString('?')); - m_nDefaultWidth = ArrangeControls(); - m_aFirstBtn->Disable(); m_aPrevBtn->Disable(); m_aNextBtn->Disable(); @@ -437,8 +434,9 @@ sal_uInt16 DbGridControl::NavigationBar::ArrangeControls() // positioning of the controls // calculate base size Rectangle aRect(static_cast<DbGridControl*>(GetParent())->GetControlArea()); - const long nH = aRect.GetSize().Height(); - Size aBorder = LogicToPixel(Size(2, 2),MAP_APPFONT); + long nH = aRect.GetSize().Height(); + long nW = GetParent()->GetOutputSizePixel().Width(); + Size aBorder = LogicToPixel(Size(2, 2),MAP_APPFONT); aBorder = Size(CalcZoom(aBorder.Width()), CalcZoom(aBorder.Height())); sal_uInt16 nX = 1; sal_uInt16 nY = 0; @@ -470,7 +468,7 @@ sal_uInt16 DbGridControl::NavigationBar::ArrangeControls() OUString textPattern(hairSpace); textPattern += sevenDigits; textPattern += hairSpace; - nTextWidth = m_aAbsolute->GetTextWidth( textPattern ); + nTextWidth = m_aAbsolute->GetTextWidth(textPattern); m_aAbsolute->SetPosPixel(Point(nX,nY)); m_aAbsolute->SetSizePixel(Size(nTextWidth, nH)); nX = sal::static_int_cast< sal_uInt16 >(nX + nTextWidth + aBorder.Width()); @@ -482,7 +480,7 @@ sal_uInt16 DbGridControl::NavigationBar::ArrangeControls() nX = sal::static_int_cast< sal_uInt16 >(nX + nTextWidth + aBorder.Width()); textPattern = sevenDigits + " * (" + sevenDigits + ")"; - nTextWidth = m_aRecordCount->GetTextWidth( textPattern ); + nTextWidth = m_aRecordCount->GetTextWidth(textPattern); m_aRecordCount->SetPosPixel(Point(nX,nY)); m_aRecordCount->SetSizePixel(Size(nTextWidth,nH)); nX = sal::static_int_cast< sal_uInt16 >(nX + nTextWidth + aBorder.Width()); @@ -497,6 +495,68 @@ sal_uInt16 DbGridControl::NavigationBar::ArrangeControls() nX = sal::static_int_cast< sal_uInt16 >(aButtonPos.X() + 1); + nW -= GetSettings().GetStyleSettings().GetScrollBarSize(); + + if (nX > nW) + { + aButtonPos.X() = nW-nH; + m_aNewBtn->SetPosPixel(aButtonPos); + aButtonPos.X() -= nH; + m_aLastBtn->SetPosPixel(aButtonPos); + aButtonPos.X() -= nH; + m_aNextBtn->SetPosPixel(aButtonPos); + aButtonPos.X() -= nH; + m_aPrevBtn->SetPosPixel(aButtonPos); + aButtonPos.X() -= nH; + m_aFirstBtn->SetPosPixel(aButtonPos); + + auto nDiff = nX - nW; + + Size aSize = m_aAbsolute->GetSizePixel(); + aSize.Width() -= nDiff/3.0; + m_aAbsolute->SetSizePixel(aSize); + + aSize = m_aRecordCount->GetSizePixel(); + aSize.Width() -= nDiff/3.0*2; + m_aRecordCount->SetSizePixel(aSize); + + Point aPos = m_aRecordOf->GetPosPixel(); + aPos.X() -= nDiff/3.0; + m_aRecordOf->SetPosPixel(aPos); + + aPos = m_aRecordCount->GetPosPixel(); + aPos.X() -= nDiff/3.0; + m_aRecordCount->SetPosPixel(aPos); + + vcl::Window* pWindows[] = + { + m_aRecordText.get(), + m_aAbsolute.get(), + m_aRecordOf.get(), + m_aRecordCount.get(), + m_aFirstBtn.get(), + m_aPrevBtn.get(), + m_aNextBtn.get(), + m_aLastBtn.get(), + m_aNewBtn.get() + }; + + for (size_t i=0; i < (sizeof (pWindows) / sizeof(pWindows[0])); ++i) + { + if (pWindows[i]->GetPosPixel().X() < 0) + pWindows[i]->SetSizePixel(Size(0, nH)); + aSize = pWindows[i]->GetSizePixel(); + auto nExcess = (pWindows[i]->GetPosPixel().X() + aSize.Width()) - nW; + if (nExcess > 0) + { + aSize.Width() -= nExcess; + pWindows[i]->SetSizePixel(aSize); + } + } + + nX = nW; + } + return nX; } @@ -775,7 +835,7 @@ void DbGridControl::NavigationBar::StateChanged(StateChangedType nType) SetZoomedPointFont(*this, aFont); // rearrange the controls - m_nDefaultWidth = ArrangeControls(); + ArrangeControls(); } break; default:; @@ -1150,9 +1210,9 @@ void DbGridControl::ArrangeControls(sal_uInt16& nX, sal_uInt16 nY) // positioning of the controls if (m_bNavigationBar) { - nX = m_aBar->GetDefaultWidth(); - Rectangle aRect(GetControlArea()); - m_aBar->SetPosSizePixel(Point(0,nY + 1), Size(nX, aRect.GetSize().Height() - 1)); + Rectangle aRect(GetControlArea()); + m_aBar->SetPosSizePixel(Point(0, nY + 1), Size(aRect.GetSize().Width(), aRect.GetSize().Height() - 1)); + nX = m_aBar->ArrangeControls(); } } commit a7816853bad55ada597092c16ba9a0a761e067d0 Author: Caolán McNamara <caol...@redhat.com> Date: Tue Nov 10 20:37:00 2015 +0000 Resolves: tdf#94069 call setVisible when setDesignMode is called void UnoControl::setDesignMode calls setVisible on the XWindow so it seems sensible that FmXGridPeer::setDesignMode should also do so. The desirable side effect is that moving the window in design mode then is moving a un-shown window so nothing is invalidated so the paint loop doesn't happen. Change-Id: Ic5a4ba62590372bec15a29b993b73d6dfb94a8a9 diff --git a/svx/source/fmcomp/fmgridif.cxx b/svx/source/fmcomp/fmgridif.cxx index 6136657..e91d2f3 100644 --- a/svx/source/fmcomp/fmgridif.cxx +++ b/svx/source/fmcomp/fmgridif.cxx @@ -1693,6 +1693,8 @@ void FmXGridPeer::setDesignMode(sal_Bool bOn) throw( RuntimeException, std::exce static_cast<FmGridControl*>(pWin)->SetDesignMode(bOn); } + setVisible(!bOn); + if (bOn) DisConnectFromDispatcher(); else commit 14c2b509928b7c7a437464c10bd0f57ff307ad54 Author: Caolán McNamara <caol...@redhat.com> Date: Tue Nov 10 12:22:40 2015 +0000 unused header Change-Id: I422d8f50e6dfb0d2ad2fb2ec49639a5f822d014d diff --git a/sd/source/ui/inc/ViewShellBase.hxx b/sd/source/ui/inc/ViewShellBase.hxx index d0271d5..74c7e2e 100644 --- a/sd/source/ui/inc/ViewShellBase.hxx +++ b/sd/source/ui/inc/ViewShellBase.hxx @@ -27,7 +27,6 @@ #include "glob.hxx" #include <sfx2/viewsh.hxx> #include <sfx2/viewfac.hxx> -#include <boost/scoped_ptr.hpp> #include <memory> class SdDrawDocument;
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits