[Libreoffice-commits] core.git: basctl/sdi basctl/source include/editeng sc/sdi sc/source sd/sdi svx/sdi svx/source sw/sdi sw/source

Maxim Monastirsky momonasmon at gmail.com
Sun Mar 26 15:10:10 UTC 2017


 basctl/sdi/baside.sdi                |  119 +++++++++++
 basctl/source/basicide/baside3.cxx   |  364 +++++++++++++----------------------
 basctl/source/basicide/basides1.cxx  |   25 ++
 basctl/source/basicide/basidesh.cxx  |   46 ++++
 basctl/source/basicide/idetemp.hxx   |   57 -----
 basctl/source/inc/baside3.hxx        |    1 
 basctl/source/inc/basidesh.hxx       |    2 
 include/editeng/svxenum.hxx          |   10 
 sc/sdi/drawsh.sdi                    |   11 -
 sc/source/ui/app/typemap.cxx         |    1 
 sc/source/ui/drawfunc/drawsh5.cxx    |    7 
 sd/sdi/_drvwsh.sdi                   |    5 
 svx/sdi/fmslots.sdi                  |   10 
 svx/sdi/svx.sdi                      |   18 -
 svx/sdi/svxitems.sdi                 |   42 ----
 svx/source/form/fmshell.cxx          |    6 
 sw/sdi/drwbassh.sdi                  |   37 +++
 sw/sdi/wdrwbase.sdi                  |   37 +++
 sw/source/uibase/shells/drwbassh.cxx |   16 -
 sw/source/uibase/shells/slotadd.cxx  |    1 
 sw/source/uibase/uiview/view2.cxx    |    9 
 sw/source/uibase/uiview/viewstat.cxx |   21 --
 22 files changed, 419 insertions(+), 426 deletions(-)

New commits:
commit 12c6caa84a61f23df996a0396432fa4b8d5c4785
Author: Maxim Monastirsky <momonasmon at gmail.com>
Date:   Sat Mar 25 22:53:28 2017 +0300

    Kill remaining PseudoSlots usage
    
    Change-Id: I14a820b7c0baba8d8b17d07715bf17c42c73c8fb
    TODO: Remove support code from idl and sfx2 modules
    Reviewed-on: https://gerrit.libreoffice.org/35718
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Maxim Monastirsky <momonasmon at gmail.com>

diff --git a/basctl/sdi/baside.sdi b/basctl/sdi/baside.sdi
index e61f737e0e14..f4993919e5ae 100644
--- a/basctl/sdi/baside.sdi
+++ b/basctl/sdi/baside.sdi
@@ -409,6 +409,125 @@ shell basctl_Shell
 
     SID_CHOOSE_CONTROLS
     [
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_PUSHBUTTON
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_CHECKBOX
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_RADIOBUTTON
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_SPINBUTTON
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_FIXEDTEXT
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_GROUPBOX
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_LISTBOX
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_COMBOBOX
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_EDIT
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_HSCROLLBAR
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_VSCROLLBAR
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_SELECT
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_IMAGECONTROL
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_PROGRESSBAR
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_HFIXEDLINE
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_VFIXEDLINE
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_DATEFIELD
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_TIMEFIELD
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_NUMERICFIELD
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_CURRENCYFIELD
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_FORMATTEDFIELD
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_PATTERNFIELD
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_FILECONTROL
+    [
+        ExecMethod      = ExecuteDialog;
+        StateMethod     = GetState;
+    ]
+    SID_INSERT_TREECONTROL
+    [
         ExecMethod      = ExecuteDialog;
         StateMethod     = GetState;
     ]
diff --git a/basctl/source/basicide/baside3.cxx b/basctl/source/basicide/baside3.cxx
index 821c34176072..ffccb5e2f1cb 100644
--- a/basctl/source/basicide/baside3.cxx
+++ b/basctl/source/basicide/baside3.cxx
@@ -29,7 +29,6 @@
 #include "dlgedmod.hxx"
 #include "dlgedview.hxx"
 #include "iderdll.hxx"
-#include "idetemp.hxx"
 #include "localizationmgr.hxx"
 #include "managelang.hxx"
 
@@ -79,6 +78,7 @@ DialogWindow::DialogWindow(DialogWindowLayout* pParent, ScriptDocument const& rD
                                             ? rDocument.getDocument()
                                             : Reference<frame::XModel>(), xDialogModel))
     ,m_pUndoMgr(new SfxUndoManager)
+    ,m_nControlSlotId(SID_INSERT_SELECT)
 {
     InitSettings();
 
@@ -137,9 +137,9 @@ void DialogWindow::MouseButtonUp( const MouseEvent& rMEvt )
     m_pEditor->MouseButtonUp( rMEvt );
     if( (m_pEditor->GetMode() == DlgEditor::INSERT) && !m_pEditor->IsCreateOK() )
     {
+        m_nControlSlotId = SID_INSERT_SELECT;
         m_pEditor->SetMode( DlgEditor::SELECT );
-        if (SfxBindings* pBindings = GetBindingsPtr())
-            pBindings->Invalidate( SID_CHOOSE_CONTROLS );
+        Shell::InvalidateControlSlots();
     }
     if (SfxBindings* pBindings = GetBindingsPtr())
     {
@@ -304,50 +304,7 @@ void DialogWindow::GetState( SfxItemSet& rSet )
             case SID_CHOOSE_CONTROLS:
             {
                 if ( IsReadOnly() )
-                {
                     rSet.DisableItem( nWh );
-                }
-                else
-                {
-                    SfxAllEnumItem aItem( SID_CHOOSE_CONTROLS );
-                    if ( GetEditor().GetMode() == DlgEditor::SELECT )
-                        aItem.SetValue( SVX_SNAP_SELECT );
-                    else
-                    {
-                        sal_uInt16 nObj;
-                        switch( m_pEditor->GetInsertObj() )
-                        {
-                            case OBJ_DLG_PUSHBUTTON:        nObj = SVX_SNAP_PUSHBUTTON; break;
-                            case OBJ_DLG_RADIOBUTTON:       nObj = SVX_SNAP_RADIOBUTTON; break;
-                            case OBJ_DLG_CHECKBOX:          nObj = SVX_SNAP_CHECKBOX; break;
-                            case OBJ_DLG_LISTBOX:           nObj = SVX_SNAP_LISTBOX; break;
-                            case OBJ_DLG_COMBOBOX:          nObj = SVX_SNAP_COMBOBOX; break;
-                            case OBJ_DLG_GROUPBOX:          nObj = SVX_SNAP_GROUPBOX; break;
-                            case OBJ_DLG_EDIT:              nObj = SVX_SNAP_EDIT; break;
-                            case OBJ_DLG_FIXEDTEXT:         nObj = SVX_SNAP_FIXEDTEXT; break;
-                            case OBJ_DLG_IMAGECONTROL:      nObj = SVX_SNAP_IMAGECONTROL; break;
-                            case OBJ_DLG_PROGRESSBAR:       nObj = SVX_SNAP_PROGRESSBAR; break;
-                            case OBJ_DLG_HSCROLLBAR:        nObj = SVX_SNAP_HSCROLLBAR; break;
-                            case OBJ_DLG_VSCROLLBAR:        nObj = SVX_SNAP_VSCROLLBAR; break;
-                            case OBJ_DLG_HFIXEDLINE:        nObj = SVX_SNAP_HFIXEDLINE; break;
-                            case OBJ_DLG_VFIXEDLINE:        nObj = SVX_SNAP_VFIXEDLINE; break;
-                            case OBJ_DLG_DATEFIELD:         nObj = SVX_SNAP_DATEFIELD; break;
-                            case OBJ_DLG_TIMEFIELD:         nObj = SVX_SNAP_TIMEFIELD; break;
-                            case OBJ_DLG_NUMERICFIELD:      nObj = SVX_SNAP_NUMERICFIELD; break;
-                            case OBJ_DLG_CURRENCYFIELD:     nObj = SVX_SNAP_CURRENCYFIELD; break;
-                            case OBJ_DLG_FORMATTEDFIELD:    nObj = SVX_SNAP_FORMATTEDFIELD; break;
-                            case OBJ_DLG_PATTERNFIELD:      nObj = SVX_SNAP_PATTERNFIELD; break;
-                            case OBJ_DLG_FILECONTROL:       nObj = SVX_SNAP_FILECONTROL; break;
-                            case OBJ_DLG_SPINBUTTON:        nObj = SVX_SNAP_SPINBUTTON; break;
-                            case OBJ_DLG_TREECONTROL:       nObj = SVX_SNAP_TREECONTROL; break;
-                            default:                        nObj = 0;
-                        }
-                        SAL_INFO_IF( !nObj, "basctl.basicide", "SID_CHOOSE_CONTROLS: unknown" );
-                        aItem.SetValue( nObj );
-                    }
-
-                    rSet.Put( aItem );
-                }
             }
             break;
 
@@ -372,6 +329,40 @@ void DialogWindow::GetState( SfxItemSet& rSet )
             {
                 if ( !bIsCalc || IsReadOnly() )
                     rSet.DisableItem( nWh );
+                else
+                    rSet.Put( SfxBoolItem( nWh, m_nControlSlotId == nWh ) );
+            }
+            break;
+
+            case SID_INSERT_SELECT:
+            case SID_INSERT_PUSHBUTTON:
+            case SID_INSERT_RADIOBUTTON:
+            case SID_INSERT_CHECKBOX:
+            case SID_INSERT_LISTBOX:
+            case SID_INSERT_COMBOBOX:
+            case SID_INSERT_GROUPBOX:
+            case SID_INSERT_EDIT:
+            case SID_INSERT_FIXEDTEXT:
+            case SID_INSERT_IMAGECONTROL:
+            case SID_INSERT_PROGRESSBAR:
+            case SID_INSERT_HSCROLLBAR:
+            case SID_INSERT_VSCROLLBAR:
+            case SID_INSERT_HFIXEDLINE:
+            case SID_INSERT_VFIXEDLINE:
+            case SID_INSERT_DATEFIELD:
+            case SID_INSERT_TIMEFIELD:
+            case SID_INSERT_NUMERICFIELD:
+            case SID_INSERT_CURRENCYFIELD:
+            case SID_INSERT_FORMATTEDFIELD:
+            case SID_INSERT_PATTERNFIELD:
+            case SID_INSERT_FILECONTROL:
+            case SID_INSERT_SPINBUTTON:
+            case SID_INSERT_TREECONTROL:
+            {
+                if ( IsReadOnly() )
+                    rSet.DisableItem( nWh );
+                else
+                    rSet.Put( SfxBoolItem( nWh, m_nControlSlotId == nWh ) );
             }
             break;
             case SID_SHOWLINES:
@@ -394,7 +385,10 @@ void DialogWindow::GetState( SfxItemSet& rSet )
 
 void DialogWindow::ExecuteCommand( SfxRequest& rReq )
 {
-    switch ( rReq.GetSlot() )
+    const sal_uInt16 nSlotId(rReq.GetSlot());
+    sal_uInt16 nInsertObj(0);
+
+    switch ( nSlotId )
     {
         case SID_CUT:
             if ( !IsReadOnly() )
@@ -423,198 +417,102 @@ void DialogWindow::ExecuteCommand( SfxRequest& rReq )
                     pBindings->Invalidate( SID_DOC_MODIFIED );
             }
             break;
+
         case SID_INSERT_FORM_RADIO:
-            GetEditor().SetMode( DlgEditor::INSERT );
-            GetEditor().SetInsertObj( OBJ_DLG_FORMRADIO );
+            nInsertObj = OBJ_DLG_FORMRADIO;
             break;
         case SID_INSERT_FORM_CHECK:
-            GetEditor().SetMode( DlgEditor::INSERT );
-            GetEditor().SetInsertObj( OBJ_DLG_FORMCHECK );
+            nInsertObj = OBJ_DLG_FORMCHECK;
             break;
         case SID_INSERT_FORM_LIST:
-            GetEditor().SetMode( DlgEditor::INSERT );
-            GetEditor().SetInsertObj( OBJ_DLG_FORMLIST );
+            nInsertObj = OBJ_DLG_FORMLIST;
             break;
         case SID_INSERT_FORM_COMBO:
-            GetEditor().SetMode( DlgEditor::INSERT );
-            GetEditor().SetInsertObj( OBJ_DLG_FORMCOMBO );
+            nInsertObj = OBJ_DLG_FORMCOMBO;
             break;
         case SID_INSERT_FORM_SPIN:
-            GetEditor().SetMode( DlgEditor::INSERT );
-            GetEditor().SetInsertObj( OBJ_DLG_FORMSPIN );
+            nInsertObj = OBJ_DLG_FORMSPIN;
             break;
         case SID_INSERT_FORM_VSCROLL:
-            GetEditor().SetMode( DlgEditor::INSERT );
-            GetEditor().SetInsertObj( OBJ_DLG_FORMVSCROLL );
+            nInsertObj = OBJ_DLG_FORMVSCROLL;
             break;
         case SID_INSERT_FORM_HSCROLL:
-            GetEditor().SetMode( DlgEditor::INSERT );
-            GetEditor().SetInsertObj( OBJ_DLG_FORMHSCROLL );
+            nInsertObj = OBJ_DLG_FORMHSCROLL;
+            break;
+        case SID_INSERT_PUSHBUTTON:
+            nInsertObj = OBJ_DLG_PUSHBUTTON;
+            break;
+        case SID_INSERT_RADIOBUTTON:
+            nInsertObj = OBJ_DLG_RADIOBUTTON;
+            break;
+        case SID_INSERT_CHECKBOX:
+            nInsertObj = OBJ_DLG_CHECKBOX;
+            break;
+        case SID_INSERT_LISTBOX:
+            nInsertObj = OBJ_DLG_LISTBOX;
+            break;
+        case SID_INSERT_COMBOBOX:
+            nInsertObj = OBJ_DLG_COMBOBOX;
+            break;
+        case SID_INSERT_GROUPBOX:
+            nInsertObj = OBJ_DLG_GROUPBOX;
+            break;
+        case SID_INSERT_EDIT:
+            nInsertObj = OBJ_DLG_EDIT;
+            break;
+        case SID_INSERT_FIXEDTEXT:
+            nInsertObj = OBJ_DLG_FIXEDTEXT;
+            break;
+        case SID_INSERT_IMAGECONTROL:
+            nInsertObj = OBJ_DLG_IMAGECONTROL;
+            break;
+        case SID_INSERT_PROGRESSBAR:
+            nInsertObj = OBJ_DLG_PROGRESSBAR;
+            break;
+        case SID_INSERT_HSCROLLBAR:
+            nInsertObj = OBJ_DLG_HSCROLLBAR;
+            break;
+        case SID_INSERT_VSCROLLBAR:
+            nInsertObj = OBJ_DLG_VSCROLLBAR;
+            break;
+        case SID_INSERT_HFIXEDLINE:
+            nInsertObj = OBJ_DLG_HFIXEDLINE;
+            break;
+        case SID_INSERT_VFIXEDLINE:
+            nInsertObj = OBJ_DLG_VFIXEDLINE;
+            break;
+        case SID_INSERT_DATEFIELD:
+            nInsertObj = OBJ_DLG_DATEFIELD;
+            break;
+        case SID_INSERT_TIMEFIELD:
+            nInsertObj = OBJ_DLG_TIMEFIELD;
+            break;
+        case SID_INSERT_NUMERICFIELD:
+            nInsertObj = OBJ_DLG_NUMERICFIELD;
+            break;
+        case SID_INSERT_CURRENCYFIELD:
+            nInsertObj = OBJ_DLG_CURRENCYFIELD;
+            break;
+        case SID_INSERT_FORMATTEDFIELD:
+            nInsertObj = OBJ_DLG_FORMATTEDFIELD;
+            break;
+        case SID_INSERT_PATTERNFIELD:
+            nInsertObj = OBJ_DLG_PATTERNFIELD;
+            break;
+        case SID_INSERT_FILECONTROL:
+            nInsertObj = OBJ_DLG_FILECONTROL;
+            break;
+        case SID_INSERT_SPINBUTTON:
+            nInsertObj = OBJ_DLG_SPINBUTTON;
+            break;
+        case SID_INSERT_TREECONTROL:
+            nInsertObj = OBJ_DLG_TREECONTROL;
+            break;
+        case SID_INSERT_SELECT:
+            m_nControlSlotId = nSlotId;
+            GetEditor().SetMode( DlgEditor::SELECT );
+            Shell::InvalidateControlSlots();
             break;
-        case SID_CHOOSE_CONTROLS:
-        {
-            const SfxItemSet* pArgs = rReq.GetArgs();
-            assert(pArgs && "Nix Args");
-
-            const SfxAllEnumItem& rItem = static_cast<const SfxAllEnumItem&>(pArgs->Get( SID_CHOOSE_CONTROLS ));
-            switch( rItem.GetValue() )
-            {
-                case SVX_SNAP_PUSHBUTTON:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_PUSHBUTTON );
-                }
-                break;
-                case SVX_SNAP_RADIOBUTTON:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_RADIOBUTTON );
-                }
-                break;
-                case SVX_SNAP_CHECKBOX:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_CHECKBOX);
-                }
-                break;
-                case SVX_SNAP_LISTBOX:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_LISTBOX );
-                }
-                break;
-                case SVX_SNAP_COMBOBOX:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_COMBOBOX );
-                }
-                break;
-                case SVX_SNAP_GROUPBOX:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_GROUPBOX );
-                }
-                break;
-                case SVX_SNAP_EDIT:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_EDIT );
-                }
-                break;
-                case SVX_SNAP_FIXEDTEXT:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_FIXEDTEXT );
-                }
-                break;
-                case SVX_SNAP_IMAGECONTROL:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_IMAGECONTROL );
-                }
-                break;
-                case SVX_SNAP_PROGRESSBAR:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_PROGRESSBAR );
-                }
-                break;
-                case SVX_SNAP_HSCROLLBAR:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_HSCROLLBAR );
-                }
-                break;
-                case SVX_SNAP_VSCROLLBAR:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_VSCROLLBAR );
-                }
-                break;
-                case SVX_SNAP_HFIXEDLINE:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_HFIXEDLINE );
-                }
-                break;
-                case SVX_SNAP_VFIXEDLINE:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_VFIXEDLINE );
-                }
-                break;
-                case SVX_SNAP_DATEFIELD:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_DATEFIELD );
-                }
-                break;
-                case SVX_SNAP_TIMEFIELD:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_TIMEFIELD );
-                }
-                break;
-                case SVX_SNAP_NUMERICFIELD:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_NUMERICFIELD );
-                }
-                break;
-                case SVX_SNAP_CURRENCYFIELD:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_CURRENCYFIELD );
-                }
-                break;
-                case SVX_SNAP_FORMATTEDFIELD:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_FORMATTEDFIELD );
-                }
-                break;
-                case SVX_SNAP_PATTERNFIELD:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_PATTERNFIELD );
-                }
-                break;
-                case SVX_SNAP_FILECONTROL:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_FILECONTROL );
-                }
-                break;
-                case SVX_SNAP_SPINBUTTON:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_SPINBUTTON );
-                }
-                break;
-                case SVX_SNAP_TREECONTROL:
-                {
-                    GetEditor().SetMode( DlgEditor::INSERT );
-                    GetEditor().SetInsertObj( OBJ_DLG_TREECONTROL );
-                }
-                break;
-
-                case SVX_SNAP_SELECT:
-                {
-                    GetEditor().SetMode( DlgEditor::SELECT );
-                }
-                break;
-            }
-
-            if ( rReq.GetModifier() & KEY_MOD1 )
-            {
-                if ( GetEditor().GetMode() == DlgEditor::INSERT )
-                    GetEditor().CreateDefaultObject();
-            }
-
-            if (SfxBindings* pBindings = GetBindingsPtr())
-                pBindings->Invalidate( SID_DOC_MODIFIED );
-        }
-        break;
 
         case SID_DIALOG_TESTMODE:
         {
@@ -646,6 +544,22 @@ void DialogWindow::ExecuteCommand( SfxRequest& rReq )
             break;
     }
 
+    if ( nInsertObj )
+    {
+        m_nControlSlotId = nSlotId;
+        GetEditor().SetMode( DlgEditor::INSERT );
+        GetEditor().SetInsertObj( nInsertObj );
+
+        if ( rReq.GetModifier() & KEY_MOD1 )
+        {
+            GetEditor().CreateDefaultObject();
+            if (SfxBindings* pBindings = GetBindingsPtr())
+                pBindings->Invalidate( SID_DOC_MODIFIED );
+        }
+
+        Shell::InvalidateControlSlots();
+    }
+
     rReq.Done();
 }
 
diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx
index 3202ce4dfe87..00962308c1d6 100644
--- a/basctl/source/basicide/basides1.cxx
+++ b/basctl/source/basicide/basides1.cxx
@@ -806,6 +806,30 @@ void Shell::GetState(SfxItemSet &rSet)
             break;
             case SID_CHOOSE_CONTROLS:
             case SID_DIALOG_TESTMODE:
+            case SID_INSERT_SELECT:
+            case SID_INSERT_PUSHBUTTON:
+            case SID_INSERT_RADIOBUTTON:
+            case SID_INSERT_CHECKBOX:
+            case SID_INSERT_LISTBOX:
+            case SID_INSERT_COMBOBOX:
+            case SID_INSERT_GROUPBOX:
+            case SID_INSERT_EDIT:
+            case SID_INSERT_FIXEDTEXT:
+            case SID_INSERT_IMAGECONTROL:
+            case SID_INSERT_PROGRESSBAR:
+            case SID_INSERT_HSCROLLBAR:
+            case SID_INSERT_VSCROLLBAR:
+            case SID_INSERT_HFIXEDLINE:
+            case SID_INSERT_VFIXEDLINE:
+            case SID_INSERT_DATEFIELD:
+            case SID_INSERT_TIMEFIELD:
+            case SID_INSERT_NUMERICFIELD:
+            case SID_INSERT_CURRENCYFIELD:
+            case SID_INSERT_FORMATTEDFIELD:
+            case SID_INSERT_PATTERNFIELD:
+            case SID_INSERT_FILECONTROL:
+            case SID_INSERT_SPINBUTTON:
+            case SID_INSERT_TREECONTROL:
             case SID_INSERT_FORM_RADIO:
             case SID_INSERT_FORM_CHECK:
             case SID_INSERT_FORM_LIST:
@@ -1064,6 +1088,7 @@ void Shell::SetCurWindow( BaseWindow* pNewWin, bool bUpdateTabBar, bool bRemembe
         aObjectCatalog->SetCurrentEntry(pCurWin);
         SetUndoManager( pCurWin ? pCurWin->GetUndoManager() : nullptr );
         InvalidateBasicIDESlots();
+        InvalidateControlSlots();
         EnableScrollbars(pCurWin != nullptr);
 
         if ( m_pCurLocalizationMgr )
diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx
index bea3e699a8d8..3ec5b45b374b 100644
--- a/basctl/source/basicide/basidesh.cxx
+++ b/basctl/source/basicide/basidesh.cxx
@@ -46,7 +46,6 @@
 
 #define basctl_Shell
 #define SFX_TYPEMAP
-#include <idetemp.hxx>
 #include <basslots.hxx>
 
 #ifdef DISABLE_DYNLOADING
@@ -840,7 +839,7 @@ void Shell::InvalidateBasicIDESlots()
             pBindings->Invalidate( SID_BASICIDE_MANAGEBRKPNTS );
             pBindings->Invalidate( SID_BASICIDE_ADDWATCH );
             pBindings->Invalidate( SID_BASICIDE_REMOVEWATCH );
-            pBindings->Invalidate( SID_CHOOSE_CONTROLS );
+
             pBindings->Invalidate( SID_PRINTDOC );
             pBindings->Invalidate( SID_PRINTDOCDIRECT );
             pBindings->Invalidate( SID_SETUPPRINTER );
@@ -855,6 +854,49 @@ void Shell::InvalidateBasicIDESlots()
     }
 }
 
+void Shell::InvalidateControlSlots()
+{
+    if (GetShell())
+    {
+        if (SfxBindings* pBindings = GetBindingsPtr())
+        {
+            pBindings->Invalidate( SID_INSERT_FORM_RADIO );
+            pBindings->Invalidate( SID_INSERT_FORM_CHECK );
+            pBindings->Invalidate( SID_INSERT_FORM_LIST );
+            pBindings->Invalidate( SID_INSERT_FORM_COMBO );
+            pBindings->Invalidate( SID_INSERT_FORM_VSCROLL );
+            pBindings->Invalidate( SID_INSERT_FORM_HSCROLL );
+            pBindings->Invalidate( SID_INSERT_FORM_SPIN );
+
+            pBindings->Invalidate( SID_INSERT_SELECT );
+            pBindings->Invalidate( SID_INSERT_PUSHBUTTON );
+            pBindings->Invalidate( SID_INSERT_RADIOBUTTON );
+            pBindings->Invalidate( SID_INSERT_CHECKBOX );
+            pBindings->Invalidate( SID_INSERT_LISTBOX );
+            pBindings->Invalidate( SID_INSERT_COMBOBOX );
+            pBindings->Invalidate( SID_INSERT_GROUPBOX );
+            pBindings->Invalidate( SID_INSERT_EDIT );
+            pBindings->Invalidate( SID_INSERT_FIXEDTEXT );
+            pBindings->Invalidate( SID_INSERT_IMAGECONTROL );
+            pBindings->Invalidate( SID_INSERT_PROGRESSBAR );
+            pBindings->Invalidate( SID_INSERT_HSCROLLBAR );
+            pBindings->Invalidate( SID_INSERT_VSCROLLBAR );
+            pBindings->Invalidate( SID_INSERT_HFIXEDLINE );
+            pBindings->Invalidate( SID_INSERT_VFIXEDLINE );
+            pBindings->Invalidate( SID_INSERT_DATEFIELD );
+            pBindings->Invalidate( SID_INSERT_TIMEFIELD );
+            pBindings->Invalidate( SID_INSERT_NUMERICFIELD );
+            pBindings->Invalidate( SID_INSERT_CURRENCYFIELD );
+            pBindings->Invalidate( SID_INSERT_FORMATTEDFIELD );
+            pBindings->Invalidate( SID_INSERT_PATTERNFIELD );
+            pBindings->Invalidate( SID_INSERT_FILECONTROL );
+            pBindings->Invalidate( SID_INSERT_SPINBUTTON );
+            pBindings->Invalidate( SID_INSERT_TREECONTROL );
+            pBindings->Invalidate( SID_CHOOSE_CONTROLS );
+        }
+    }
+}
+
 void Shell::EnableScrollbars( bool bEnable )
 {
     aHScrollBar->Enable(bEnable);
diff --git a/basctl/source/basicide/idetemp.hxx b/basctl/source/basicide/idetemp.hxx
deleted file mode 100644
index 178c1e505fa0..000000000000
--- a/basctl/source/basicide/idetemp.hxx
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-#ifndef INCLUDED_BASCTL_SOURCE_BASICIDE_IDETEMP_HXX
-#define INCLUDED_BASCTL_SOURCE_BASICIDE_IDETEMP_HXX
-
-
-enum SvxChooseControlEnum
-{
-    SVX_SNAP_PUSHBUTTON,
-    SVX_SNAP_CHECKBOX,
-    SVX_SNAP_RADIOBUTTON,
-    SVX_SNAP_SPINBUTTON,
-    SVX_SNAP_FIXEDTEXT,
-    SVX_SNAP_GROUPBOX,
-    SVX_SNAP_LISTBOX,
-    SVX_SNAP_COMBOBOX,
-    SVX_SNAP_EDIT,
-    SVX_SNAP_HSCROLLBAR,
-    SVX_SNAP_VSCROLLBAR,
-    SVX_SNAP_PREVIEW,
-    SVX_SNAP_SELECT,
-    SVX_SNAP_URLBUTTON,
-    SVX_SNAP_IMAGECONTROL,
-    SVX_SNAP_PROGRESSBAR,
-    SVX_SNAP_HFIXEDLINE,
-    SVX_SNAP_VFIXEDLINE,
-    SVX_SNAP_DATEFIELD,
-    SVX_SNAP_TIMEFIELD,
-    SVX_SNAP_NUMERICFIELD,
-    SVX_SNAP_CURRENCYFIELD,
-    SVX_SNAP_FORMATTEDFIELD,
-    SVX_SNAP_PATTERNFIELD,
-    SVX_SNAP_FILECONTROL,
-    SVX_SNAP_TREECONTROL,
-};
-
-#define SvxChooseControlItem SfxAllEnumItem
-
-#endif // INCLUDED_BASCTL_SOURCE_BASICIDE_IDETEMP_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/inc/baside3.hxx b/basctl/source/inc/baside3.hxx
index 35c4161c5a89..c6510010b555 100644
--- a/basctl/source/inc/baside3.hxx
+++ b/basctl/source/inc/baside3.hxx
@@ -60,6 +60,7 @@ private:
     std::unique_ptr<DlgEditor> m_pEditor;
     std::unique_ptr<SfxUndoManager> m_pUndoMgr; // never nullptr
     OUString            m_sCurPath;
+    sal_uInt16          m_nControlSlotId;
 
 protected:
     virtual void        Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect) override;
diff --git a/basctl/source/inc/basidesh.hxx b/basctl/source/inc/basidesh.hxx
index ceb52885ad54..63117788f8e0 100644
--- a/basctl/source/inc/basidesh.hxx
+++ b/basctl/source/inc/basidesh.hxx
@@ -195,6 +195,8 @@ public:
         const ScriptDocument& rSourceDoc, const OUString& rSourceLibName, const ScriptDocument& rDestDoc,
         const OUString& rDestLibName, const OUString& rDlgName );
 
+    static void InvalidateControlSlots();
+
     virtual css::uno::Reference< css::frame::XModel >
                         GetCurrentDocument() const override;
 
diff --git a/include/editeng/svxenum.hxx b/include/editeng/svxenum.hxx
index 5cf21d807a02..626383329990 100644
--- a/include/editeng/svxenum.hxx
+++ b/include/editeng/svxenum.hxx
@@ -129,16 +129,6 @@ enum SvxCellOrientation
     SVX_ORIENTATION_STACKED
 };
 
-enum SvxDrawAlignEnum
-{
-    SVX_OBJECT_ALIGN_LEFT,
-    SVX_OBJECT_ALIGN_CENTER,
-    SVX_OBJECT_ALIGN_RIGHT,
-    SVX_OBJECT_ALIGN_UP,
-    SVX_OBJECT_ALIGN_MIDDLE,
-    SVX_OBJECT_ALIGN_DOWN
-};
-
 enum class SvxSpellArea
 {
     Body = 0,
diff --git a/sc/sdi/drawsh.sdi b/sc/sdi/drawsh.sdi
index 91af5543da25..3282485b1b3d 100644
--- a/sc/sdi/drawsh.sdi
+++ b/sc/sdi/drawsh.sdi
@@ -116,16 +116,7 @@ interface TableDraw
     SID_ATTR_TRANSFORM_AUTOHEIGHT [ StateMethod = GetDrawAttrStateForIFBX; Export = FALSE; ]
 
      // ---- Ausrichtungs - Funktionen:
-     //!    PseudoSlots gibt Aerger mit Referenz-Dialogen ???
-    SID_OBJECT_ALIGN
-    [
-        PseudoSlots = FALSE ;
-        Export = FALSE ;
-        ExecMethod = ExecDrawFunc ;
-        StateMethod = GetDrawFuncState ;
-        GroupId = GID_FORMAT ;
-        ToolBoxConfig ;
-    ]
+    SID_OBJECT_ALIGN        [ StateMethod = GetDrawFuncState; Export = FALSE; ]
     SID_OBJECT_ALIGN_LEFT   [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
     SID_OBJECT_ALIGN_CENTER [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
     SID_OBJECT_ALIGN_RIGHT  [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
diff --git a/sc/source/ui/app/typemap.cxx b/sc/source/ui/app/typemap.cxx
index 18660b9c87f2..684f4cc622b0 100644
--- a/sc/source/ui/app/typemap.cxx
+++ b/sc/source/ui/app/typemap.cxx
@@ -100,7 +100,6 @@
 #include <svx/sdprcitm.hxx>
 #include <svx/sdmetitm.hxx>
 
-#define SvxDrawAlignItem            SfxAllEnumItem
 #define avmedia_MediaItem           ::avmedia::MediaItem
 
 #ifdef DISABLE_DYNLOADING
diff --git a/sc/source/ui/drawfunc/drawsh5.cxx b/sc/source/ui/drawfunc/drawsh5.cxx
index 062a58a075ec..f862452dcb0a 100644
--- a/sc/source/ui/drawfunc/drawsh5.cxx
+++ b/sc/source/ui/drawfunc/drawsh5.cxx
@@ -241,15 +241,8 @@ void ScDrawShell::ExecDrawFunc( SfxRequest& rReq )
     SfxBindings& rBindings = pViewData->GetBindings();
     ScTabView*   pTabView  = pViewData->GetView();
     ScDrawView*  pView     = pTabView->GetScDrawView();
-    const SfxItemSet *pArgs = rReq.GetArgs();
     sal_uInt16 nSlotId = rReq.GetSlot();
 
-    //!!!
-    // wer weiss, wie lange das funktioniert? (->vom Abreisscontrol funktioniert es)
-
-    if (nSlotId == SID_OBJECT_ALIGN && pArgs)
-        nSlotId = SID_OBJECT_ALIGN + static_cast<const SfxEnumItemInterface&>(pArgs->Get(SID_OBJECT_ALIGN)).GetEnumValue() + 1;
-
     switch (nSlotId)
     {
         case SID_OBJECT_HEAVEN:
diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi
index a0e19e827029..b5f40fff9084 100644
--- a/sd/sdi/_drvwsh.sdi
+++ b/sd/sdi/_drvwsh.sdi
@@ -1238,14 +1238,11 @@ interface DrawView
         StateMethod = GetMenuState ;
     ]
 
-    SfxVoidItem ObjectAlign SID_OBJECT_ALIGN // ole : no, status : ?
+    SID_OBJECT_ALIGN // ole : no, status : ?
     [
         StateMethod = GetMenuState ;
         GroupId = GID_DOCUMENT ;
         Export ;
-        PseudoSlots = FALSE ;
-        ToolBoxConfig ;
-        MenuConfig = TRUE;
     ]
 
     SID_ZOOM_TOOLBOX // ole : no, status : ?
diff --git a/svx/sdi/fmslots.sdi b/svx/sdi/fmslots.sdi
index beb700e54b4a..8eda2c5d981d 100644
--- a/svx/sdi/fmslots.sdi
+++ b/svx/sdi/fmslots.sdi
@@ -19,10 +19,7 @@
 interface Form
 {
     SID_FM_CONFIG // ole : no, status : ?
-    [
-        ExecMethod = Execute ;
-        StateMethod = GetState ;
-    ]
+    []
     SID_FM_PUSHBUTTON
     [
         ExecMethod = Execute ;
@@ -627,10 +624,7 @@ shell FmFormShell
     import Form;
 
     SID_FM_CONFIG // ole : no, status : ?
-    [
-        ExecMethod = Execute ;
-        StateMethod = GetState ;
-    ]
+    []
     SID_FM_MORE_CONTROLS
     [
         ExecMethod = Execute ;
diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi
index 33daa10e87d8..bc6d05596acd 100644
--- a/svx/sdi/svx.sdi
+++ b/svx/sdi/svx.sdi
@@ -1376,7 +1376,7 @@ SfxBoolItem CheckBox SID_FM_CHECKBOX
 ]
 
 
-SvxChooseControlItem ChooseControls SID_CHOOSE_CONTROLS
+SfxVoidItem ChooseControls SID_CHOOSE_CONTROLS
 
 [
     AutoUpdate = TRUE,
@@ -1392,8 +1392,6 @@ SvxChooseControlItem ChooseControls SID_CHOOSE_CONTROLS
     MenuConfig = FALSE,
     ToolBoxConfig = TRUE,
     GroupId = GID_CONTROLS;
-    PseudoSlots = TRUE;
-    PseudoPrefix = SID_INSERT;
 ]
 
 
@@ -1679,7 +1677,7 @@ SfxBoolItem Combobox SID_INSERT_COMBOBOX
 ]
 
 
-SfxUInt16Item Config SID_FM_CONFIG
+SfxVoidItem Config SID_FM_CONFIG
 
 [
     AutoUpdate = TRUE,
@@ -1695,8 +1693,6 @@ SfxUInt16Item Config SID_FM_CONFIG
     MenuConfig = FALSE,
     ToolBoxConfig = TRUE,
     GroupId = GID_CONTROLS;
-    PseudoSlots = TRUE;
-    PseudoPrefix = SID_INSERT;
 ]
 
 
@@ -1716,8 +1712,6 @@ SfxBoolItem MoreControls SID_FM_MORE_CONTROLS
     MenuConfig = FALSE,
     ToolBoxConfig = TRUE,
     GroupId = GID_CONTROLS;
-    PseudoSlots = TRUE;
-    PseudoPrefix = SID_INSERT;
 ]
 
 
@@ -1737,8 +1731,6 @@ SfxBoolItem FormDesignTools SID_FM_FORM_DESIGN_TOOLS
     MenuConfig = FALSE,
     ToolBoxConfig = TRUE,
     GroupId = GID_CONTROLS;
-    PseudoSlots = TRUE;
-    PseudoPrefix = SID_INSERT;
 ]
 
 
@@ -5799,7 +5791,7 @@ SfxBoolItem InsertNumericField SID_INSERT_NUMERICFIELD
 ]
 
 
-SvxDrawAlignItem ObjectAlign SID_OBJECT_ALIGN
+SfxVoidItem ObjectAlign SID_OBJECT_ALIGN
 
 [
     AutoUpdate = FALSE,
@@ -5815,8 +5807,6 @@ SvxDrawAlignItem ObjectAlign SID_OBJECT_ALIGN
     MenuConfig = FALSE,
     ToolBoxConfig = TRUE,
     GroupId = GID_FORMAT;
-    PseudoSlots = TRUE;
-    PseudoPrefix = SID_OBJECT_ALIGN;
 ]
 
 
@@ -10838,8 +10828,6 @@ SfxBoolItem ColorSettings SID_COLOR_SETTINGS
         MenuConfig = FALSE,
         ToolBoxConfig = TRUE,
         GroupId = GID_MODIFY;
-        PseudoSlots = TRUE;
-        PseudoPrefix = SID_INSERT;
 ]
 
 
diff --git a/svx/sdi/svxitems.sdi b/svx/sdi/svxitems.sdi
index 5a047e703b84..3d264f483dc2 100644
--- a/svx/sdi/svxitems.sdi
+++ b/svx/sdi/svxitems.sdi
@@ -42,47 +42,6 @@ enum SvxCellOrientationEnum
     SVX_ORIENTATION_STACKED
 };
 
-enum SvxChooseControlEnum
-{
-    SVX_SNAP_PUSHBUTTON,
-    SVX_SNAP_CHECKBOX,
-    SVX_SNAP_RADIOBUTTON,
-    SVX_SNAP_SPINBUTTON,
-    SVX_SNAP_FIXEDTEXT,
-    SVX_SNAP_GROUPBOX,
-    SVX_SNAP_LISTBOX,
-    SVX_SNAP_COMBOBOX,
-    SVX_SNAP_EDIT,
-    SVX_SNAP_HSCROLLBAR,
-    SVX_SNAP_VSCROLLBAR,
-    SVX_SNAP_PREVIEW,
-    SVX_SNAP_SELECT,
-    SVX_SNAP_URLBUTTON,
-    SVX_SNAP_IMAGECONTROL,
-    SVX_SNAP_PROGRESSBAR,
-    SVX_SNAP_HFIXEDLINE,
-    SVX_SNAP_VFIXEDLINE,
-    SVX_SNAP_DATEFIELD,
-    SVX_SNAP_TIMEFIELD,
-    SVX_SNAP_NUMERICFIELD,
-    SVX_SNAP_CURRENCYFIELD,
-    SVX_SNAP_FORMATTEDFIELD,
-    SVX_SNAP_PATTERNFIELD,
-    SVX_SNAP_FILECONTROL,
-    SVX_SNAP_TREECONTROL
-};
-item SvxChooseControlEnum SvxChooseControlItem;
-
-enum SvxDrawAlignEnum
-{
-    SVX_OBJECT_ALIGN_LEFT,
-    SVX_OBJECT_ALIGN_CENTER,
-    SVX_OBJECT_ALIGN_RIGHT,
-    SVX_OBJECT_ALIGN_UP,
-    SVX_OBJECT_ALIGN_MIDDLE,
-    SVX_OBJECT_ALIGN_DOWN
-};
-
 enum SvxAdjust
 {
     SVX_ADJUST_LEFT,
@@ -228,7 +187,6 @@ item FontItalic             SvxPostureItem;  // enum
 item BOOL                   SvxPrintItem;
 item UINT16                 SvxPropSizeItem;        // derived from UInt16Item
 item BOOL                   SvxShadowedItem;
-item SvxDrawAlignEnum       SvxDrawAlignItem;
 item BYTE                   SvxWidowsItem;
 item BOOL                   SvxWordLineModeItem;
 item SvxCellHorJustifyEnum  SvxHorJustifyItem;
diff --git a/svx/source/form/fmshell.cxx b/svx/source/form/fmshell.cxx
index 6f75d247510b..31306a94dd73 100644
--- a/svx/source/form/fmshell.cxx
+++ b/svx/source/form/fmshell.cxx
@@ -377,7 +377,6 @@ void FmFormShell::Execute(SfxRequest &rReq)
         case SID_FM_SCROLLBAR:
         case SID_FM_SPINBUTTON:
             m_nLastSlot = nSlot;
-            GetViewShell()->GetViewFrame()->GetBindings().Invalidate( SID_FM_CONFIG );
             break;
     }
 
@@ -584,7 +583,6 @@ void FmFormShell::Execute(SfxRequest &rReq)
             break;
         case SID_FM_LEAVE_CREATE:
             m_nLastSlot = 0;
-            GetViewShell()->GetViewFrame()->GetBindings().Invalidate( SID_FM_CONFIG );
             rReq.Done();
             break;
         case SID_FM_SHOW_PROPERTY_BROWSER:
@@ -659,7 +657,6 @@ void FmFormShell::Execute(SfxRequest &rReq)
                 rReq.Done();
 
             m_nLastSlot = SID_FM_DESIGN_MODE;
-            GetViewShell()->GetViewFrame()->GetBindings().Invalidate( SID_FM_CONFIG );
         }
         break;
 
@@ -988,9 +985,6 @@ void FmFormShell::GetState(SfxItemSet &rSet)
                 if (!m_pFormView || !m_bDesignMode || !GetImpl()->getCurrentForm().is() )
                     rSet.DisableItem( nWhich );
                 break;
-            case SID_FM_CONFIG:
-                rSet.Put(SfxUInt16Item(nWhich, m_nLastSlot));
-                break;
             case SID_FM_DESIGN_MODE:
                 if (!m_pFormView || GetImpl()->IsReadonlyDoc() )
                     rSet.DisableItem( nWhich );
diff --git a/sw/sdi/drwbassh.sdi b/sw/sdi/drwbassh.sdi
index 4dd539504f8c..3653e0408856 100644
--- a/sw/sdi/drwbassh.sdi
+++ b/sw/sdi/drwbassh.sdi
@@ -28,9 +28,44 @@ shell SwDrawBaseShell: SwBaseShell
 
     SID_OBJECT_ALIGN
     [
-        ExecMethod = Execute ;
         StateMethod = GetState ;
         DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
     ]
+    SID_OBJECT_ALIGN_LEFT
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
+    SID_OBJECT_ALIGN_CENTER
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
+    SID_OBJECT_ALIGN_RIGHT
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
+    SID_OBJECT_ALIGN_UP
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
+    SID_OBJECT_ALIGN_MIDDLE
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
+    SID_OBJECT_ALIGN_DOWN
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
 }
 
diff --git a/sw/sdi/wdrwbase.sdi b/sw/sdi/wdrwbase.sdi
index 60bb334ce5f8..afa74203db79 100644
--- a/sw/sdi/wdrwbase.sdi
+++ b/sw/sdi/wdrwbase.sdi
@@ -28,9 +28,44 @@ shell SwWebDrawBaseShell: SwBaseShell
 
     SID_OBJECT_ALIGN
     [
-        ExecMethod = Execute ;
         StateMethod = GetState ;
         DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
     ]
+    SID_OBJECT_ALIGN_LEFT
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
+    SID_OBJECT_ALIGN_CENTER
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
+    SID_OBJECT_ALIGN_RIGHT
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
+    SID_OBJECT_ALIGN_UP
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
+    SID_OBJECT_ALIGN_MIDDLE
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
+    SID_OBJECT_ALIGN_DOWN
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
 }
 
diff --git a/sw/source/uibase/shells/drwbassh.cxx b/sw/source/uibase/shells/drwbassh.cxx
index fa8f4c5383c3..361d69bf81fa 100644
--- a/sw/source/uibase/shells/drwbassh.cxx
+++ b/sw/source/uibase/shells/drwbassh.cxx
@@ -107,14 +107,6 @@ void SwDrawBaseShell::Execute(SfxRequest &rReq)
     if(pArgs)
         pArgs->GetItemState(nSlotId, false, &pItem);
 
-    //Special case align by menu
-    if(pItem && nSlotId == SID_OBJECT_ALIGN)
-    {
-        OSL_ENSURE(dynamic_cast<const SfxEnumItemInterface*>( pItem),"SfxEnumItem expected" );
-        nSlotId = nSlotId + static_cast<const SfxEnumItemInterface*>(pItem)->GetEnumValue();
-        nSlotId++;
-    }
-
     bool bAlignPossible = pSh->IsAlignPossible();
 
     bool bTopParam = true, bBottomParam = true;
@@ -671,17 +663,15 @@ void SwDrawBaseShell::GetState(SfxItemSet& rSet)
                     rSet.DisableItem( nWhich );
                 else
                 {
-                    SfxAllEnumItem aEnumItem(nWhich, USHRT_MAX);
                     const SdrMarkList& rMarkList = pSdrView->GetMarkedObjectList();
                     //if only one object is selected it can only be vertically
                     // aligned because it is character bound
                     if( rMarkList.GetMarkCount() == 1 )
                     {
-                        aEnumItem.DisableValue(SID_OBJECT_ALIGN_LEFT);
-                        aEnumItem.DisableValue(SID_OBJECT_ALIGN_CENTER);
-                        aEnumItem.DisableValue(SID_OBJECT_ALIGN_RIGHT);
+                        rSet.DisableItem(SID_OBJECT_ALIGN_LEFT);
+                        rSet.DisableItem(SID_OBJECT_ALIGN_CENTER);
+                        rSet.DisableItem(SID_OBJECT_ALIGN_RIGHT);
                     }
-                    rSet.Put(aEnumItem);
                 }
                 break;
 
diff --git a/sw/source/uibase/shells/slotadd.cxx b/sw/source/uibase/shells/slotadd.cxx
index c0658a329e51..4ea84aa6969e 100644
--- a/sw/source/uibase/shells/slotadd.cxx
+++ b/sw/source/uibase/shells/slotadd.cxx
@@ -122,7 +122,6 @@
 #include <svx/drawitem.hxx>
 #include <avmedia/mediaitem.hxx>
 
-#define SvxDrawAlignItem SfxAllEnumItem
 #define avmedia_MediaItem ::avmedia::MediaItem
 
 #include <svx/xflftrit.hxx>
diff --git a/sw/source/uibase/uiview/view2.cxx b/sw/source/uibase/uiview/view2.cxx
index 558350d63e10..1e885c75eb74 100644
--- a/sw/source/uibase/uiview/view2.cxx
+++ b/sw/source/uibase/uiview/view2.cxx
@@ -1230,15 +1230,8 @@ void SwView::Execute(SfxRequest &rReq)
                     case SID_ALIGN_ANY_BOTTOM   :   nAlias = SID_OBJECT_ALIGN_DOWN    ; break;
                 }
             }
-            //special handling for the draw shell
-            if(nAlias && (m_nSelectionType & (nsSelectionType::SEL_DRW)))
-            {
-                SfxAllEnumItem aEnumItem(SID_OBJECT_ALIGN, nAlias - SID_OBJECT_ALIGN_LEFT);
-                GetViewFrame()->GetDispatcher()->ExecuteList(SID_OBJECT_ALIGN,
-                        SfxCallMode::ASYNCHRON, { &aEnumItem });
-            }
-            else if(nAlias)
             //these slots are either re-mapped to text or object alignment
+            if (nAlias)
                 GetViewFrame()->GetDispatcher()->Execute(
                                 nAlias, SfxCallMode::ASYNCHRON);
         }
diff --git a/sw/source/uibase/uiview/viewstat.cxx b/sw/source/uibase/uiview/viewstat.cxx
index 519e6c396e76..70468382d387 100644
--- a/sw/source/uibase/uiview/viewstat.cxx
+++ b/sw/source/uibase/uiview/viewstat.cxx
@@ -428,7 +428,6 @@ void SwView::GetState(SfxItemSet &rSet)
                 if( !m_pShell )
                     SelectShell();
                 sal_uInt16 nAlias = 0;
-                bool bDraw = false;
                 if( m_nSelectionType & (nsSelectionType::SEL_DRW_TXT|nsSelectionType::SEL_TXT) )
                 {
                     switch( nWhich )
@@ -442,17 +441,6 @@ void SwView::GetState(SfxItemSet &rSet)
                         case SID_ALIGN_ANY_BOTTOM   :   nAlias = SID_TABLE_VERT_BOTTOM; break;
                     }
                 }
-                else if(m_nSelectionType & (nsSelectionType::SEL_DRW))
-                {
-                    //the draw shell cannot provide a status per item - only one for SID_OBJECT_ALIGN
-                    if(nWhich != SID_ALIGN_ANY_JUSTIFIED)
-                    {
-                        const SfxPoolItem* pItem = nullptr;
-                        GetViewFrame()->GetDispatcher()->QueryState( SID_OBJECT_ALIGN, pItem );
-                        if(pItem)
-                            bDraw = true;
-                    }
-                }
                 else
                 {
                     switch( nWhich )
@@ -471,10 +459,13 @@ void SwView::GetState(SfxItemSet &rSet)
                     GetViewFrame()->GetDispatcher()->QueryState( nAlias, pState );
                 if(pState)
                 {
-                    std::unique_ptr<SfxPoolItem> pNewItem(pState->CloneSetWhich(nWhich));
-                    rSet.Put(*pNewItem);
+                    if (!(m_nSelectionType & nsSelectionType::SEL_DRW))
+                    {
+                        std::unique_ptr<SfxPoolItem> pNewItem(pState->CloneSetWhich(nWhich));
+                        rSet.Put(*pNewItem);
+                    }
                 }
-                else if(!bDraw)
+                else
                     rSet.DisableItem(nWhich);
             }
             break;


More information about the Libreoffice-commits mailing list