summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--basctl/source/inc/IDEComboBox.hxx7
-rw-r--r--include/sfx2/InterimItemWindow.hxx1
-rw-r--r--sc/source/ui/cctrl/cbnumberformat.cxx4
-rw-r--r--sd/source/ui/dlg/diactrl.cxx4
-rw-r--r--sd/source/ui/dlg/gluectrl.cxx4
-rw-r--r--sfx2/source/control/InterimItemWindow.cxx14
-rw-r--r--sfx2/source/inet/inettbc.cxx4
-rw-r--r--sfx2/source/view/classificationcontroller.cxx4
-rw-r--r--solenv/sanitizers/ui/svx.suppr1
-rw-r--r--svx/UIConfig_svx.mk1
-rw-r--r--svx/source/form/tbxform.cxx66
-rw-r--r--svx/source/inc/tbxform.hxx22
-rw-r--r--svx/source/sidebar/paragraph/ParaSpacingWindow.cxx20
-rw-r--r--svx/source/tbxctrls/grafctrl.cxx8
-rw-r--r--svx/source/tbxctrls/itemwin.cxx4
-rw-r--r--svx/source/tbxctrls/tbunocontroller.cxx4
-rw-r--r--svx/uiconfig/ui/absrecbox.ui24
-rw-r--r--sw/source/uibase/ribbar/workctrl.cxx8
-rw-r--r--vcl/source/app/salvtables.cxx3
19 files changed, 149 insertions, 54 deletions
diff --git a/basctl/source/inc/IDEComboBox.hxx b/basctl/source/inc/IDEComboBox.hxx
index 02c0812e9ad0..155256279906 100644
--- a/basctl/source/inc/IDEComboBox.hxx
+++ b/basctl/source/inc/IDEComboBox.hxx
@@ -96,7 +96,12 @@ protected:
virtual void Select() = 0;
virtual void FillBox() = 0;
- virtual void GetFocus() override { m_xWidget->grab_focus(); }
+ virtual void GetFocus() override
+ {
+ if (m_xWidget)
+ m_xWidget->grab_focus();
+ InterimItemWindow::GetFocus();
+ }
/// key strokes the ComboBox receives
virtual bool HandleKeyInput(const KeyEvent& rKEvt);
diff --git a/include/sfx2/InterimItemWindow.hxx b/include/sfx2/InterimItemWindow.hxx
index 84b27651bdd1..d79a1ead14ab 100644
--- a/include/sfx2/InterimItemWindow.hxx
+++ b/include/sfx2/InterimItemWindow.hxx
@@ -21,6 +21,7 @@ public:
virtual void Resize() override;
virtual Size GetOptimalSize() const override;
+ virtual void GetFocus() override;
protected:
InterimItemWindow(vcl::Window* pParent, const OUString& rUIXMLDescription, const OString& rID);
diff --git a/sc/source/ui/cctrl/cbnumberformat.cxx b/sc/source/ui/cctrl/cbnumberformat.cxx
index c02f342333df..93f003ebe01d 100644
--- a/sc/source/ui/cctrl/cbnumberformat.cxx
+++ b/sc/source/ui/cctrl/cbnumberformat.cxx
@@ -60,7 +60,9 @@ ScNumberFormat::~ScNumberFormat()
void ScNumberFormat::GetFocus()
{
- m_xWidget->grab_focus();
+ if (m_xWidget)
+ m_xWidget->grab_focus();
+ InterimItemWindow::GetFocus();
}
IMPL_STATIC_LINK(ScNumberFormat, NumFormatSelectHdl, weld::ComboBox&, rBox, void)
diff --git a/sd/source/ui/dlg/diactrl.cxx b/sd/source/ui/dlg/diactrl.cxx
index 33deff59ae14..20abb42b9bb3 100644
--- a/sd/source/ui/dlg/diactrl.cxx
+++ b/sd/source/ui/dlg/diactrl.cxx
@@ -81,7 +81,9 @@ void SdPagesField::dispose()
void SdPagesField::GetFocus()
{
- m_xWidget->grab_focus();
+ if (m_xWidget)
+ m_xWidget->grab_focus();
+ InterimItemWindow::GetFocus();
}
SdPagesField::~SdPagesField()
diff --git a/sd/source/ui/dlg/gluectrl.cxx b/sd/source/ui/dlg/gluectrl.cxx
index 0364aad81527..ee2e49a9d7bb 100644
--- a/sd/source/ui/dlg/gluectrl.cxx
+++ b/sd/source/ui/dlg/gluectrl.cxx
@@ -72,7 +72,9 @@ void GlueEscDirLB::dispose()
void GlueEscDirLB::GetFocus()
{
- m_xWidget->grab_focus();
+ if (m_xWidget)
+ m_xWidget->grab_focus();
+ InterimItemWindow::GetFocus();
}
GlueEscDirLB::~GlueEscDirLB()
diff --git a/sfx2/source/control/InterimItemWindow.cxx b/sfx2/source/control/InterimItemWindow.cxx
index 8e6ddb096318..6f26b99acab5 100644
--- a/sfx2/source/control/InterimItemWindow.cxx
+++ b/sfx2/source/control/InterimItemWindow.cxx
@@ -18,7 +18,8 @@ InterimItemWindow::InterimItemWindow(vcl::Window* pParent, const OUString& rUIXM
m_xBuilder.reset(Application::CreateInterimBuilder(m_xVclContentArea, rUIXMLDescription));
m_xContainer = m_xBuilder->weld_container(rID);
- SetBackground(Wallpaper(COL_TRANSPARENT));
+ SetBackground();
+ SetPaintTransparent(true);
}
InterimItemWindow::~InterimItemWindow() { disposeOnce(); }
@@ -45,6 +46,17 @@ Size InterimItemWindow::GetOptimalSize() const
return VclContainer::getLayoutRequisition(*GetWindow(GetWindowType::FirstChild));
}
+void InterimItemWindow::GetFocus()
+{
+ /* let toolbox know this item window has focus so it updates its mnHighItemId to point
+ to this toolitem in case tab means to move to another toolitem within
+ the toolbox
+ */
+ vcl::Window* pToolBox = GetParent();
+ NotifyEvent aNEvt(MouseNotifyEvent::GETFOCUS, this);
+ pToolBox->EventNotify(aNEvt);
+}
+
bool InterimItemWindow::ChildKeyInput(const KeyEvent& rKEvt)
{
sal_uInt16 nCode = rKEvt.GetKeyCode().GetCode();
diff --git a/sfx2/source/inet/inettbc.cxx b/sfx2/source/inet/inettbc.cxx
index b1fc33e9afd7..ee5adc326ee3 100644
--- a/sfx2/source/inet/inettbc.cxx
+++ b/sfx2/source/inet/inettbc.cxx
@@ -90,7 +90,9 @@ public:
virtual void GetFocus() override
{
- m_xWidget->grab_focus();
+ if (m_xWidget)
+ m_xWidget->grab_focus();
+ InterimItemWindow::GetFocus();
}
void set_sensitive(bool bSensitive)
diff --git a/sfx2/source/view/classificationcontroller.cxx b/sfx2/source/view/classificationcontroller.cxx
index e335d6d05927..034606623afa 100644
--- a/sfx2/source/view/classificationcontroller.cxx
+++ b/sfx2/source/view/classificationcontroller.cxx
@@ -106,7 +106,9 @@ class SAL_WARN_UNUSED ClassificationControl final : public InterimItemWindow
void DataChanged(const DataChangedEvent& rEvent) override;
void GetFocus() override
{
- m_xCategory->grab_focus();
+ if (m_xCategory)
+ m_xCategory->grab_focus();
+ InterimItemWindow::GetFocus();
}
public:
diff --git a/solenv/sanitizers/ui/svx.suppr b/solenv/sanitizers/ui/svx.suppr
index 5baa2b48f9a4..29229ee2d030 100644
--- a/solenv/sanitizers/ui/svx.suppr
+++ b/solenv/sanitizers/ui/svx.suppr
@@ -1,3 +1,4 @@
+svx/uiconfig/ui/absrecbox.ui://GtkEntry[@id='entry'] no-labelled-by
svx/uiconfig/ui/addinstancedialog.ui://GtkLabel[@id='alttitle'] orphan-label
svx/uiconfig/ui/addmodeldialog.ui://GtkLabel[@id='alttitle'] orphan-label
svx/uiconfig/ui/addnamespacedialog.ui://GtkLabel[@id='alttitle'] orphan-label
diff --git a/svx/UIConfig_svx.mk b/svx/UIConfig_svx.mk
index 48f8b24c3e09..e7d478800185 100644
--- a/svx/UIConfig_svx.mk
+++ b/svx/UIConfig_svx.mk
@@ -10,6 +10,7 @@
$(eval $(call gb_UIConfig_UIConfig,svx))
$(eval $(call gb_UIConfig_add_uifiles,svx,\
+ svx/uiconfig/ui/absrecbox \
svx/uiconfig/ui/acceptrejectchangesdialog \
svx/uiconfig/ui/accessibilitycheckdialog \
svx/uiconfig/ui/accessibilitycheckentry \
diff --git a/svx/source/form/tbxform.cxx b/svx/source/form/tbxform.cxx
index 94e00643b897..1bd90475e1cb 100644
--- a/svx/source/form/tbxform.cxx
+++ b/svx/source/form/tbxform.cxx
@@ -39,30 +39,44 @@
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::beans;
-SvxFmAbsRecWin::SvxFmAbsRecWin( vcl::Window* _pParent, SfxToolBoxControl* _pController )
- :NumericField( _pParent, WB_BORDER )
- ,m_pController(_pController)
+SvxFmAbsRecWin::SvxFmAbsRecWin(vcl::Window* pParent, SfxToolBoxControl* pController)
+ : InterimItemWindow(pParent, "svx/ui/absrecbox.ui", "AbsRecBox")
+ , m_xWidget(m_xBuilder->weld_entry("entry"))
+ , m_pController(pController)
{
- SetMin(1);
- SetFirst(1);
- SetSpinSize(1);
- SetSizePixel( Size(70,19) );
+ m_xWidget->connect_key_press(LINK(this, SvxFmAbsRecWin, KeyInputHdl));
+ m_xWidget->connect_activate(LINK(this, SvxFmAbsRecWin, ActivatedHdl));
+ m_xWidget->connect_focus_out(LINK(this, SvxFmAbsRecWin, FocusOutHdl));
- SetDecimalDigits(0);
- SetStrictFormat(true);
+ SetSizePixel(m_xWidget->get_preferred_size());
}
+void SvxFmAbsRecWin::dispose()
+{
+ m_xWidget.reset();
+ InterimItemWindow::dispose();
+}
+
+void SvxFmAbsRecWin::GetFocus()
+{
+ if (m_xWidget)
+ m_xWidget->grab_focus();
+ InterimItemWindow::GetFocus();
+}
+
+SvxFmAbsRecWin::~SvxFmAbsRecWin()
+{
+ disposeOnce();
+}
void SvxFmAbsRecWin::FirePosition( bool _bForce )
{
- if ( !_bForce && !IsValueChangedFromSaved() )
+ if (!_bForce && !m_xWidget->get_value_changed_from_saved())
return;
- sal_Int64 nRecord = GetValue();
- if (nRecord < GetMin() || nRecord > GetMax())
- {
- return;
- }
+ sal_Int64 nRecord = m_xWidget->get_text().toInt64();
+ if (nRecord < 1)
+ nRecord = 1;
SfxInt32Item aPositionParam( FN_PARAM_1, static_cast<sal_Int32>(nRecord) );
@@ -75,25 +89,26 @@ void SvxFmAbsRecWin::FirePosition( bool _bForce )
aArgs );
m_pController->updateStatus();
- SaveValue();
+ m_xWidget->save_value();
}
-
-void SvxFmAbsRecWin::LoseFocus()
+IMPL_LINK_NOARG(SvxFmAbsRecWin, FocusOutHdl, weld::Widget&, void)
{
FirePosition( false );
}
+IMPL_LINK(SvxFmAbsRecWin, KeyInputHdl, const KeyEvent&, rKEvt, bool)
+{
+ return ChildKeyInput(rKEvt);
+}
-void SvxFmAbsRecWin::KeyInput( const KeyEvent& rKeyEvent )
+IMPL_LINK_NOARG(SvxFmAbsRecWin, ActivatedHdl, weld::Entry&, bool)
{
- if( rKeyEvent.GetKeyCode() == KEY_RETURN && !GetText().isEmpty() )
+ if (!m_xWidget->get_text().isEmpty())
FirePosition( true );
- else
- NumericField::KeyInput( rKeyEvent );
+ return true;
}
-
SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxCtlAbsRec, SfxInt32Item );
SvxFmTbxCtlAbsRec::SvxFmTbxCtlAbsRec( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
@@ -106,7 +121,6 @@ SvxFmTbxCtlAbsRec::~SvxFmTbxCtlAbsRec()
{
}
-
void SvxFmTbxCtlAbsRec::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
{
sal_uInt16 nId = GetId();
@@ -119,12 +133,12 @@ void SvxFmTbxCtlAbsRec::StateChanged( sal_uInt16 nSID, SfxItemState eState, cons
{
const SfxInt32Item* pItem = dynamic_cast< const SfxInt32Item* >( pState );
DBG_ASSERT( pItem, "SvxFmTbxCtlAbsRec::StateChanged: invalid item!" );
- pWin->SetValue( pItem ? pItem->GetValue() : -1 );
+ pWin->set_text(OUString::number(pItem ? pItem->GetValue() : -1));
}
bool bEnable = SfxItemState::DISABLED != eState && pState;
if (!bEnable)
- pWin->SetText(OUString());
+ pWin->set_text(OUString());
// enabling/disabling of the window
diff --git a/svx/source/inc/tbxform.hxx b/svx/source/inc/tbxform.hxx
index f436a91b2275..0d80e6e72480 100644
--- a/svx/source/inc/tbxform.hxx
+++ b/svx/source/inc/tbxform.hxx
@@ -20,25 +20,31 @@
#define INCLUDED_SVX_SOURCE_INC_TBXFORM_HXX
#include <sfx2/tbxctrl.hxx>
-#include <vcl/field.hxx>
+#include <sfx2/InterimItemWindow.hxx>
-class SvxFmAbsRecWin final : public NumericField
+class SvxFmAbsRecWin final : public InterimItemWindow
{
public:
SvxFmAbsRecWin( vcl::Window* _pParent, SfxToolBoxControl* _pController );
+ virtual void dispose() override;
+ virtual ~SvxFmAbsRecWin() override;
- virtual void KeyInput( const KeyEvent& rKeyEvt ) override;
- virtual void LoseFocus() override;
+ void set_text(const OUString& rText) { m_xWidget->set_text(rText); }
+
+ virtual void GetFocus() override;
private:
+ std::unique_ptr<weld::Entry> m_xWidget;
+
+ DECL_LINK(KeyInputHdl, const KeyEvent&, bool);
+ DECL_LINK(ActivatedHdl, weld::Entry&, bool);
+ DECL_LINK(FocusOutHdl, weld::Widget&, void); // for invalidating our content when losing the focus
+
void FirePosition( bool _bForce );
SfxToolBoxControl* m_pController;
- // for invalidating our content when losing the focus
};
-
-class FixedText;
class SvxFmTbxCtlAbsRec : public SfxToolBoxControl
{
public:
@@ -53,7 +59,6 @@ public:
const SfxPoolItem* pState ) override;
};
-
class SvxFmTbxCtlRecText : public SfxToolBoxControl
{
public:
@@ -65,7 +70,6 @@ public:
virtual VclPtr<vcl::Window> CreateItemWindow( vcl::Window* pParent ) override;
};
-
class SvxFmTbxCtlRecFromText : public SfxToolBoxControl
{
public:
diff --git a/svx/source/sidebar/paragraph/ParaSpacingWindow.cxx b/svx/source/sidebar/paragraph/ParaSpacingWindow.cxx
index 05fdfe721fec..e29cb7e177da 100644
--- a/svx/source/sidebar/paragraph/ParaSpacingWindow.cxx
+++ b/svx/source/sidebar/paragraph/ParaSpacingWindow.cxx
@@ -118,7 +118,9 @@ ParaAboveSpacingWindow::ParaAboveSpacingWindow(vcl::Window* pParent)
void ParaAboveSpacingWindow::GetFocus()
{
- m_xAboveSpacing->grab_focus();
+ if (m_xAboveSpacing)
+ m_xAboveSpacing->grab_focus();
+ ParaULSpacingWindow::GetFocus();
}
// ParaBelowSpacingWindow
@@ -134,7 +136,9 @@ ParaBelowSpacingWindow::ParaBelowSpacingWindow(vcl::Window* pParent)
void ParaBelowSpacingWindow::GetFocus()
{
- m_xBelowSpacing->grab_focus();
+ if (m_xBelowSpacing)
+ m_xBelowSpacing->grab_focus();
+ ParaULSpacingWindow::GetFocus();
}
// ParaLRSpacingWindow
@@ -319,7 +323,9 @@ ParaLeftSpacingWindow::ParaLeftSpacingWindow(vcl::Window* pParent)
void ParaLeftSpacingWindow::GetFocus()
{
- m_xBeforeSpacing->grab_focus();
+ if (m_xBeforeSpacing)
+ m_xBeforeSpacing->grab_focus();
+ ParaLRSpacingWindow::GetFocus();
}
// ParaRightSpacingWindow
@@ -336,7 +342,9 @@ ParaRightSpacingWindow::ParaRightSpacingWindow(vcl::Window* pParent)
void ParaRightSpacingWindow::GetFocus()
{
- m_xAfterSpacing->grab_focus();
+ if (m_xAfterSpacing)
+ m_xAfterSpacing->grab_focus();
+ ParaLRSpacingWindow::GetFocus();
}
// ParaFirstLineSpacingWindow
@@ -353,7 +361,9 @@ ParaFirstLineSpacingWindow::ParaFirstLineSpacingWindow(vcl::Window* pParent)
void ParaFirstLineSpacingWindow::GetFocus()
{
- m_xFLSpacing->grab_focus();
+ if (m_xFLSpacing)
+ m_xFLSpacing->grab_focus();
+ ParaLRSpacingWindow::GetFocus();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/tbxctrls/grafctrl.cxx b/svx/source/tbxctrls/grafctrl.cxx
index 0fcf01de5d32..bc9246689547 100644
--- a/svx/source/tbxctrls/grafctrl.cxx
+++ b/svx/source/tbxctrls/grafctrl.cxx
@@ -264,7 +264,9 @@ void ImplGrafControl::dispose()
void ImplGrafControl::GetFocus()
{
- mxField->grab_focus();
+ if (mxField)
+ mxField->grab_focus();
+ InterimItemWindow::GetFocus();
}
namespace {
@@ -289,7 +291,9 @@ public:
virtual void GetFocus() override
{
- m_xWidget->grab_focus();
+ if (m_xWidget)
+ m_xWidget->grab_focus();
+ InterimItemWindow::GetFocus();
}
void set_sensitive(bool bSensitive)
diff --git a/svx/source/tbxctrls/itemwin.cxx b/svx/source/tbxctrls/itemwin.cxx
index 4be04c13f882..52f28c91cb4d 100644
--- a/svx/source/tbxctrls/itemwin.cxx
+++ b/svx/source/tbxctrls/itemwin.cxx
@@ -180,7 +180,9 @@ void SvxMetricField::DataChanged( const DataChangedEvent& rDCEvt )
void SvxMetricField::GetFocus()
{
- m_xWidget->grab_focus();
+ if (m_xWidget)
+ m_xWidget->grab_focus();
+ InterimItemWindow::GetFocus();
}
SvxFillTypeBox::SvxFillTypeBox( vcl::Window* pParent ) :
diff --git a/svx/source/tbxctrls/tbunocontroller.cxx b/svx/source/tbxctrls/tbunocontroller.cxx
index 81c4b8e7bd73..f03a9b36848d 100644
--- a/svx/source/tbxctrls/tbunocontroller.cxx
+++ b/svx/source/tbxctrls/tbunocontroller.cxx
@@ -157,7 +157,9 @@ SvxFontSizeBox_Impl::~SvxFontSizeBox_Impl()
void SvxFontSizeBox_Impl::GetFocus()
{
- m_xWidget->grab_focus();
+ if (m_xWidget)
+ m_xWidget->grab_focus();
+ InterimItemWindow::GetFocus();
}
void SvxFontSizeBox_Impl::ReleaseFocus_Impl()
diff --git a/svx/uiconfig/ui/absrecbox.ui b/svx/uiconfig/ui/absrecbox.ui
new file mode 100644
index 000000000000..f61f75509ecc
--- /dev/null
+++ b/svx/uiconfig/ui/absrecbox.ui
@@ -0,0 +1,24 @@
+<?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="AbsRecBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkEntry" id="entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="width_chars">4</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/sw/source/uibase/ribbar/workctrl.cxx b/sw/source/uibase/ribbar/workctrl.cxx
index 70e5d4f73137..e60ce29a0c03 100644
--- a/sw/source/uibase/ribbar/workctrl.cxx
+++ b/sw/source/uibase/ribbar/workctrl.cxx
@@ -560,7 +560,9 @@ public:
virtual void GetFocus() override
{
- m_xWidget->grab_focus();
+ if (m_xWidget)
+ m_xWidget->grab_focus();
+ InterimItemWindow::GetFocus();
}
void save_value()
@@ -768,7 +770,9 @@ public:
}
virtual void GetFocus() override
{
- m_xWidget->grab_focus();
+ if (m_xWidget)
+ m_xWidget->grab_focus();
+ InterimItemWindow::GetFocus();
}
virtual ~SwJumpToSpecificBox_Impl() override
{
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index d53ea9292835..6867bcc32ec1 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -736,7 +736,8 @@ public:
virtual void set_toolbar_background() override
{
- m_xWidget->SetBackground(Wallpaper(COL_TRANSPARENT));
+ m_xWidget->SetBackground();
+ m_xWidget->SetPaintTransparent(true);
}
virtual void set_highlight_background() override