diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-02-07 12:45:11 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-02-07 16:16:44 +0100 |
commit | 06164bdf2f5babd337a2f7813c572ca17056c521 (patch) | |
tree | 7d536826c140d1707a20baf8b27efcda203e09fe /svx | |
parent | efa883f0585b0824091c1383ab318c671f83cd28 (diff) |
weld ImplGrafModeControl ItemWindow
Change-Id: Ib71436cf9ecb312ea9f273bb974954556868e613
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88189
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/UIConfig_svx.mk | 1 | ||||
-rw-r--r-- | svx/source/tbxctrls/grafctrl.cxx | 145 | ||||
-rw-r--r-- | svx/uiconfig/ui/grafmodebox.ui | 23 |
3 files changed, 101 insertions, 68 deletions
diff --git a/svx/UIConfig_svx.mk b/svx/UIConfig_svx.mk index f3be7c4967ef..d43fb789f426 100644 --- a/svx/UIConfig_svx.mk +++ b/svx/UIConfig_svx.mk @@ -68,6 +68,7 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\ svx/uiconfig/ui/functionmenu \ svx/uiconfig/ui/gallerymenu1 \ svx/uiconfig/ui/gallerymenu2 \ + svx/uiconfig/ui/grafmodebox \ svx/uiconfig/ui/headfootformatpage \ svx/uiconfig/ui/imapdialog \ svx/uiconfig/ui/imapmenu \ diff --git a/svx/source/tbxctrls/grafctrl.cxx b/svx/source/tbxctrls/grafctrl.cxx index 588dbc25623f..3f8c084e06f7 100644 --- a/svx/source/tbxctrls/grafctrl.cxx +++ b/svx/source/tbxctrls/grafctrl.cxx @@ -332,99 +332,108 @@ void ImplGrafControl::Resize() namespace { -class ImplGrafModeControl : public ListBox +class ImplGrafModeControl final : public InterimItemWindow { - using Window::Update; private: - sal_uInt16 mnCurPos; + sal_uInt16 mnCurPos; Reference< XFrame > mxFrame; + std::unique_ptr<weld::ComboBox> m_xWidget; + + DECL_LINK(SelectHdl, weld::ComboBox&, void); + DECL_LINK(KeyInputHdl, const KeyEvent&, bool); + DECL_LINK(FocusInHdl, weld::Widget&, void); - virtual void Select() override; - virtual bool PreNotify( NotifyEvent& rNEvt ) override; - virtual bool EventNotify( NotifyEvent& rNEvt ) override; static void ImplReleaseFocus(); public: - ImplGrafModeControl( vcl::Window* pParent, const Reference< XFrame >& rFrame ); + ImplGrafModeControl( vcl::Window* pParent, const Reference< XFrame >& rFrame ); + virtual void dispose() override; + virtual ~ImplGrafModeControl() override; + + virtual void GetFocus() override + { + m_xWidget->grab_focus(); + } + + void set_sensitive(bool bSensitive) + { + Enable(bSensitive); + m_xWidget->set_sensitive(true); + } + + void set_active(int nActive) + { + m_xWidget->set_active(nActive); + } void Update( const SfxPoolItem* pItem ); }; } -ImplGrafModeControl::ImplGrafModeControl( vcl::Window* pParent, const Reference< XFrame >& rFrame ) : - ListBox( pParent, WB_BORDER | WB_DROPDOWN | WB_AUTOHSCROLL ), - mnCurPos( 0 ), - mxFrame( rFrame ) +ImplGrafModeControl::ImplGrafModeControl(vcl::Window* pParent, const Reference<XFrame>& rFrame) + : InterimItemWindow(pParent, "svx/ui/grafmodebox.ui", "GrafModeBox") + , mnCurPos(0) + , mxFrame(rFrame) + , m_xWidget(m_xBuilder->weld_combo_box("grafmode")) { - SetSizePixel( Size( 100, 260 ) ); + m_xWidget->append_text( SvxResId( RID_SVXSTR_GRAFMODE_STANDARD ) ); + m_xWidget->append_text( SvxResId( RID_SVXSTR_GRAFMODE_GREYS ) ); + m_xWidget->append_text( SvxResId( RID_SVXSTR_GRAFMODE_MONO ) ); + m_xWidget->append_text( SvxResId( RID_SVXSTR_GRAFMODE_WATERMARK ) ); - InsertEntry( SvxResId( RID_SVXSTR_GRAFMODE_STANDARD ) ); - InsertEntry( SvxResId( RID_SVXSTR_GRAFMODE_GREYS ) ); - InsertEntry( SvxResId( RID_SVXSTR_GRAFMODE_MONO ) ); - InsertEntry( SvxResId( RID_SVXSTR_GRAFMODE_WATERMARK ) ); + m_xWidget->connect_changed(LINK(this, ImplGrafModeControl, SelectHdl)); + m_xWidget->connect_key_press(LINK(this, ImplGrafModeControl, KeyInputHdl)); + m_xWidget->connect_focus_in(LINK(this, ImplGrafModeControl, FocusInHdl)); - Show(); + SetSizePixel(m_xWidget->get_preferred_size()); } -void ImplGrafModeControl::Select() +void ImplGrafModeControl::dispose() { - if ( !IsTravelSelect() ) - { - Sequence< PropertyValue > aArgs( 1 ); - aArgs[0].Name = "GrafMode"; - aArgs[0].Value <<= sal_Int16( GetSelectedEntryPos() ); - - /* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() call. - This instance may be deleted in the meantime (i.e. when a dialog is opened - while in Dispatch()), accessing members will crash in this case. */ - ImplReleaseFocus(); - - SfxToolBoxControl::Dispatch( - Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ), - ".uno:GrafMode", - aArgs ); - } + m_xWidget.reset(); + InterimItemWindow::dispose(); } -bool ImplGrafModeControl::PreNotify( NotifyEvent& rNEvt ) +ImplGrafModeControl::~ImplGrafModeControl() { - MouseNotifyEvent nType = rNEvt.GetType(); - - if( MouseNotifyEvent::MOUSEBUTTONDOWN == nType || MouseNotifyEvent::GETFOCUS == nType ) - mnCurPos = GetSelectedEntryPos(); + disposeOnce(); +} - return ListBox::PreNotify( rNEvt ); +IMPL_LINK(ImplGrafModeControl, SelectHdl, weld::ComboBox&, rBox, void) +{ + Sequence< PropertyValue > aArgs( 1 ); + aArgs[0].Name = "GrafMode"; + aArgs[0].Value <<= sal_Int16(rBox.get_active()); + + /* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() call. + This instance may be deleted in the meantime (i.e. when a dialog is opened + while in Dispatch()), accessing members will crash in this case. */ + ImplReleaseFocus(); + + SfxToolBoxControl::Dispatch( + Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ), + ".uno:GrafMode", + aArgs ); } -bool ImplGrafModeControl::EventNotify( NotifyEvent& rNEvt ) +IMPL_LINK(ImplGrafModeControl, KeyInputHdl, const KeyEvent&, rKEvt, bool) { - bool bHandled = ListBox::EventNotify( rNEvt ); + bool bHandled(false); - if( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT ) + if (rKEvt.GetKeyCode().GetCode() == KEY_ESCAPE) { - const KeyEvent* pKEvt = rNEvt.GetKeyEvent(); - - switch( pKEvt->GetKeyCode().GetCode() ) - { - case KEY_RETURN: - { - Select(); - bHandled = true; - } - break; - - case KEY_ESCAPE: - { - SelectEntryPos( mnCurPos ); - ImplReleaseFocus(); - bHandled = true; - } - break; - } + m_xWidget->set_active(mnCurPos); + ImplReleaseFocus(); + bHandled = true; } - return bHandled; + return bHandled || ChildKeyInput(rKEvt); +} + +IMPL_LINK_NOARG(ImplGrafModeControl, FocusInHdl, weld::Widget&, void) +{ + mnCurPos = m_xWidget->get_active(); } void ImplGrafModeControl::ImplReleaseFocus() @@ -441,9 +450,9 @@ void ImplGrafModeControl::ImplReleaseFocus() void ImplGrafModeControl::Update( const SfxPoolItem* pItem ) { if( pItem ) - SelectEntryPos( static_cast<const SfxUInt16Item*>(pItem)->GetValue() ); + m_xWidget->set_active(static_cast<const SfxUInt16Item*>(pItem)->GetValue()); else - SetNoSelection(); + m_xWidget->set_active(-1); } SvxGrafToolBoxControl::SvxGrafToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx) : @@ -552,12 +561,12 @@ void SvxGrafModeToolBoxControl::StateChanged( sal_uInt16, SfxItemState eState, c if( eState == SfxItemState::DISABLED ) { - pCtrl->Disable(); - pCtrl->SetText( OUString() ); + pCtrl->set_sensitive(false); + pCtrl->set_active(-1); } else { - pCtrl->Enable(); + pCtrl->set_sensitive(true); if( eState == SfxItemState::DEFAULT ) pCtrl->Update( pState ); diff --git a/svx/uiconfig/ui/grafmodebox.ui b/svx/uiconfig/ui/grafmodebox.ui new file mode 100644 index 000000000000..c77d958e57cd --- /dev/null +++ b/svx/uiconfig/ui/grafmodebox.ui @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.22.1 --> +<interface domain="svx"> + <requires lib="gtk+" version="3.18"/> + <object class="GtkBox" id="GrafModeBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBoxText" id="grafmode"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> +</interface> |