[Libreoffice-commits] core.git: 2 commits - include/sfx2 include/svx officecfg/registry sfx2/source solenv/sanitizers svx/source svx/uiconfig svx/UIConfig_svx.mk svx/util sw/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Wed Jan 15 12:55:32 UTC 2020


 include/sfx2/tbxctrl.hxx                                        |    4 
 include/svx/layctrl.hxx                                         |   26 
 officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu |   33 
 sfx2/source/toolbox/tbxitem.cxx                                 |   33 
 solenv/sanitizers/ui/svx.suppr                                  |    1 
 svx/UIConfig_svx.mk                                             |    1 
 svx/source/tbxctrls/layctrl.cxx                                 |  495 +++++-----
 svx/uiconfig/ui/columnswindow.ui                                |   55 +
 svx/util/svx.component                                          |    4 
 sw/source/uibase/app/swmodule.cxx                               |    4 
 10 files changed, 371 insertions(+), 285 deletions(-)

New commits:
commit 0a76eb059a77c799e6ce8400c558fc4dd1d866aa
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue Jan 14 21:19:19 2020 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Wed Jan 15 13:55:16 2020 +0100

    StartCascading is unused
    
    Change-Id: Ic58ab3715aadf53bf4f3fd1e32a241d9d9275322
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86839
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/sfx2/tbxctrl.hxx b/include/sfx2/tbxctrl.hxx
index f468bfc13e76..cb94907ffae9 100644
--- a/include/sfx2/tbxctrl.hxx
+++ b/include/sfx2/tbxctrl.hxx
@@ -62,7 +62,6 @@ class SFX2_DLLPUBLIC SfxPopupWindow: public FloatingWindow
 {
 friend class SfxFrameStatusListener;
     bool                                                   m_bFloating;
-    bool                                                   m_bCascading;
     Link<SfxPopupWindow*,void>                             m_aDeleteLink;
     sal_uInt16 const                                       m_nId;
     css::uno::Reference< css::frame::XFrame > const        m_xFrame;
@@ -95,9 +94,6 @@ public:
                             virtual ~SfxPopupWindow() override;
     virtual void            dispose() override;
 
-    virtual void            MouseMove( const MouseEvent& rMEvt ) override;
-
-    void                    StartCascading();
     SAL_DLLPRIVATE void SetDeleteLink_Impl( const Link<SfxPopupWindow*,void>& rLink )
                             {
                                 m_aDeleteLink = rLink;
diff --git a/sfx2/source/toolbox/tbxitem.cxx b/sfx2/source/toolbox/tbxitem.cxx
index 47c00af49c09..0e9aba25830f 100644
--- a/sfx2/source/toolbox/tbxitem.cxx
+++ b/sfx2/source/toolbox/tbxitem.cxx
@@ -715,7 +715,6 @@ SfxPopupWindow::SfxPopupWindow(
     WinBits nBits ) :
     FloatingWindow( pParentWindow, nBits )
     , m_bFloating( false )
-    , m_bCascading( false )
     , m_nId( nId )
     , m_xFrame( rFrame )
 {
@@ -731,7 +730,6 @@ SfxPopupWindow::SfxPopupWindow(
     const Reference< XFrame >& rFrame ) :
     FloatingWindow( pParentWindow, rID, rUIXMLDescription, rFrame)
     , m_bFloating( false )
-    , m_bCascading( false )
     , m_nId( nId )
     , m_xFrame( rFrame )
 {
@@ -804,37 +802,6 @@ void SfxPopupWindow::PopupModeEnd()
 }
 
 
-void SfxPopupWindow::MouseMove( const ::MouseEvent& rMEvt )
-{
-    if ( !m_bCascading )
-        FloatingWindow::MouseMove( rMEvt );
-    else
-    {
-        // Forward MouseMove-Event to Children
-        ::Point       aPos = rMEvt.GetPosPixel();
-        ::Point       aScrPos = OutputToScreenPixel( aPos );
-        sal_uInt16 i = 0;
-        vcl::Window* pWindow = GetChild( i );
-        while ( pWindow )
-        {
-            ::MouseEvent aChildMEvt( pWindow->ScreenToOutputPixel( aScrPos ),
-                              rMEvt.GetClicks(), rMEvt.GetMode(),
-                              rMEvt.GetButtons(), rMEvt.GetModifier() );
-            pWindow->MouseMove( aChildMEvt );
-            pWindow->Update();
-            i++;
-            pWindow = GetChild( i );
-        }
-    }
-}
-
-
-void SfxPopupWindow::StartCascading()
-{
-    m_bCascading = true;
-}
-
-
 void SfxPopupWindow::statusChanged( const css::frame::FeatureStateEvent& rEvent )
 {
     if ( !rEvent.IsEnabled )
commit 053223085d786b4d1e595a63e01c47e97728e720
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue Jan 14 20:58:18 2020 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Wed Jan 15 13:55:00 2020 +0100

    rework SvxColumnsToolBoxControl to be a PopupWindowController
    
    and weld it, convert it and TableWindow to use two CustomWidgetController
    for the content widgets. Change the ColumnsWindow from an auto-grow width
    element to something with a fixed width and add a spinbutton to handle
    the overflow cases that don't fit in the fixed width
    
    Change-Id: I046a21dfd2a7c23828c4e2945b42c30db362b049
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86812
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/svx/layctrl.hxx b/include/svx/layctrl.hxx
index c66c5e671ac0..8c530e2968ca 100644
--- a/include/svx/layctrl.hxx
+++ b/include/svx/layctrl.hxx
@@ -19,7 +19,6 @@
 #ifndef INCLUDED_SVX_LAYCTRL_HXX
 #define INCLUDED_SVX_LAYCTRL_HXX
 
-#include <sfx2/tbxctrl.hxx>
 #include <svtools/popupwindowcontroller.hxx>
 #include <svx/svxdllapi.h>
 
@@ -39,22 +38,29 @@ public:
 
     // XInitialization
     virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& rArguments ) override;
+
+    void TableDialog(const css::uno::Sequence<css::beans::PropertyValue>& rArgs);
+    void CloseAndShowTableDialog();
 };
 
-class SVX_DLLPUBLIC SvxColumnsToolBoxControl final : public SfxToolBoxControl
+class SVX_DLLPUBLIC SvxColumnsToolBoxControl final : public svt::PopupWindowController
 {
-    bool    bEnabled;
 public:
-    virtual VclPtr<SfxPopupWindow> CreatePopupWindow() override;
+    SvxColumnsToolBoxControl(const css::uno::Reference<css::uno::XComponentContext>& rContext);
+    virtual ~SvxColumnsToolBoxControl() override;
 
-    SFX_DECL_TOOLBOX_CONTROL();
+    virtual std::unique_ptr<WeldToolbarPopup> weldPopupWindow() override;
+    using svt::ToolboxController::createPopupWindow;
+    virtual VclPtr<vcl::Window> createPopupWindow( vcl::Window* pParent ) override;
 
-    SvxColumnsToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx );
-    virtual ~SvxColumnsToolBoxControl() override;
+    // XServiceInfo
+    virtual OUString SAL_CALL getImplementationName() override;
+    virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+    // XInitialization
+    virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& rArguments ) override;
 
-    virtual void                StateChanged( sal_uInt16 nSID,
-                                              SfxItemState eState,
-                                              const SfxPoolItem* pState ) override;
+    void InsertColumns(const css::uno::Sequence<css::beans::PropertyValue>& rArgs);
 };
 
 #endif
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
index 07d0da5103fc..ec3474f0594c 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
@@ -987,6 +987,39 @@
           <value>com.sun.star.comp.svx.TableToolBoxControl</value>
         </prop>
       </node>
+      <node oor:name="InteractiveFrameColumnsToolBoxControl" oor:op="replace">
+        <prop oor:name="Command">
+          <value>.uno:InsertFrameInteract</value>
+        </prop>
+        <prop oor:name="Module">
+          <value/>
+        </prop>
+        <prop oor:name="Controller">
+          <value>com.sun.star.comp.svx.ColumnsToolBoxControl</value>
+        </prop>
+      </node>
+      <node oor:name="FrameColumnsToolBoxControl" oor:op="replace">
+        <prop oor:name="Command">
+          <value>.uno:InsertFrame</value>
+        </prop>
+        <prop oor:name="Module">
+          <value/>
+        </prop>
+        <prop oor:name="Controller">
+          <value>com.sun.star.comp.svx.ColumnsToolBoxControl</value>
+        </prop>
+      </node>
+      <node oor:name="SectionColumnsToolBoxControl" oor:op="replace">
+        <prop oor:name="Command">
+          <value>.uno:InsertSection</value>
+        </prop>
+        <prop oor:name="Module">
+          <value/>
+        </prop>
+        <prop oor:name="Controller">
+          <value>com.sun.star.comp.svx.ColumnsToolBoxControl</value>
+        </prop>
+      </node>
       <node oor:name="ExtrusionDirectionFloater" oor:op="replace">
         <prop oor:name="Command">
           <value>.uno:ExtrusionDirectionFloater</value>
diff --git a/solenv/sanitizers/ui/svx.suppr b/solenv/sanitizers/ui/svx.suppr
index b2c056964c43..4c89692d8ad1 100644
--- a/solenv/sanitizers/ui/svx.suppr
+++ b/solenv/sanitizers/ui/svx.suppr
@@ -6,6 +6,7 @@ svx/uiconfig/ui/asianphoneticguidedialog.ui://GtkLabel[@id='rubytextft'] orphan-
 svx/uiconfig/ui/asianphoneticguidedialog.ui://GtkEntry[@id='Left1ED'] no-labelled-by
 svx/uiconfig/ui/asianphoneticguidedialog.ui://GtkEntry[@id='Right1ED'] no-labelled-by
 svx/uiconfig/ui/colorwindow.ui://GtkButton[@id='auto_color_button'] button-no-label
+svx/uiconfig/ui/columnswindow.ui://GtkSpinButton[@id='spinbutton'] no-labelled-by
 svx/uiconfig/ui/compressgraphicdialog.ui://GtkLabel[@id='label13'] orphan-label
 svx/uiconfig/ui/compressgraphicdialog.ui://GtkLabel[@id='label14'] orphan-label
 svx/uiconfig/ui/compressgraphicdialog.ui://GtkLabel[@id='label16'] orphan-label
diff --git a/svx/UIConfig_svx.mk b/svx/UIConfig_svx.mk
index 9aab9fc7f467..1e62d619269d 100644
--- a/svx/UIConfig_svx.mk
+++ b/svx/UIConfig_svx.mk
@@ -28,6 +28,7 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\
 	svx/uiconfig/ui/colorwindow \
 	svx/uiconfig/ui/currencywindow \
 	svx/uiconfig/ui/colsmenu \
+	svx/uiconfig/ui/columnswindow \
 	svx/uiconfig/ui/compressgraphicdialog \
 	svx/uiconfig/ui/convertmenu \
 	svx/uiconfig/ui/crashreportdlg \
diff --git a/svx/source/tbxctrls/layctrl.cxx b/svx/source/tbxctrls/layctrl.cxx
index b9640f16f6a6..0a07f8dfcb5c 100644
--- a/svx/source/tbxctrls/layctrl.cxx
+++ b/svx/source/tbxctrls/layctrl.cxx
@@ -18,6 +18,7 @@
  */
 
 #include <string>
+#include <vcl/customweld.hxx>
 #include <vcl/event.hxx>
 #include <vcl/settings.hxx>
 #include <vcl/stdtext.hxx>
@@ -44,24 +45,16 @@ using namespace ::com::sun::star::beans;
 using namespace ::com::sun::star::util;
 using namespace ::com::sun::star::frame;
 
-SFX_IMPL_TOOLBOX_CONTROL(SvxColumnsToolBoxControl,SfxUInt16Item);
-
 namespace {
 
-class TableWindow final : public WeldToolbarPopup
+class TableWidget final : public weld::CustomWidgetController
 {
 private:
-    std::unique_ptr<weld::Button> mxTableButton;
-    std::unique_ptr<weld::DrawingArea> mxDrawingArea;
-    ::Color             aFontColor;
-    ::Color             aLineColor;
-    ::Color             aFillColor;
-    ::Color             aHighlightFillColor;
-    ::Color             aBackgroundColor;
+    rtl::Reference<SvxTableToolBoxControl> mxControl;
+    OUString maCommand;
+
     long                nCol;
     long                nLine;
-    OUString const      maCommand;
-    rtl::Reference<SvxTableToolBoxControl> mxControl;
 
     static const long TABLE_CELLS_HORIZ;
     static const long TABLE_CELLS_VERT;
@@ -72,6 +65,35 @@ private:
     long mnTableWidth;
     long mnTableHeight;
 
+    ::Color             aFontColor;
+    ::Color             aLineColor;
+    ::Color             aFillColor;
+    ::Color             aHighlightFillColor;
+    ::Color             aBackgroundColor;
+
+    void                Update(long nNewCol, long nNewLine);
+    void                InsertTable();
+
+public:
+    TableWidget(SvxTableToolBoxControl* pControl, const OUString& rCommand);
+
+    virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override;
+
+    virtual bool KeyInput(const KeyEvent&) override;
+    virtual bool MouseButtonDown(const MouseEvent&) override;
+    virtual bool MouseMove(const MouseEvent&) override;
+    virtual bool MouseButtonUp(const MouseEvent&) override;
+    virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override;
+};
+
+class TableWindow final : public WeldToolbarPopup
+{
+private:
+    std::unique_ptr<weld::Button> mxTableButton;
+    std::unique_ptr<TableWidget> mxTableWidget;
+    std::unique_ptr<weld::CustomWeld> mxTableWidgetWin;
+    rtl::Reference<SvxTableToolBoxControl> mxControl;
+
     DECL_LINK(SelectHdl, weld::Button&, void);
 
 public:
@@ -79,52 +101,42 @@ public:
                  const OUString& rCmd);
     virtual void GrabFocus() override
     {
-        mxDrawingArea->grab_focus();
+        mxTableWidget->GrabFocus();
     }
-
-    DECL_LINK(KeyInputHdl, const KeyEvent& rKEvt, bool);
-    DECL_LINK(MouseMoveHdl, const MouseEvent&, bool);
-    DECL_LINK(MouseButtonUpHdl, const MouseEvent&, bool);
-    DECL_STATIC_LINK(TableWindow, MouseButtonDownHdl, const MouseEvent&, bool);
-    DECL_LINK(ResizeHdl, const Size&, void);
-    typedef std::pair<vcl::RenderContext&, const tools::Rectangle&> target_and_area;
-    DECL_LINK(PaintHdl, target_and_area, void);
-
-private:
-    void                    Update( long nNewCol, long nNewLine );
-    void                    InsertTable();
-    void                    TableDialog( const Sequence< PropertyValue >& rArgs );
-    void                    CloseAndShowTableDialog();
 };
 
 }
 
-const long TableWindow::TABLE_CELLS_HORIZ = 10;
-const long TableWindow::TABLE_CELLS_VERT = 15;
-
+const long TableWidget::TABLE_CELLS_HORIZ = 10;
+const long TableWidget::TABLE_CELLS_VERT = 15;
 
 IMPL_LINK_NOARG(TableWindow, SelectHdl, weld::Button&, void)
 {
-    CloseAndShowTableDialog();
+    mxControl->CloseAndShowTableDialog();
 }
 
 TableWindow::TableWindow(SvxTableToolBoxControl* pControl, weld::Widget* pParent, const OUString& rCmd)
     : WeldToolbarPopup(pControl->getFrameInterface(), pParent, "svx/ui/tablewindow.ui", "TableWindow")
     , mxTableButton(m_xBuilder->weld_button("moreoptions"))
-    , mxDrawingArea(m_xBuilder->weld_drawing_area("table"))
-    , nCol( 0 )
-    , nLine( 0 )
-    , maCommand( rCmd )
+    , mxTableWidget(new TableWidget(pControl, rCmd))
+    , mxTableWidgetWin(new weld::CustomWeld(*m_xBuilder, "table", *mxTableWidget))
     , mxControl(pControl)
 {
-    float fScaleFactor = mxDrawingArea->get_ref_device().GetDPIScaleFactor();
-
-    mnTableCellWidth  = 15 * fScaleFactor;
-    mnTableCellHeight = 15 * fScaleFactor;
-
-    mnTableWidth  = TABLE_CELLS_HORIZ*mnTableCellWidth;
-    mnTableHeight = TABLE_CELLS_VERT*mnTableCellHeight;
+    mxTableButton->set_label( SvxResId( RID_SVXSTR_MORE ) );
+    mxTableButton->connect_clicked( LINK( this, TableWindow, SelectHdl ) );
+    mxTableButton->show();
+}
 
+TableWidget::TableWidget(SvxTableToolBoxControl* pControl, const OUString& rCommand)
+    : mxControl(pControl)
+    , maCommand(rCommand)
+    , nCol(0)
+    , nLine(0)
+    , mnTableCellWidth(0)
+    , mnTableCellHeight(0)
+    , mnTableWidth(0)
+    , mnTableHeight(0)
+{
     const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings();
     svtools::ColorConfig aColorConfig;
     aFontColor = aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor;
@@ -132,24 +144,26 @@ TableWindow::TableWindow(SvxTableToolBoxControl* pControl, weld::Widget* pParent
     aFillColor = rStyles.GetWindowColor();
     aHighlightFillColor = rStyles.GetHighlightColor();
     aBackgroundColor = rStyles.GetFaceColor();
+}
 
-    mxDrawingArea->connect_key_press(LINK(this, TableWindow, KeyInputHdl));
-    mxDrawingArea->connect_mouse_move(LINK(this, TableWindow, MouseMoveHdl));
-    mxDrawingArea->connect_mouse_release(LINK(this, TableWindow, MouseButtonUpHdl));
-    mxDrawingArea->connect_mouse_press(LINK(this, TableWindow, MouseButtonDownHdl));
-    mxDrawingArea->connect_size_allocate(LINK(this, TableWindow, ResizeHdl));
-    mxDrawingArea->connect_draw(LINK(this, TableWindow, PaintHdl));
+void TableWidget::SetDrawingArea(weld::DrawingArea* pDrawingArea)
+{
+    float fScaleFactor = pDrawingArea->get_ref_device().GetDPIScaleFactor();
 
-    mxTableButton->set_label( SvxResId( RID_SVXSTR_MORE ) );
-    mxTableButton->connect_clicked( LINK( this, TableWindow, SelectHdl ) );
-    mxTableButton->show();
+    mnTableCellWidth  = 15 * fScaleFactor;
+    mnTableCellHeight = 15 * fScaleFactor;
+
+    mnTableWidth  = TABLE_CELLS_HORIZ*mnTableCellWidth;
+    mnTableHeight = TABLE_CELLS_VERT*mnTableCellHeight;
 
     // + 1 to leave space to draw the right/bottom borders
-    mxDrawingArea->set_size_request(mnTableWidth + 1, mnTableHeight + 1);
-    mxDrawingArea->queue_draw();
+    Size aSize(mnTableWidth + 1, mnTableHeight + 1);
+    pDrawingArea->set_size_request(aSize.Width(), aSize.Height());
+    CustomWidgetController::SetDrawingArea(pDrawingArea);
+    SetOutputSizePixel(aSize);
 }
 
-IMPL_LINK(TableWindow, MouseMoveHdl, const MouseEvent&, rMEvt, bool)
+bool TableWidget::MouseMove(const MouseEvent& rMEvt)
 {
     Point aPos = rMEvt.GetPosPixel();
     Point aMousePos( aPos );
@@ -162,7 +176,7 @@ IMPL_LINK(TableWindow, MouseMoveHdl, const MouseEvent&, rMEvt, bool)
     return true;
 }
 
-IMPL_LINK(TableWindow, KeyInputHdl, const KeyEvent&, rKEvt, bool)
+bool TableWidget::KeyInput(const KeyEvent& rKEvt)
 {
     bool bHandled = false;
     sal_uInt16 nModifier = rKEvt.GetKeyCode().GetModifier();
@@ -184,7 +198,7 @@ IMPL_LINK(TableWindow, KeyInputHdl, const KeyEvent&, rKEvt, bool)
                 if ( nNewLine < TABLE_CELLS_VERT )
                     nNewLine++;
                 else
-                    CloseAndShowTableDialog();
+                    mxControl->CloseAndShowTableDialog();
                 break;
             case KEY_LEFT:
                 if ( nNewCol > 1 )
@@ -196,7 +210,7 @@ IMPL_LINK(TableWindow, KeyInputHdl, const KeyEvent&, rKEvt, bool)
                 if ( nNewCol < TABLE_CELLS_HORIZ )
                     nNewCol++;
                 else
-                    CloseAndShowTableDialog();
+                    mxControl->CloseAndShowTableDialog();
                 break;
             case KEY_ESCAPE:
                 mxControl->EndPopupMode();
@@ -223,27 +237,20 @@ IMPL_LINK(TableWindow, KeyInputHdl, const KeyEvent&, rKEvt, bool)
     return bHandled;
 }
 
-IMPL_LINK_NOARG(TableWindow, MouseButtonUpHdl, const MouseEvent&, bool)
+bool TableWidget::MouseButtonUp(const MouseEvent&)
 {
     InsertTable();
     mxControl->EndPopupMode();
     return true;
 }
 
-IMPL_STATIC_LINK_NOARG(TableWindow, MouseButtonDownHdl, const MouseEvent&, bool)
+bool TableWidget::MouseButtonDown(const MouseEvent&)
 {
     return true;
 }
 
-IMPL_LINK_NOARG(TableWindow, ResizeHdl, const Size&, void)
-{
-    mxDrawingArea->queue_draw();
-}
-
-IMPL_LINK(TableWindow, PaintHdl, target_and_area, aPayload, void)
+void TableWidget::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
 {
-    vcl::RenderContext& rRenderContext = aPayload.first;
-
     rRenderContext.Push(PushFlags::FONT);
 
     rRenderContext.SetBackground( aBackgroundColor );
@@ -317,7 +324,7 @@ IMPL_LINK(TableWindow, PaintHdl, target_and_area, aPayload, void)
                                       nTextY + aTextSize.Height() + nTipBorder));
 
     // #i95350# force RTL output
-    if (mxDrawingArea->get_direction())
+    if (IsRTLEnabled())
         aText = u"\u202D" + aText;
 
     rRenderContext.DrawText(Point(nTextX, nTextY), aText);
@@ -325,7 +332,7 @@ IMPL_LINK(TableWindow, PaintHdl, target_and_area, aPayload, void)
     rRenderContext.Pop();
 }
 
-void TableWindow::InsertTable()
+void TableWidget::InsertTable()
 {
     if (nCol && nLine)
     {
@@ -335,11 +342,11 @@ void TableWindow::InsertTable()
         aArgs[1].Name = "Rows";
         aArgs[1].Value <<= sal_Int16( nLine );
 
-        TableDialog( aArgs );
+        mxControl->TableDialog( aArgs );
     }
 }
 
-void TableWindow::Update( long nNewCol, long nNewLine )
+void TableWidget::Update( long nNewCol, long nNewLine )
 {
     if ( nNewCol < 0 || nNewCol > TABLE_CELLS_HORIZ )
         nNewCol = 0;
@@ -351,18 +358,18 @@ void TableWindow::Update( long nNewCol, long nNewLine )
     {
         nCol = nNewCol;
         nLine = nNewLine;
-        mxDrawingArea->queue_draw_area(0, 0, mnTableWidth, mnTableHeight);
+        Invalidate(tools::Rectangle(0, 0, mnTableWidth, mnTableHeight));
     }
 }
 
-void TableWindow::TableDialog( const Sequence< PropertyValue >& rArgs )
+void SvxTableToolBoxControl::TableDialog( const Sequence< PropertyValue >& rArgs )
 {
-    Reference< XDispatchProvider > xDispatchProvider( mxFrame, UNO_QUERY );
+    Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY );
     if ( xDispatchProvider.is() )
     {
         css::util::URL aTargetURL;
         Reference < XURLTransformer > xTrans( URLTransformer::create(::comphelper::getProcessComponentContext()) );
-        aTargetURL.Complete = maCommand;
+        aTargetURL.Complete = m_aCommandURL;
         xTrans->parseStrict( aTargetURL );
 
         Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( aTargetURL, OUString(), 0 );
@@ -371,10 +378,10 @@ void TableWindow::TableDialog( const Sequence< PropertyValue >& rArgs )
     }
 }
 
-void TableWindow::CloseAndShowTableDialog()
+void SvxTableToolBoxControl::CloseAndShowTableDialog()
 {
     // close the toolbar tool
-    mxControl->EndPopupMode();
+    EndPopupMode();
 
     // and open the table dialog instead
     TableDialog( Sequence< PropertyValue >() );
@@ -382,9 +389,12 @@ void TableWindow::CloseAndShowTableDialog()
 
 namespace {
 
-class ColumnsWindow : public SfxPopupWindow
+class ColumnsWidget final : public weld::CustomWidgetController
 {
 private:
+    rtl::Reference<SvxColumnsToolBoxControl> mxControl;
+    weld::SpinButton& mrSpinButton;
+
     ::Color             aLineColor;
     ::Color             aHighlightLineColor;
     ::Color             aFillColor;
@@ -393,35 +403,65 @@ private:
     long                nCol;
     long                nWidth;
     long                nMX;
-    long                nTextHeight;
-    bool                bInitialKeyInput;
     bool                m_bMod1;
-    Reference< XFrame > mxFrame;
-    OUString const            maCommand;
 
+    DECL_LINK(ValueChangedHdl, weld::SpinButton&, void);
+    DECL_LINK(ActivateHdl, weld::Entry&, bool);
+
+    void InsertColumns();
     void UpdateSize_Impl( long nNewCol );
 public:
-                            ColumnsWindow( sal_uInt16 nId, vcl::Window* pParent, const OUString& rCmd,
-                                           const OUString &rText, const Reference< XFrame >& rFrame );
-
-    void                    KeyInput( const KeyEvent& rKEvt ) override;
-    virtual void            MouseMove( const MouseEvent& rMEvt ) override;
-    virtual void            MouseButtonDown( const MouseEvent& rMEvt ) override;
-    virtual void            MouseButtonUp( const MouseEvent& rMEvt ) override;
-    virtual void            Paint( vcl::RenderContext& /*rRenderContext*/, const tools::Rectangle& ) override;
-    virtual void            PopupModeEnd() override;
+    ColumnsWidget(SvxColumnsToolBoxControl* pControl, weld::SpinButton& rSpinButton);
+
+    virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override;
+
+    virtual bool KeyInput(const KeyEvent&) override;
+    virtual bool MouseButtonDown(const MouseEvent&) override;
+    virtual bool MouseMove(const MouseEvent&) override;
+    virtual bool MouseButtonUp(const MouseEvent&) override;
+    virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override;
+};
+
+
+class ColumnsWindow final : public WeldToolbarPopup
+{
+private:
+    std::unique_ptr<weld::SpinButton> mxSpinButton;
+    std::unique_ptr<ColumnsWidget> mxColumnsWidget;
+    std::unique_ptr<weld::CustomWeld> mxColumnsWidgetWin;
+    rtl::Reference<SvxColumnsToolBoxControl> mxControl;
+
+public:
+    ColumnsWindow(SvxColumnsToolBoxControl* pControl, weld::Widget* pParent);
+
+    virtual void GrabFocus() override
+    {
+        mxColumnsWidget->GrabFocus();
+    }
 };
 
 }
 
-ColumnsWindow::ColumnsWindow( sal_uInt16 nId, vcl::Window* pParent, const OUString& rCmd,
-                              const OUString& rText, const Reference< XFrame >& rFrame ) :
-    SfxPopupWindow( nId, pParent, rFrame, WB_STDPOPUP ),
-    bInitialKeyInput(true),
-    m_bMod1(false),
-    mxFrame(rFrame),
-    maCommand( rCmd )
+ColumnsWindow::ColumnsWindow(SvxColumnsToolBoxControl* pControl, weld::Widget* pParent)
+    : WeldToolbarPopup(pControl->getFrameInterface(), pParent, "svx/ui/columnswindow.ui", "ColumnsWindow")
+    , mxSpinButton(m_xBuilder->weld_spin_button("spinbutton"))
+    , mxColumnsWidget(new ColumnsWidget(pControl, *mxSpinButton))
+    , mxColumnsWidgetWin(new weld::CustomWeld(*m_xBuilder, "columns", *mxColumnsWidget))
+    , mxControl(pControl)
+{
+}
+
+ColumnsWidget::ColumnsWidget(SvxColumnsToolBoxControl* pControl, weld::SpinButton& rSpinButton)
+    : mxControl(pControl)
+    , mrSpinButton(rSpinButton)
+    , nCol(1)
+    , nWidth(5)
+    , nMX(0)
+    , m_bMod1(false)
 {
+    mrSpinButton.connect_value_changed(LINK(this, ColumnsWidget, ValueChangedHdl));
+    mrSpinButton.connect_activate(LINK(this, ColumnsWidget, ActivateHdl));
+
     const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings();
     svtools::ColorConfig aColorConfig;
     aLineColor = aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor;
@@ -429,84 +469,52 @@ ColumnsWindow::ColumnsWindow( sal_uInt16 nId, vcl::Window* pParent, const OUStri
     aFillColor = rStyles.GetWindowColor();
     aHighlightFillColor = rStyles.GetHighlightColor();
     aFaceColor = rStyles.GetFaceColor();
+}
 
-    nTextHeight = GetTextHeight()+1;
-    SetBackground();
-    vcl::Font aFont( GetFont() );
-    aFont.SetColor( aLineColor );
-    aFont.SetFillColor( aFaceColor );
-    aFont.SetTransparent( false );
-    SetFont( aFont );
-
-    nCol        = 0;
-    nWidth      = 4;
+IMPL_LINK_NOARG(ColumnsWidget, ValueChangedHdl, weld::SpinButton&, void)
+{
+    UpdateSize_Impl(mrSpinButton.get_value());
+}
 
-    SetText( rText );
+IMPL_LINK_NOARG(ColumnsWidget, ActivateHdl, weld::Entry&, bool)
+{
+    InsertColumns();
+    mxControl->EndPopupMode();
+    return true;
+}
 
-    Size aLogicSize = LogicToPixel( Size( 95, 155 ), MapMode( MapUnit::Map10thMM ) );
+void ColumnsWidget::SetDrawingArea(weld::DrawingArea* pDrawingArea)
+{
+    OutputDevice& rDevice = pDrawingArea->get_ref_device();
+    Size aLogicSize = rDevice.LogicToPixel( Size( 95, 155 ), MapMode( MapUnit::Map10thMM ) );
     nMX = aLogicSize.Width();
-    SetOutputSizePixel( Size( nMX*nWidth-1, aLogicSize.Height()+nTextHeight ) );
-    StartCascading();
+    Size aSize(nMX*nWidth-1, aLogicSize.Height());
+    pDrawingArea->set_size_request(aSize.Width(), aSize.Height());
+    CustomWidgetController::SetDrawingArea(pDrawingArea);
+    SetOutputSizePixel(aSize);
 }
 
-
-void ColumnsWindow::MouseMove( const MouseEvent& rMEvt )
+bool ColumnsWidget::MouseMove(const MouseEvent& rMEvt)
 {
-    SfxPopupWindow::MouseMove( rMEvt );
     Point aPos = rMEvt.GetPosPixel();
-    Point aMousePos = aPos;
-
-    if ( rMEvt.IsEnterWindow() )
-        CaptureMouse();
-    else if ( aMousePos.X() < 0 || aMousePos.Y() < 0 )
-    {
-        nCol = 0;
-        ReleaseMouse();
-        Invalidate();
-        return;
-    }
 
-    long    nNewCol = 0;
+    long nNewCol = 1;
     if ( aPos.X() > 0 )
         nNewCol = aPos.X() / nMX + 1;
-    if ( aPos.Y() < 0 )
-        nNewCol = 0;
     if ( nNewCol > 20 )
         nNewCol = 20;
     UpdateSize_Impl( nNewCol );
+
+    return true;
 }
 
-void ColumnsWindow::UpdateSize_Impl( long nNewCol )
+void ColumnsWidget::UpdateSize_Impl( long nNewCol )
 {
-    Size    aWinSize = GetOutputSizePixel();
-    Point   aWinPos;// = GetPosPixel();
-
-    if ( nWidth <= nNewCol )
-    {
-        Point aMaxPos = OutputToScreenPixel( GetDesktopRectPixel().BottomRight() );
-
-        if ( nWidth <= nNewCol )
-        {
-            nWidth = nNewCol;
-            nWidth++;
-        }
-
-        while ( nWidth > 0 &&
-                static_cast<short>(aWinPos.X()+(nMX*nWidth-1)) >= aMaxPos.X()-3 )
-            nWidth--;
-
-        if ( nNewCol > nWidth )
-            nNewCol = nWidth;
-
-        Invalidate( tools::Rectangle( 0, aWinSize.Height()-nTextHeight+2,
-                               aWinSize.Width(), aWinSize.Height() ) );
-        SetOutputSizePixel( Size( nMX*nWidth-1, aWinSize.Height() ) );
-    }
-
-
     if ( nNewCol != nCol )
     {
-        Invalidate( tools::Rectangle( 0, aWinSize.Height()-nTextHeight+2,
+        Size aWinSize = GetOutputSizePixel();
+
+        Invalidate( tools::Rectangle( 0, aWinSize.Height() - 2,
                                aWinSize.Width(), aWinSize.Height() ) );
 
         long nMinCol = 0, nMaxCol = 0;
@@ -523,20 +531,18 @@ void ColumnsWindow::UpdateSize_Impl( long nNewCol )
         }
 
         Invalidate( tools::Rectangle( nMinCol*nMX-1, 0,
-                               nMaxCol*nMX+1, aWinSize.Height()-nTextHeight+2 ) );
-        nCol  = nNewCol;
+                               nMaxCol*nMX+1, aWinSize.Height() - 2 ) );
+        nCol = nNewCol;
+        mrSpinButton.set_value(nCol);
     }
-    Update();
 }
 
-
-void ColumnsWindow::MouseButtonDown( const MouseEvent& rMEvt )
+bool ColumnsWidget::MouseButtonDown(const MouseEvent&)
 {
-    SfxPopupWindow::MouseButtonDown( rMEvt );
-    CaptureMouse();
+    return true;
 }
 
-void ColumnsWindow::KeyInput( const KeyEvent& rKEvt )
+bool ColumnsWidget::KeyInput(const KeyEvent& rKEvt)
 {
     bool bHandled = false;
     sal_uInt16 nModifier = rKEvt.GetKeyCode().GetModifier();
@@ -559,49 +565,44 @@ void ColumnsWindow::KeyInput( const KeyEvent& rKEvt )
                     nNewCol++;
                 break;
                 case KEY_RETURN :
-                    if(IsMouseCaptured())
-                        ReleaseMouse();
-                    EndPopupMode(FloatWinPopupEndFlags::CloseAll );
+                    InsertColumns();
+                    mxControl->EndPopupMode();
                 break;
                 case KEY_ESCAPE :
                 case KEY_UP :
-                    EndPopupMode( FloatWinPopupEndFlags::Cancel);
+                    mxControl->EndPopupMode();
                 break;
             }
-            //make sure that a table can initially be created
-            if(bInitialKeyInput)
-            {
-                bInitialKeyInput = false;
-                if(!nNewCol)
-                    nNewCol = 1;
-            }
             UpdateSize_Impl( nNewCol );
         }
     }
     else if(KEY_MOD1 == nModifier && KEY_RETURN == nKey)
     {
         m_bMod1 = true;
-        if(IsMouseCaptured())
-            ReleaseMouse();
-        EndPopupMode(FloatWinPopupEndFlags::CloseAll );
+        InsertColumns();
+        mxControl->EndPopupMode();
     }
-    if(!bHandled)
-        SfxPopupWindow::KeyInput(rKEvt);
+    return bHandled;
 }
 
-
-void ColumnsWindow::MouseButtonUp( const MouseEvent& rMEvt )
+bool ColumnsWidget::MouseButtonUp(const MouseEvent&)
 {
-    SfxPopupWindow::MouseButtonUp( rMEvt );
-    ReleaseMouse();
-
-    if ( IsInPopupMode() )
-        EndPopupMode( FloatWinPopupEndFlags::CloseAll );
+    InsertColumns();
+    mxControl->EndPopupMode();
+    return true;
 }
 
-
-void ColumnsWindow::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
+void ColumnsWidget::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
 {
+    rRenderContext.Push(PushFlags::FONT);
+
+    rRenderContext.SetBackground();
+    vcl::Font aFont( rRenderContext.GetFont() );
+    aFont.SetColor( aLineColor );
+    aFont.SetFillColor( aFaceColor );
+    aFont.SetTransparent( false );
+    rRenderContext.SetFont( aFont );
+
     long i;
     long nLineWidth;
     Size aSize(GetOutputSizePixel());
@@ -619,10 +620,10 @@ void ColumnsWindow::Paint(vcl::RenderContext& rRenderContext, const tools::Recta
             rRenderContext.SetFillColor(aFillColor);
         }
 
-        rRenderContext.DrawRect(tools::Rectangle(i * nMX - 1, -1, i * nMX + nMX, aSize.Height() - nTextHeight + 1));
+        rRenderContext.DrawRect(tools::Rectangle(i * nMX - 1, -1, i * nMX + nMX, aSize.Height() - 1));
 
         long j = 4;
-        while (j < aSize.Height() - nTextHeight - 4)
+        while (j < aSize.Height() - 4)
         {
             if (!(j % 16))
                 nLineWidth = 10;
@@ -635,48 +636,51 @@ void ColumnsWindow::Paint(vcl::RenderContext& rRenderContext, const tools::Recta
 
     rRenderContext.SetLineColor();
     rRenderContext.SetFillColor(aFaceColor);
-    OUString aText;
-    if (nCol)
-        aText = OUString::number(nCol);
-    else
-        aText = GetStandardText(StandardButtonType::Cancel).replaceAll("~", "");
-
-    Size aTextSize(rRenderContext.GetTextWidth(aText), rRenderContext.GetTextHeight());
-    rRenderContext.DrawText(Point((aSize.Width() - aTextSize.Width()) / 2, aSize.Height() - nTextHeight + 2), aText);
 
     rRenderContext.DrawRect(tools::Rectangle(0,
-                                      aSize.Height() - nTextHeight + 2,
-                                      (aSize.Width() - aTextSize.Width()) / 2 - 1,
+                                      aSize.Height() - 2,
+                                      aSize.Width() / 2 - 1,
                                       aSize.Height()));
 
-    rRenderContext.DrawRect(tools::Rectangle((aSize.Width() - aTextSize.Width()) / 2 + aTextSize.Width(),
-                                      aSize.Height() - nTextHeight + 2,
+    rRenderContext.DrawRect(tools::Rectangle(aSize.Width() / 2,
+                                      aSize.Height() - 2,
                                       aSize.Width(),
                                       aSize.Height()));
 
     rRenderContext.SetLineColor(aLineColor);
     rRenderContext.SetFillColor();
-    rRenderContext.DrawRect(tools::Rectangle( 0, 0, aSize.Width() - 1, aSize.Height() - nTextHeight + 1));
+    rRenderContext.DrawRect(tools::Rectangle( 0, 0, aSize.Width() - 1, aSize.Height() - 1));
+
+    rRenderContext.Pop();
 }
 
+void SvxColumnsToolBoxControl::InsertColumns(const Sequence< PropertyValue >& rArgs)
+{
+    Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY );
+    if ( xDispatchProvider.is() )
+    {
+        css::util::URL aTargetURL;
+        Reference < XURLTransformer > xTrans( URLTransformer::create(::comphelper::getProcessComponentContext()) );
+        aTargetURL.Complete = m_aCommandURL;
+        xTrans->parseStrict( aTargetURL );
+
+        Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( aTargetURL, OUString(), 0 );
+        if ( xDispatch.is() )
+            xDispatch->dispatch( aTargetURL, rArgs );
+    }
+}
 
-void ColumnsWindow::PopupModeEnd()
+void ColumnsWidget::InsertColumns()
 {
-    if ( !IsPopupModeCanceled() && nCol )
+    if (nCol)
     {
         Sequence< PropertyValue > aArgs( 2 );
         aArgs[0].Name = "Columns";
         aArgs[0].Value <<= sal_Int16( nCol );
         aArgs[1].Name = "Modifier";
         aArgs[1].Value <<= sal_Int16( m_bMod1 ? KEY_MOD1 : 0 );
-
-        SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ),
-                                        maCommand,
-                                        aArgs );
+        mxControl->InsertColumns(aArgs);
     }
-    else if ( IsPopupModeCanceled() )
-        ReleaseMouse();
-    SfxPopupWindow::PopupModeEnd();
 }
 
 SvxTableToolBoxControl::SvxTableToolBoxControl(const css::uno::Reference<css::uno::XComponentContext>& rContext)
@@ -737,39 +741,62 @@ com_sun_star_comp_svx_TableToolBoxControl_get_implementation(
     return cppu::acquire(new SvxTableToolBoxControl(rContext));
 }
 
-SvxColumnsToolBoxControl::SvxColumnsToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
-    : SfxToolBoxControl(nSlotId, nId, rTbx)
-    , bEnabled(false)
+SvxColumnsToolBoxControl::SvxColumnsToolBoxControl(const css::uno::Reference<css::uno::XComponentContext>& rContext)
+    : PopupWindowController(rContext, nullptr, OUString())
 {
-    rTbx.SetItemBits( nId, ToolBoxItemBits::DROPDOWN | rTbx.GetItemBits( nId ) );
-    rTbx.Invalidate();
 }
 
+void SvxColumnsToolBoxControl::initialize( const css::uno::Sequence< css::uno::Any >& rArguments )
+{
+    PopupWindowController::initialize(rArguments);
+
+    ToolBox* pToolBox = nullptr;
+    sal_uInt16 nId = 0;
+    if (getToolboxId(nId, &pToolBox) && pToolBox->GetItemCommand(nId) == m_aCommandURL)
+        pToolBox->SetItemBits(nId, ToolBoxItemBits::DROPDOWNONLY | pToolBox->GetItemBits(nId));
+}
 
 SvxColumnsToolBoxControl::~SvxColumnsToolBoxControl()
 {
 }
 
+std::unique_ptr<WeldToolbarPopup> SvxColumnsToolBoxControl::weldPopupWindow()
+{
+    return std::make_unique<ColumnsWindow>(this, m_pToolbar);
+}
+
+VclPtr<vcl::Window> SvxColumnsToolBoxControl::createPopupWindow(vcl::Window* pParent)
+{
+    ToolBox* pToolBox = nullptr;
+    sal_uInt16 nId = 0;
+    bool bToolBox = getToolboxId(nId, &pToolBox);
+
+    mxInterimPopover = VclPtr<InterimToolbarPopup>::Create(getFrameInterface(), pParent,
+        std::make_unique<ColumnsWindow>(this, pParent->GetFrameWeld()));
+
+    mxInterimPopover->SetText(bToolBox ? pToolBox->GetItemText(nId) : OUString());
 
-VclPtr<SfxPopupWindow> SvxColumnsToolBoxControl::CreatePopupWindow()
+    mxInterimPopover->Show();
+
+    return mxInterimPopover;
+}
+
+OUString SvxColumnsToolBoxControl::getImplementationName()
 {
-    VclPtr<ColumnsWindow> pWin;
-    if(bEnabled)
-    {
-            pWin = VclPtr<ColumnsWindow>::Create( GetSlotId(), &GetToolBox(), m_aCommandURL, GetToolBox().GetItemText( GetId() ), m_xFrame );
-            pWin->StartPopupMode( &GetToolBox(),
-                                  FloatWinPopupFlags::GrabFocus|FloatWinPopupFlags::NoKeyClose );
-            SetPopupWindow( pWin );
-    }
-    return pWin;
+    return "com.sun.star.comp.svx.ColumnsToolBoxControl";
 }
 
-void SvxColumnsToolBoxControl::StateChanged( sal_uInt16 nSID,
-                                              SfxItemState eState,
-                                              const SfxPoolItem* pState )
+css::uno::Sequence<OUString> SvxColumnsToolBoxControl::getSupportedServiceNames()
+{
+    return { "com.sun.star.frame.ToolbarController" };
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
+com_sun_star_comp_svx_ColumnsToolBoxControl_get_implementation(
+    css::uno::XComponentContext* rContext,
+    css::uno::Sequence<css::uno::Any> const & )
 {
-    bEnabled = SfxItemState::DISABLED != eState;
-    SfxToolBoxControl::StateChanged(nSID,   eState, pState );
+    return cppu::acquire(new SvxColumnsToolBoxControl(rContext));
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/uiconfig/ui/columnswindow.ui b/svx/uiconfig/ui/columnswindow.ui
new file mode 100644
index 000000000000..a501b8c28c8a
--- /dev/null
+++ b/svx/uiconfig/ui/columnswindow.ui
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface domain="sw">
+  <requires lib="gtk+" version="3.18"/>
+  <object class="GtkAdjustment" id="adjustment2">
+    <property name="lower">1</property>
+    <property name="upper">1000</property>
+    <property name="value">1</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkPopover" id="ColumnsWindow">
+    <property name="can_focus">False</property>
+    <property name="no_show_all">True</property>
+    <property name="border_width">4</property>
+    <child>
+      <object class="GtkBox" id="container">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="hexpand">True</property>
+        <property name="vexpand">True</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkDrawingArea" id="columns">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="events">GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
+            <property name="halign">center</property>
+            <property name="valign">center</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkSpinButton" id="spinbutton">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="adjustment">adjustment2</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/svx/util/svx.component b/svx/util/svx.component
index 0f75d50498f4..90e3419e5f1b 100644
--- a/svx/util/svx.component
+++ b/svx/util/svx.component
@@ -116,6 +116,10 @@
     constructor="com_sun_star_comp_svx_TableToolBoxControl_get_implementation">
     <service name="com.sun.star.frame.ToolbarController"/>
   </implementation>
+  <implementation name="com.sun.star.comp.svx.ColumnsToolBoxControl"
+    constructor="com_sun_star_comp_svx_ColumnsToolBoxControl_get_implementation">
+    <service name="com.sun.star.frame.ToolbarController"/>
+  </implementation>
   <implementation name="com.sun.star.comp.svx.UnderlineToolBoxControl"
     constructor="com_sun_star_comp_svx_UnderlineToolBoxControl_get_implementation">
     <service name="com.sun.star.frame.ToolbarController"/>
diff --git a/sw/source/uibase/app/swmodule.cxx b/sw/source/uibase/app/swmodule.cxx
index d2f60c269e49..c9ba933ee7a6 100644
--- a/sw/source/uibase/app/swmodule.cxx
+++ b/sw/source/uibase/app/swmodule.cxx
@@ -291,10 +291,6 @@ void SwDLL::RegisterControls()
 
     SvxStyleToolBoxControl::RegisterControl(SID_STYLE_APPLY, pMod );
 
-    SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME_INTERACT, pMod );
-    SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME, pMod );
-    SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_REGION, pMod );
-
     SwZoomControl::RegisterControl(SID_ATTR_ZOOM, pMod );
     SwPreviewZoomControl::RegisterControl(FN_PREVIEW_ZOOM, pMod);
     SvxPosSizeStatusBarControl::RegisterControl(0, pMod );


More information about the Libreoffice-commits mailing list