Revert "Related: tdf#130035 let SvxLineEndWindow have a menubutton parent"
This reverts commit 08e633d777f1d2cf11a93ccb55f231d084f3220c.
Reason for revert: unnecessary if we use the toolbar in the sidebar without bringing any menubutton into it
Change-Id: I8392d01415af2f5e60aa70abe52e4809f52621fa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87142
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/include/svx/colorwindow.hxx b/include/svx/colorwindow.hxx
index e87b601..8a2f427 100644
--- a/include/svx/colorwindow.hxx
+++ b/include/svx/colorwindow.hxx
@@ -22,7 +22,6 @@
#include <svtools/toolbarmenu.hxx>
#include <rtl/ustring.hxx>
#include <svx/dlgctrl.hxx>
#include <svx/SvxColorValueSet.hxx>
#include <svx/Palette.hxx>
#include <vcl/lstbox.hxx>
@@ -110,6 +109,34 @@ public:
class SvxColorToolBoxControl;
class SVX_DLLPUBLIC MenuOrToolMenuButton
{
private:
// either
weld::MenuButton* m_pMenuButton;
// or
weld::Toolbar* m_pToolbar;
OString m_aIdent;
// or
SvxColorToolBoxControl* m_pControl;
VclPtr<ToolBox> m_xToolBox;
sal_uInt16 m_nId;
public:
MenuOrToolMenuButton(weld::MenuButton* pMenuButton);
MenuOrToolMenuButton(weld::Toolbar* pToolbar, const OString& rIdent);
MenuOrToolMenuButton(SvxColorToolBoxControl* pControl, ToolBox* pToolbar, sal_uInt16 nId);
~MenuOrToolMenuButton();
MenuOrToolMenuButton(MenuOrToolMenuButton const &) = default;
MenuOrToolMenuButton(MenuOrToolMenuButton &&) = default;
MenuOrToolMenuButton & operator =(MenuOrToolMenuButton const &) = default;
MenuOrToolMenuButton & operator =(MenuOrToolMenuButton &&) = default;
bool get_active() const;
void set_inactive() const;
weld::Widget* get_widget() const;
};
class SVX_DLLPUBLIC ColorWindow final : public WeldToolbarPopup
{
private:
diff --git a/include/svx/dlgctrl.hxx b/include/svx/dlgctrl.hxx
index 88f6b00..eaa31a5 100644
--- a/include/svx/dlgctrl.hxx
+++ b/include/svx/dlgctrl.hxx
@@ -20,7 +20,6 @@
#define INCLUDED_SVX_DLGCTRL_HXX
#include <sfx2/tabdlg.hxx>
#include <svtools/toolbarmenu.hxx>
#include <svx/svxdllapi.h>
#include <svx/rectenum.hxx>
#include <vcl/customweld.hxx>
@@ -37,13 +36,6 @@ namespace com { namespace sun { namespace star { namespace awt {
struct Point;
} } } }
namespace svt {
class PopupWindowController;
}
class SvtValueSet;
class ToolBox;
/*************************************************************************
|* Derived from SfxTabPage for being able to get notified through the
|* virtual method from the control.
@@ -219,34 +211,6 @@ public:
virtual void LoseFocus() override;
};
class SVX_DLLPUBLIC MenuOrToolMenuButton
{
private:
// either
weld::MenuButton* m_pMenuButton;
// or
weld::Toolbar* m_pToolbar;
OString m_aIdent;
// or
svt::PopupWindowController* m_pControl;
VclPtr<ToolBox> m_xToolBox;
sal_uInt16 m_nId;
public:
MenuOrToolMenuButton(weld::MenuButton* pMenuButton);
MenuOrToolMenuButton(weld::Toolbar* pToolbar, const OString& rIdent);
MenuOrToolMenuButton(svt::PopupWindowController* pControl, ToolBox* pToolbar, sal_uInt16 nId);
~MenuOrToolMenuButton();
MenuOrToolMenuButton(MenuOrToolMenuButton const &) = default;
MenuOrToolMenuButton(MenuOrToolMenuButton &&) = default;
MenuOrToolMenuButton & operator =(MenuOrToolMenuButton const &) = default;
MenuOrToolMenuButton & operator =(MenuOrToolMenuButton &&) = default;
bool get_active() const;
void set_inactive() const;
weld::Widget* get_widget() const;
};
/************************************************************************/
class SAL_WARN_UNUSED SVX_DLLPUBLIC FillTypeLB : public ListBox
@@ -324,31 +288,6 @@ public:
bool get_sensitive() const { return m_xControl->get_sensitive(); }
};
typedef std::function<void(const css::uno::Sequence<css::beans::PropertyValue>&)> LineEndSelectFunction;
class SvxLineEndWindow final : public WeldToolbarPopup
{
private:
XLineEndListRef mpLineEndList;
MenuOrToolMenuButton maMenuButton;
LineEndSelectFunction maLineEndSelectFunction;
std::unique_ptr<SvtValueSet> mxLineEndSet;
std::unique_ptr<weld::CustomWeld> mxLineEndSetWin;
sal_uInt16 mnLines;
Size maBmpSize;
DECL_LINK(SelectHdl, SvtValueSet*, void);
void FillValueSet();
void SetSize();
virtual void GrabFocus() override;
public:
SvxLineEndWindow(const css::uno::Reference< css::frame::XFrame >& rFrame, weld::Window* pParent,
const MenuOrToolMenuButton &rMenuButton, const LineEndSelectFunction& rLineEndSelectFunction);
virtual void statusChanged( const css::frame::FeatureStateEvent& rEvent ) override;
};
class SdrObject;
class SdrPathObj;
class SdrModel;
diff --git a/svx/source/tbxctrls/linectrl.cxx b/svx/source/tbxctrls/linectrl.cxx
index bb4ef33..80c36be 100644
--- a/svx/source/tbxctrls/linectrl.cxx
+++ b/svx/source/tbxctrls/linectrl.cxx
@@ -19,7 +19,6 @@
#include <string>
#include <vcl/svapp.hxx>
#include <vcl/toolbox.hxx>
#include <sfx2/app.hxx>
#include <sfx2/dispatch.hxx>
@@ -264,20 +263,39 @@ public:
private:
virtual std::unique_ptr<WeldToolbarPopup> weldPopupWindow() override;
virtual VclPtr<vcl::Window> createVclPopupWindow( vcl::Window* pParent ) override;
};
void dispatch(const Sequence<PropertyValue>& rArgs);
class SvxLineEndWindow final : public WeldToolbarPopup
{
private:
XLineEndListRef mpLineEndList;
rtl::Reference<SvxLineEndToolBoxControl> mxControl;
std::unique_ptr<SvtValueSet> mxLineEndSet;
std::unique_ptr<weld::CustomWeld> mxLineEndSetWin;
sal_uInt16 mnLines;
Size maBmpSize;
DECL_LINK( SelectHdl, SvtValueSet*, void );
void FillValueSet();
void SetSize();
virtual void GrabFocus() override
{
mxLineEndSet->GrabFocus();
}
public:
SvxLineEndWindow(SvxLineEndToolBoxControl* pControl, weld::Widget* pParent);
virtual void statusChanged( const css::frame::FeatureStateEvent& rEvent ) override;
};
}
static constexpr sal_uInt16 gnCols = 2;
SvxLineEndWindow::SvxLineEndWindow(const Reference<XFrame>& rFrame, weld::Window* pParent,
const MenuOrToolMenuButton &rMenuButton,
const LineEndSelectFunction& rLineEndSelectFunction)
: WeldToolbarPopup(rFrame, pParent, "svx/ui/floatinglineend.ui", "FloatingLineEnd")
, maMenuButton(rMenuButton)
, maLineEndSelectFunction(rLineEndSelectFunction)
SvxLineEndWindow::SvxLineEndWindow(SvxLineEndToolBoxControl* pControl, weld::Widget* pParent)
: WeldToolbarPopup(pControl->getFrameInterface(), pParent, "svx/ui/floatinglineend.ui", "FloatingLineEnd")
, mxControl(pControl)
, mxLineEndSet(new SvtValueSet(m_xBuilder->weld_scrolled_window("valuesetwin")))
, mxLineEndSetWin(new weld::CustomWeld(*m_xBuilder, "valueset", *mxLineEndSet))
, mnLines(12)
@@ -304,11 +322,6 @@ SvxLineEndWindow::SvxLineEndWindow(const Reference<XFrame>& rFrame, weld::Window
AddStatusListener( ".uno:LineEndListState");
}
void SvxLineEndWindow::GrabFocus()
{
mxLineEndSet->GrabFocus();
}
IMPL_LINK_NOARG(SvxLineEndWindow, SelectHdl, SvtValueSet*, void)
{
std::unique_ptr<XLineEndItem> pLineEndItem;
@@ -355,9 +368,9 @@ IMPL_LINK_NOARG(SvxLineEndWindow, SelectHdl, SvtValueSet*, void)
while in Dispatch()), accessing members will crash in this case. */
mxLineEndSet->SetNoSelection();
maLineEndSelectFunction(aArgs);
mxControl->dispatchCommand(mxControl->getCommandURL(), aArgs);
maMenuButton.set_inactive();
mxControl->EndPopupMode();
}
void SvxLineEndWindow::FillValueSet()
@@ -465,11 +478,6 @@ void SAL_CALL SvxLineEndToolBoxControl::execute(sal_Int16 /*KeyModifier*/)
}
}
void SvxLineEndToolBoxControl::dispatch(const Sequence<PropertyValue>& rArgs)
{
dispatchCommand(getCommandURL(), rArgs);
}
void SvxLineEndToolBoxControl::initialize( const css::uno::Sequence<css::uno::Any>& rArguments )
{
svt::PopupWindowController::initialize( rArguments );
@@ -488,29 +496,13 @@ void SvxLineEndToolBoxControl::initialize( const css::uno::Sequence<css::uno::An
std::unique_ptr<WeldToolbarPopup> SvxLineEndToolBoxControl::weldPopupWindow()
{
const css::uno::Reference<css::awt::XWindow> xParent = m_xFrame->getContainerWindow();
weld::Window* pParentFrame = Application::GetFrameWeld(xParent);
const OString aId(m_aCommandURL.toUtf8());
return std::make_unique<SvxLineEndWindow>(m_xFrame, pParentFrame,
MenuOrToolMenuButton(m_pToolbar, aId),
std::bind(&SvxLineEndToolBoxControl::dispatch, this, std::placeholders::_1));
return std::make_unique<SvxLineEndWindow>(this, m_pToolbar);
}
VclPtr<vcl::Window> SvxLineEndToolBoxControl::createVclPopupWindow( vcl::Window* pParent )
{
ToolBox* pToolBox = nullptr;
sal_uInt16 nId = 0;
if (!getToolboxId(nId, &pToolBox))
return nullptr;
const css::uno::Reference<css::awt::XWindow> xParent = m_xFrame->getContainerWindow();
weld::Window* pParentFrame = Application::GetFrameWeld(xParent);
mxInterimPopover = VclPtr<InterimToolbarPopup>::Create(m_xFrame, pParent,
std::make_unique<SvxLineEndWindow>(m_xFrame, pParentFrame,
MenuOrToolMenuButton(this, pToolBox, nId),
std::bind(&SvxLineEndToolBoxControl::dispatch, this, std::placeholders::_1)));
mxInterimPopover = VclPtr<InterimToolbarPopup>::Create(getFrameInterface(), pParent,
std::make_unique<SvxLineEndWindow>(this, pParent->GetFrameWeld()));
mxInterimPopover->Show();
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 129e2b9..fcd99c9 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -4363,7 +4363,7 @@ MenuOrToolMenuButton::MenuOrToolMenuButton(weld::Toolbar* pToolbar, const OStrin
{
}
MenuOrToolMenuButton::MenuOrToolMenuButton(svt::PopupWindowController* pControl, ToolBox* pToolbar, sal_uInt16 nId)
MenuOrToolMenuButton::MenuOrToolMenuButton(SvxColorToolBoxControl* pControl, ToolBox* pToolbar, sal_uInt16 nId)
: m_pMenuButton(nullptr)
, m_pToolbar(nullptr)
, m_pControl(pControl)