solenv/sanitizers/ui/modules/swriter.suppr | 4 sw/source/uibase/docvw/FrameControlsManager.cxx | 4 sw/source/uibase/docvw/OutlineContentVisibilityWin.cxx | 83 ++++++++--------- sw/source/uibase/inc/OutlineContentVisibilityWin.hxx | 15 ++- sw/uiconfig/swriter/ui/outlinebutton.ui | 8 - 5 files changed, 62 insertions(+), 52 deletions(-)
New commits: commit 48570b9b5e4939069f8a1a2541fd4efe6f2bb0aa Author: Jim Raykowski <[email protected]> AuthorDate: Sat Mar 13 09:49:59 2021 -0900 Commit: Jim Raykowski <[email protected]> CommitDate: Thu Mar 18 08:29:11 2021 +0100 tdf#140892 Outline Content Visibility Window button improvements - Makes the horizontal position of the button near to the first character horizontal position in the frame. - For RTL frames places the button to the right. - Changes the button symbol for show/expand content from a right-arrow to a down-arrow and for hide/collapse content from a down-arrow to an up-arrow. - SymbolType enums are replaced with ButtonSymbol enums to represent the button symbol for the outline content visibility state. Change-Id: Ie5d94b0dec0690c0798098ed19e38cc13d9d2682 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112463 Tested-by: Jenkins Reviewed-by: Jim Raykowski <[email protected]> diff --git a/solenv/sanitizers/ui/modules/swriter.suppr b/solenv/sanitizers/ui/modules/swriter.suppr index c828774ca825..a3a2bbd9c799 100644 --- a/solenv/sanitizers/ui/modules/swriter.suppr +++ b/solenv/sanitizers/ui/modules/swriter.suppr @@ -122,8 +122,8 @@ sw/uiconfig/swriter/ui/notebookbar_groups.ui://GtkLabel[@id='formatgrouplabel'] sw/uiconfig/swriter/ui/notebookbar_groups.ui://GtkLabel[@id='insertgrouplabel'] orphan-label sw/uiconfig/swriter/ui/notebookbar_groups.ui://GtkLabel[@id='tablegrouplabel'] orphan-label sw/uiconfig/swriter/ui/notebookbar_groups.ui://GtkLabel[@id='imagegrouplabel'] orphan-label -sw/uiconfig/swriter/ui/outlinebutton.ui://GtkButton[@id='right'] button-no-label -sw/uiconfig/swriter/ui/outlinebutton.ui://GtkButton[@id='down'] button-no-label +sw/uiconfig/swriter/ui/outlinebutton.ui://GtkButton[@id='show'] button-no-label +sw/uiconfig/swriter/ui/outlinebutton.ui://GtkButton[@id='hide'] button-no-label sw/uiconfig/swriter/ui/pagemargincontrol.ui://GtkSpinButton[@id='hidden'] no-labelled-by sw/uiconfig/swriter/ui/pagesizecontrol.ui://GtkSpinButton[@id='metric'] no-labelled-by sw/uiconfig/swriter/ui/printmonitordialog.ui://GtkLabel[@id='docname'] orphan-label diff --git a/sw/source/uibase/docvw/FrameControlsManager.cxx b/sw/source/uibase/docvw/FrameControlsManager.cxx index aaf7aefd1302..622d5fced30b 100644 --- a/sw/source/uibase/docvw/FrameControlsManager.cxx +++ b/sw/source/uibase/docvw/FrameControlsManager.cxx @@ -269,7 +269,7 @@ void SwFrameControlsManager::SetOutlineContentVisibilityButton(const SwTextNode* assert(pWin != nullptr) ; pWin->Set(); - if (pWin->GetSymbol() == SymbolType::ARROW_RIGHT) + if (pWin->GetSymbol() == ButtonSymbol::SHOW) { // show expand button immediately pWin->Show(); @@ -308,7 +308,7 @@ void SwFrameControlsManager::SetOutlineContentVisibilityButton(const SwTextNode* } } } - else if (!pWin->IsVisible() && pWin->GetSymbol() == SymbolType::ARROW_DOWN) + else if (!pWin->IsVisible() && pWin->GetSymbol() == ButtonSymbol::HIDE) pWin->ShowAll(true); } diff --git a/sw/source/uibase/docvw/OutlineContentVisibilityWin.cxx b/sw/source/uibase/docvw/OutlineContentVisibilityWin.cxx index 07f5122d1800..3a8284fd4398 100644 --- a/sw/source/uibase/docvw/OutlineContentVisibilityWin.cxx +++ b/sw/source/uibase/docvw/OutlineContentVisibilityWin.cxx @@ -26,8 +26,8 @@ SwOutlineContentVisibilityWin::SwOutlineContentVisibilityWin(SwEditWin* pEditWin, const SwFrame* pFrame) : InterimItemWindow(pEditWin, "modules/swriter/ui/outlinebutton.ui", "OutlineButton") - , m_xRightBtn(m_xBuilder->weld_button("right")) - , m_xDownBtn(m_xBuilder->weld_button("down")) + , m_xShowBtn(m_xBuilder->weld_button("show")) + , m_xHideBtn(m_xBuilder->weld_button("hide")) , m_pEditWin(pEditWin) , m_pFrame(pFrame) , m_nDelayAppearing(0) @@ -38,19 +38,19 @@ SwOutlineContentVisibilityWin::SwOutlineContentVisibilityWin(SwEditWin* pEditWin SetPaintTransparent(false); SetBackground(rStyleSettings.GetFaceColor()); - Size aBtnsSize(m_xRightBtn->get_preferred_size()); + Size aBtnsSize(m_xShowBtn->get_preferred_size()); auto nDim = std::max(aBtnsSize.Width(), aBtnsSize.Height()); - m_xRightBtn->set_size_request(nDim, nDim); - m_xDownBtn->set_size_request(nDim, nDim); + m_xShowBtn->set_size_request(nDim, nDim); + m_xHideBtn->set_size_request(nDim, nDim); SetSizePixel(get_preferred_size()); - SetSymbol(SymbolType::DONTKNOW); + SetSymbol(ButtonSymbol::NONE); - m_xRightBtn->connect_mouse_press(LINK(this, SwOutlineContentVisibilityWin, MousePressHdl)); - m_xDownBtn->connect_mouse_press(LINK(this, SwOutlineContentVisibilityWin, MousePressHdl)); + m_xShowBtn->connect_mouse_press(LINK(this, SwOutlineContentVisibilityWin, MousePressHdl)); + m_xHideBtn->connect_mouse_press(LINK(this, SwOutlineContentVisibilityWin, MousePressHdl)); - m_xRightBtn->connect_key_press(LINK(this, SwOutlineContentVisibilityWin, KeyInputHdl)); - m_xDownBtn->connect_key_press(LINK(this, SwOutlineContentVisibilityWin, KeyInputHdl)); + m_xShowBtn->connect_key_press(LINK(this, SwOutlineContentVisibilityWin, KeyInputHdl)); + m_xHideBtn->connect_key_press(LINK(this, SwOutlineContentVisibilityWin, KeyInputHdl)); m_aDelayTimer.SetTimeout(25); m_aDelayTimer.SetInvokeHandler(LINK(this, SwOutlineContentVisibilityWin, DelayAppearHandler)); @@ -64,44 +64,44 @@ void SwOutlineContentVisibilityWin::dispose() m_pEditWin.clear(); m_pFrame = nullptr; - m_xDownBtn.reset(); - m_xRightBtn.reset(); + m_xHideBtn.reset(); + m_xShowBtn.reset(); InterimItemWindow::dispose(); } -SymbolType SwOutlineContentVisibilityWin::GetSymbol() const +ButtonSymbol SwOutlineContentVisibilityWin::GetSymbol() const { - if (m_xRightBtn->get_visible()) - return SymbolType::ARROW_RIGHT; - if (m_xDownBtn->get_visible()) - return SymbolType::ARROW_DOWN; - return SymbolType::DONTKNOW; + if (m_xShowBtn->get_visible()) + return ButtonSymbol::SHOW; + if (m_xHideBtn->get_visible()) + return ButtonSymbol::HIDE; + return ButtonSymbol::NONE; } -void SwOutlineContentVisibilityWin::SetSymbol(SymbolType eStyle) +void SwOutlineContentVisibilityWin::SetSymbol(ButtonSymbol eStyle) { if (GetSymbol() == eStyle) return; - bool bRight = eStyle == SymbolType::ARROW_RIGHT; - bool bDown = eStyle == SymbolType::ARROW_DOWN; + bool bShow = eStyle == ButtonSymbol::SHOW; + bool bHide = eStyle == ButtonSymbol::HIDE; bool bControlHasFocus = ControlHasFocus(); // disable mouse move for the hidden button so we don't get mouse // leave events we don't care about when we swap buttons - m_xRightBtn->connect_mouse_move(Link<const MouseEvent&, bool>()); - m_xDownBtn->connect_mouse_move(Link<const MouseEvent&, bool>()); + m_xShowBtn->connect_mouse_move(Link<const MouseEvent&, bool>()); + m_xHideBtn->connect_mouse_move(Link<const MouseEvent&, bool>()); - m_xRightBtn->set_visible(bRight); - m_xDownBtn->set_visible(bDown); + m_xShowBtn->set_visible(bShow); + m_xHideBtn->set_visible(bHide); weld::Button* pButton = nullptr; - if (bRight) - pButton = m_xRightBtn.get(); - else if (bDown) - pButton = m_xDownBtn.get(); + if (bShow) + pButton = m_xShowBtn.get(); + else if (bHide) + pButton = m_xHideBtn.get(); InitControlBase(pButton); if (pButton) { @@ -118,7 +118,7 @@ void SwOutlineContentVisibilityWin::Set() // outline node frame containing folded outline node content might be folded so need to hide it if (!pTextFrame || pTextFrame->IsInDtor()) { - SetSymbol(SymbolType::DONTKNOW); + SetSymbol(ButtonSymbol::NONE); Hide(); return; } @@ -135,8 +135,7 @@ void SwOutlineContentVisibilityWin::Set() } // set symbol displayed on button - SetSymbol(rSh.IsOutlineContentVisible(m_nOutlinePos) ? SymbolType::ARROW_DOWN - : SymbolType::ARROW_RIGHT); + SetSymbol(rSh.IsOutlineContentVisible(m_nOutlinePos) ? ButtonSymbol::HIDE : ButtonSymbol::SHOW); // set quick help SwOutlineNodes::size_type nOutlineNodesCount @@ -150,12 +149,16 @@ void SwOutlineContentVisibilityWin::Set() SetQuickHelpText(sQuickHelp); // Set the position of the window - SwRect aSwRect = GetFrame()->getFrameArea(); // not far in margin - //SwRect aSwRect = GetFrame()->GetPaintArea(); // far in margin - aSwRect.AddTop(GetFrame()->GetTopMargin()); + SwRect aFrameAreaRect = GetFrame()->getFrameArea(); + aFrameAreaRect.AddTop(GetFrame()->GetTopMargin()); + SwRect aCharRect; + GetFrame()->GetCharRect(aCharRect, SwPosition(*pTextNode)); Point aPxPt(GetEditWin()->GetOutDev()->LogicToPixel( - aSwRect.TopLeft() - (aSwRect.TopLeft() - aSwRect.BottomLeft()) / 2)); - aPxPt.AdjustX(-GetSizePixel().getWidth() + 1); + Point(aCharRect.Right(), aFrameAreaRect.Center().getY()))); + if (GetFrame()->IsRightToLeft()) + aPxPt.AdjustX(5); + else + aPxPt.AdjustX(-(GetSizePixel().getWidth() + 5)); aPxPt.AdjustY(-GetSizePixel().getHeight() / 2); SetPosPixel(aPxPt); } @@ -215,8 +218,8 @@ void SwOutlineContentVisibilityWin::ToggleOutlineContentVisibility(const bool bS rSh.ToggleOutlineContentVisibility(m_nOutlinePos); if (!m_bDestroyed) { - SetSymbol(rSh.IsOutlineContentVisible(m_nOutlinePos) ? SymbolType::ARROW_DOWN - : SymbolType::ARROW_RIGHT); + SetSymbol(rSh.IsOutlineContentVisible(m_nOutlinePos) ? ButtonSymbol::HIDE + : ButtonSymbol::SHOW); } rSh.LockView(false); } @@ -248,7 +251,7 @@ IMPL_LINK(SwOutlineContentVisibilityWin, MouseMoveHdl, const MouseEvent&, rMEvt, { // MouseMove event may not be seen by edit window // hide collapse button and grab focus to document - if (GetSymbol() != SymbolType::ARROW_RIGHT) + if (GetSymbol() != ButtonSymbol::SHOW) Hide(); GrabFocusToDocument(); } diff --git a/sw/source/uibase/inc/OutlineContentVisibilityWin.hxx b/sw/source/uibase/inc/OutlineContentVisibilityWin.hxx index 02866f8532d5..fcd7617e40a1 100644 --- a/sw/source/uibase/inc/OutlineContentVisibilityWin.hxx +++ b/sw/source/uibase/inc/OutlineContentVisibilityWin.hxx @@ -12,11 +12,18 @@ #include "edtwin.hxx" #include "FrameControl.hxx" +enum class ButtonSymbol +{ + SHOW, + HIDE, + NONE +}; + class SwOutlineContentVisibilityWin : public InterimItemWindow, public ISwFrameControl { private: - std::unique_ptr<weld::Button> m_xRightBtn; - std::unique_ptr<weld::Button> m_xDownBtn; + std::unique_ptr<weld::Button> m_xShowBtn; + std::unique_ptr<weld::Button> m_xHideBtn; VclPtr<SwEditWin> m_pEditWin; const SwFrame* m_pFrame; @@ -41,8 +48,8 @@ public: void Set(); - void SetSymbol(SymbolType eTyle); - SymbolType GetSymbol() const; + void SetSymbol(ButtonSymbol eTyle); + ButtonSymbol GetSymbol() const; private: DECL_LINK(DelayAppearHandler, Timer*, void); diff --git a/sw/uiconfig/swriter/ui/outlinebutton.ui b/sw/uiconfig/swriter/ui/outlinebutton.ui index a0c2b9e5db82..775ec4c3cf16 100644 --- a/sw/uiconfig/swriter/ui/outlinebutton.ui +++ b/sw/uiconfig/swriter/ui/outlinebutton.ui @@ -5,13 +5,13 @@ <object class="GtkImage" id="image3"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="icon-name">go-next</property> + <property name="icon-name">go-down</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image5"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="icon-name">go-down</property> + <property name="icon-name">go-up</property> <property name="icon_size">1</property> </object> <object class="GtkBox" id="OutlineButton"> @@ -20,7 +20,7 @@ <property name="hexpand">True</property> <property name="vexpand">True</property> <child> - <object class="GtkButton" id="right"> + <object class="GtkButton" id="show"> <property name="can-focus">True</property> <property name="focus-on-click">False</property> <property name="receives-default">True</property> @@ -38,7 +38,7 @@ </packing> </child> <child> - <object class="GtkButton" id="down"> + <object class="GtkButton" id="hide"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="focus-on-click">False</property> _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
