diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-06-26 15:08:01 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-06-26 20:36:23 +0200 |
commit | dc960e30ee24eb60da919c718ebfee142872f43a (patch) | |
tree | aa894a3330985d06b014000bf1d11905641d1c3d /framework | |
parent | ec0554c5eabce108f6fb5b6a44e3e16425a1d650 (diff) |
weld FixedTextControl
Change-Id: I0a2983aa4d389aa0e65aa117d576295d02460b4a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97236
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'framework')
-rw-r--r-- | framework/inc/uielement/FixedTextToolbarController.hxx | 5 | ||||
-rw-r--r-- | framework/source/uielement/FixedTextToolbarController.cxx | 51 |
2 files changed, 48 insertions, 8 deletions
diff --git a/framework/inc/uielement/FixedTextToolbarController.hxx b/framework/inc/uielement/FixedTextToolbarController.hxx index 299bb80982b3..ceecade1db5c 100644 --- a/framework/inc/uielement/FixedTextToolbarController.hxx +++ b/framework/inc/uielement/FixedTextToolbarController.hxx @@ -27,10 +27,11 @@ #include <vcl/fixed.hxx> class ToolBox; -class FixedText; namespace framework { +class FixedTextControl; + class FixedTextToolbarController final : public ComplexToolbarController { public: @@ -46,7 +47,7 @@ private: virtual css::uno::Sequence<css::beans::PropertyValue> getExecuteArgs(sal_Int16 KeyModifier) const override; - VclPtr<FixedText> m_pFixedTextControl; + VclPtr<FixedTextControl> m_pFixedTextControl; }; } diff --git a/framework/source/uielement/FixedTextToolbarController.cxx b/framework/source/uielement/FixedTextToolbarController.cxx index 531c0f8b64a5..a6bb5d25ad88 100644 --- a/framework/source/uielement/FixedTextToolbarController.cxx +++ b/framework/source/uielement/FixedTextToolbarController.cxx @@ -20,7 +20,7 @@ #include <uielement/FixedTextToolbarController.hxx> #include <vcl/toolbox.hxx> -#include <vcl/fixed.hxx> +#include <vcl/InterimItemWindow.hxx> #include <vcl/svapp.hxx> using namespace ::com::sun::star; @@ -33,13 +33,52 @@ using namespace ::com::sun::star::util; namespace framework { +class FixedTextControl final : public InterimItemWindow +{ +public: + FixedTextControl(vcl::Window* pParent); + virtual ~FixedTextControl() override; + virtual void dispose() override; + virtual void GetFocus() override + { + if (m_xWidget) + m_xWidget->grab_focus(); + InterimItemWindow::GetFocus(); + } + OUString get_label() const { return m_xWidget->get_label(); } + void set_label(const OUString& rLabel) { return m_xWidget->set_label(rLabel); } + DECL_LINK(KeyInputHdl, const ::KeyEvent&, bool); + +private: + std::unique_ptr<weld::Label> m_xWidget; +}; + +FixedTextControl::FixedTextControl(vcl::Window* pParent) + : InterimItemWindow(pParent, "svt/ui/fixedtextcontrol.ui", "FixedTextControl") + , m_xWidget(m_xBuilder->weld_label("label")) +{ + m_xWidget->connect_key_press(LINK(this, FixedTextControl, KeyInputHdl)); +} + +IMPL_LINK(FixedTextControl, KeyInputHdl, const ::KeyEvent&, rKEvt, bool) +{ + return ChildKeyInput(rKEvt); +} + +FixedTextControl::~FixedTextControl() { disposeOnce(); } + +void FixedTextControl::dispose() +{ + m_xWidget.reset(); + InterimItemWindow::dispose(); +} + FixedTextToolbarController::FixedTextToolbarController( const Reference<XComponentContext>& rxContext, const Reference<XFrame>& rFrame, ToolBox* pToolbar, sal_uInt16 nID, const OUString& aCommand) : ComplexToolbarController(rxContext, rFrame, pToolbar, nID, aCommand) { - m_pFixedTextControl = VclPtr<FixedText>::Create(m_xToolbar, WB_NOMULTILINE | WB_VCENTER - | WB_LEFT | WB_NOPOINTERFOCUS); + m_pFixedTextControl = VclPtr<FixedTextControl>::Create(m_xToolbar); m_xToolbar->SetItemWindow(m_nID, m_pFixedTextControl); m_xToolbar->SetItemBits(m_nID, ToolBoxItemBits::AUTOSIZE | m_xToolbar->GetItemBits(m_nID)); } @@ -55,7 +94,7 @@ void SAL_CALL FixedTextToolbarController::dispose() Sequence<PropertyValue> FixedTextToolbarController::getExecuteArgs(sal_Int16 KeyModifier) const { Sequence<PropertyValue> aArgs(2); - const OUString aSelectedText = m_pFixedTextControl->GetText(); + const OUString aSelectedText = m_pFixedTextControl->get_label(); // Add key modifier to argument list aArgs[0].Name = "KeyModifier"; @@ -79,8 +118,8 @@ void FixedTextToolbarController::executeControlCommand( { OUString aText; rArg.Value >>= aText; - m_pFixedTextControl->SetText(aText); - m_pFixedTextControl->SetSizePixel(m_pFixedTextControl->GetOptimalSize()); + m_pFixedTextControl->set_label(aText); + m_pFixedTextControl->SetSizePixel(m_pFixedTextControl->get_preferred_size()); // send notification notifyTextChanged(aText); |