[Libreoffice-commits] core.git: cui/Library_cui.mk cui/qa cui/source cui/uiconfig cui/UIConfig_cui.mk include/svx officecfg/registry reportdesign/inc reportdesign/source reportdesign/uiconfig reportdesign/UIConfig_dbreport.mk sd/sdi sd/source sd/uiconfig sd/UIConfig_sdraw.mk sd/UIConfig_simpress.mk solenv/clang-format svx/sdi svx/source

Heiko Tietze (via logerrit) logerrit at kemper.freedesktop.org
Thu Sep 17 23:11:58 UTC 2020


 cui/Library_cui.mk                                                      |    1 
 cui/UIConfig_cui.mk                                                     |    2 
 cui/qa/unit/data/cui-dialogs-test.txt                                   |    2 
 cui/source/factory/dlgfact.cxx                                          |   21 
 cui/source/factory/dlgfact.hxx                                          |   18 
 cui/source/inc/dstribut.hxx                                             |   69 -
 cui/source/tabpages/dstribut.cxx                                        |  152 ---
 cui/uiconfig/ui/distributiondialog.ui                                   |   90 --
 cui/uiconfig/ui/distributionpage.ui                                     |  439 ----------
 include/svx/svdedtv.hxx                                                 |    2 
 include/svx/svxdlg.hxx                                                  |   12 
 include/svx/svxids.hrc                                                  |   10 
 officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu         |   28 
 officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu    |   11 
 officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu    |  110 ++
 officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu |   11 
 officecfg/registry/data/org/openoffice/Office/UI/ReportCommands.xcu     |    5 
 reportdesign/UIConfig_dbreport.mk                                       |    1 
 reportdesign/inc/rptui_slotid.hrc                                       |    2 
 reportdesign/source/ui/report/ReportController.cxx                      |   31 
 reportdesign/uiconfig/dbreport/menubar/menubar.xml                      |    2 
 reportdesign/uiconfig/dbreport/popupmenu/report.xml                     |    2 
 reportdesign/uiconfig/dbreport/toolbar/distributebar.xml                |   21 
 sd/UIConfig_sdraw.mk                                                    |    1 
 sd/UIConfig_simpress.mk                                                 |    1 
 sd/sdi/_drvwsh.sdi                                                      |   40 
 sd/source/ui/view/drviews2.cxx                                          |   12 
 sd/source/ui/view/drviewsj.cxx                                          |   28 
 sd/uiconfig/sdraw/toolbar/distributebar.xml                             |   21 
 sd/uiconfig/sdraw/toolbar/drawingobjectbar.xml                          |    2 
 sd/uiconfig/simpress/toolbar/distributebar.xml                          |   21 
 sd/uiconfig/simpress/toolbar/drawingobjectbar.xml                       |    2 
 solenv/clang-format/excludelist                                         |    2 
 svx/sdi/svx.sdi                                                         |  137 +++
 svx/source/svdraw/svdedtv2.cxx                                          |   26 
 35 files changed, 484 insertions(+), 851 deletions(-)

New commits:
commit 705226338beeabd214f260c00f1a6db2cfb52475
Author:     Heiko Tietze <tietze.heiko at gmail.com>
AuthorDate: Tue Sep 1 10:45:05 2020 +0200
Commit:     Maxim Monastirsky <momonasmon at gmail.com>
CommitDate: Fri Sep 18 01:11:18 2020 +0200

    Resolves tdf#97918 - Individual UNO commands for distribution options
    
    New UNO commands added, SID_DISTRIBUTE_DLG bend to dropdown, ui removed
    Menus and toolbars adjusted
    
    Change-Id: Ic0a3cc299f745a1a0cd18edead1f410ff57a1f1f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102272
    Tested-by: Jenkins
    Reviewed-by: Maxim Monastirsky <momonasmon at gmail.com>

diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk
index 583cc5c74346..ec2d222a34d9 100644
--- a/cui/Library_cui.mk
+++ b/cui/Library_cui.mk
@@ -199,7 +199,6 @@ $(eval $(call gb_Library_add_exception_objects,cui,\
     cui/source/tabpages/border \
     cui/source/tabpages/chardlg \
     cui/source/tabpages/connect \
-    cui/source/tabpages/dstribut \
     cui/source/tabpages/grfpage \
     cui/source/tabpages/labdlg \
     cui/source/tabpages/macroass \
diff --git a/cui/UIConfig_cui.mk b/cui/UIConfig_cui.mk
index 62291eff5acf..a6dcd3bfb88f 100644
--- a/cui/UIConfig_cui.mk
+++ b/cui/UIConfig_cui.mk
@@ -64,8 +64,6 @@ $(eval $(call gb_UIConfig_add_uifiles,cui,\
 	cui/uiconfig/ui/gradientpage \
 	cui/uiconfig/ui/customizedialog \
 	cui/uiconfig/ui/dbregisterpage \
-	cui/uiconfig/ui/distributiondialog \
-	cui/uiconfig/ui/distributionpage \
 	cui/uiconfig/ui/effectspage \
 	cui/uiconfig/ui/eventsconfigpage \
 	cui/uiconfig/ui/formatcellsdialog \
diff --git a/cui/qa/unit/data/cui-dialogs-test.txt b/cui/qa/unit/data/cui-dialogs-test.txt
index f85ce1d12514..ee0413efcc37 100644
--- a/cui/qa/unit/data/cui-dialogs-test.txt
+++ b/cui/qa/unit/data/cui-dialogs-test.txt
@@ -88,8 +88,6 @@ cui/ui/customizedialog.ui
 cui/ui/databaselinkdialog.ui
 cui/ui/dbregisterpage.ui
 cui/ui/dimensionlinestabpage.ui
-cui/ui/distributiondialog.ui
-cui/ui/distributionpage.ui
 cui/ui/editdictionarydialog.ui
 cui/ui/editmodulesdialog.ui
 cui/ui/effectspage.ui
diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx
index 01925f1fdb0a..731303dc50a3 100644
--- a/cui/source/factory/dlgfact.cxx
+++ b/cui/source/factory/dlgfact.cxx
@@ -30,7 +30,6 @@
 #include <svx/svxids.hrc>
 #include <numfmt.hxx>
 #include <splitcelldlg.hxx>
-#include <dstribut.hxx>
 #include <cuiimapwnd.hxx>
 #include <cui/cuicharmap.hxx>
 #include <srchxtra.hxx>
@@ -110,11 +109,6 @@ short CuiAbstractSingleTabController_Impl::Execute()
     return m_xDlg->run();
 }
 
-short AbstractSvxDistributeDialog_Impl::Execute()
-{
-    return m_xDlg->run();
-}
-
 short AbstractHangulHanjaConversionDialog_Impl::Execute()
 {
     return m_xDlg->run();
@@ -397,15 +391,6 @@ void CuiAbstractSingleTabController_Impl::SetText(const OUString& rStr)
     m_xDlg->set_title(rStr);
 }
 
-SvxDistributeHorizontal AbstractSvxDistributeDialog_Impl::GetDistributeHor()const
-{
-    return m_xDlg->GetDistributeHor();
-}
-SvxDistributeVertical AbstractSvxDistributeDialog_Impl::GetDistributeVer()const
-{
-    return m_xDlg->GetDistributeVer();
-}
-
 void AbstractHangulHanjaConversionDialog_Impl::EndDialog(sal_Int32 nResult)
 {
     m_xDlg->response(nResult);
@@ -1075,12 +1060,6 @@ VclPtr<AbstractSvxCaptionDialog> AbstractDialogFactory_Impl::CreateCaptionDialog
     return VclPtr<AbstractSvxCaptionDialog_Impl>::Create(std::make_shared<SvxCaptionTabDialog>(pParent, pView, nAnchorTypes));
 }
 
-VclPtr<AbstractSvxDistributeDialog> AbstractDialogFactory_Impl::CreateSvxDistributeDialog(weld::Window* pParent,
-                                                                                          const SfxItemSet& rAttr)
-{
-    return VclPtr<AbstractSvxDistributeDialog_Impl>::Create(std::make_unique<SvxDistributeDialog>(pParent, rAttr, SvxDistributeHorizontal::NONE, SvxDistributeVertical::NONE));
-}
-
 VclPtr<AbstractHangulHanjaConversionDialog> AbstractDialogFactory_Impl::CreateHangulHanjaConversionDialog(weld::Window* pParent)
 {
     return VclPtr<AbstractHangulHanjaConversionDialog_Impl>::Create(std::make_unique<HangulHanjaConversionDialog>(pParent));
diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx
index d0072f6349c9..fd11ee459d73 100644
--- a/cui/source/factory/dlgfact.hxx
+++ b/cui/source/factory/dlgfact.hxx
@@ -38,7 +38,6 @@
 #include <cuitbxform.hxx>
 #include <dlgname.hxx>
 #include <DiagramDialog.hxx>
-#include <dstribut.hxx>
 #include <hangulhanjadlg.hxx>
 #include <hyphen.hxx>
 #include <insdlg.hxx>
@@ -162,21 +161,6 @@ public:
     virtual OString GetScreenshotId() const override;
 };
 
-class SvxDistributeDialog;
-class AbstractSvxDistributeDialog_Impl: public AbstractSvxDistributeDialog
-{
-    std::unique_ptr<SvxDistributeDialog> m_xDlg;
-public:
-    explicit AbstractSvxDistributeDialog_Impl(std::unique_ptr<SvxDistributeDialog> p)
-        : m_xDlg(std::move(p))
-    {
-    }
-    virtual short Execute() override;
-public:
-    virtual SvxDistributeHorizontal GetDistributeHor() const override;
-    virtual SvxDistributeVertical GetDistributeVer() const override;
-};
-
 class AbstractHangulHanjaConversionDialog_Impl: public AbstractHangulHanjaConversionDialog
 {
 private:
@@ -799,8 +783,6 @@ public:
                                           CreateCaptionDialog(weld::Window* pParent,
                                             const SdrView* pView,
                                             SvxAnchorIds nAnchorTypes = SvxAnchorIds::NONE) override;
-    virtual VclPtr<AbstractSvxDistributeDialog>
-                                          CreateSvxDistributeDialog(weld::Window* pParent, const SfxItemSet& rAttr) override;
     virtual VclPtr<SfxAbstractInsertObjectDialog>
                                            CreateInsertObjectDialog(weld::Window* pParent, const OUString& rCommand,
                                             const css::uno::Reference < css::embed::XStorage >& xStor,
diff --git a/cui/source/inc/dstribut.hxx b/cui/source/inc/dstribut.hxx
deleted file mode 100644
index 847f36ba74a2..000000000000
--- a/cui/source/inc/dstribut.hxx
+++ /dev/null
@@ -1,69 +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 .
- */
-#pragma once
-
-#include <sfx2/tabdlg.hxx>
-#include <svx/dstribut_enum.hxx>
-#include <vcl/weld.hxx>
-
-class SvxDistributePage : public SfxTabPage
-{
-    SvxDistributeHorizontal     m_eDistributeHor;
-    SvxDistributeVertical       m_eDistributeVer;
-
-    std::unique_ptr<weld::RadioButton> m_xBtnHorNone;
-    std::unique_ptr<weld::RadioButton> m_xBtnHorLeft;
-    std::unique_ptr<weld::RadioButton> m_xBtnHorCenter;
-    std::unique_ptr<weld::RadioButton> m_xBtnHorDistance;
-    std::unique_ptr<weld::RadioButton> m_xBtnHorRight;
-    std::unique_ptr<weld::RadioButton> m_xBtnVerNone;
-    std::unique_ptr<weld::RadioButton> m_xBtnVerTop;
-    std::unique_ptr<weld::RadioButton> m_xBtnVerCenter;
-    std::unique_ptr<weld::RadioButton> m_xBtnVerDistance;
-    std::unique_ptr<weld::RadioButton> m_xBtnVerBottom;
-
-public:
-    SvxDistributePage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs,
-        SvxDistributeHorizontal eHor,
-        SvxDistributeVertical eVer);
-    virtual ~SvxDistributePage() override;
-
-    virtual bool FillItemSet(SfxItemSet*) override;
-    virtual void Reset(const SfxItemSet*) override;
-
-    SvxDistributeHorizontal GetDistributeHor() const { return m_eDistributeHor; }
-    SvxDistributeVertical GetDistributeVer() const { return m_eDistributeVer; }
-};
-
-class SvxDistributeDialog : public SfxSingleTabDialogController
-{
-    SvxDistributePage* mpPage;
-
-public:
-    SvxDistributeDialog(weld::Window* pParent, const SfxItemSet& rAttr,
-        SvxDistributeHorizontal eHor,
-        SvxDistributeVertical eVer);
-    virtual ~SvxDistributeDialog() override;
-
-    SvxDistributeHorizontal GetDistributeHor() const { return mpPage->GetDistributeHor(); }
-    SvxDistributeVertical GetDistributeVer() const { return mpPage->GetDistributeVer(); }
-};
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/source/tabpages/dstribut.cxx b/cui/source/tabpages/dstribut.cxx
deleted file mode 100644
index e1653ca4d65e..000000000000
--- a/cui/source/tabpages/dstribut.cxx
+++ /dev/null
@@ -1,152 +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 .
- */
-
-#include <sfx2/basedlgs.hxx>
-#include <dstribut.hxx>
-
-/*************************************************************************
-|*
-|* Dialog
-|*
-\************************************************************************/
-
-SvxDistributeDialog::SvxDistributeDialog(weld::Window* pParent,
-    const SfxItemSet& rInAttrs, SvxDistributeHorizontal eHor,
-    SvxDistributeVertical eVer)
-    : SfxSingleTabDialogController(pParent, &rInAttrs, "cui/ui/distributiondialog.ui",
-                                   "DistributionDialog")
-{
-    SetTabPage(std::make_unique<SvxDistributePage>(get_content_area(), this, rInAttrs, eHor, eVer));
-    mpPage = static_cast<SvxDistributePage*>(GetTabPage());
-}
-
-SvxDistributeDialog::~SvxDistributeDialog()
-{
-}
-
-/*************************************************************************
-|*
-|* Tabpage
-|*
-\************************************************************************/
-
-SvxDistributePage::SvxDistributePage(weld::Container* pPage, weld::DialogController* pController,
-    const SfxItemSet& rInAttrs, SvxDistributeHorizontal eHor,
-    SvxDistributeVertical eVer)
-    : SfxTabPage(pPage, pController, "cui/ui/distributionpage.ui", "DistributionPage",
-        &rInAttrs)
-    , m_eDistributeHor(eHor)
-    , m_eDistributeVer(eVer)
-    , m_xBtnHorNone(m_xBuilder->weld_radio_button("hornone"))
-    , m_xBtnHorLeft(m_xBuilder->weld_radio_button("horleft"))
-    , m_xBtnHorCenter(m_xBuilder->weld_radio_button("horcenter"))
-    , m_xBtnHorDistance(m_xBuilder->weld_radio_button("hordistance"))
-    , m_xBtnHorRight(m_xBuilder->weld_radio_button("horright"))
-    , m_xBtnVerNone(m_xBuilder->weld_radio_button("vernone"))
-    , m_xBtnVerTop(m_xBuilder->weld_radio_button("vertop"))
-    , m_xBtnVerCenter(m_xBuilder->weld_radio_button("vercenter"))
-    , m_xBtnVerDistance(m_xBuilder->weld_radio_button("verdistance"))
-    , m_xBtnVerBottom(m_xBuilder->weld_radio_button("verbottom"))
-{
-}
-
-SvxDistributePage::~SvxDistributePage()
-{
-}
-
-/*************************************************************************
-|*
-|* read the delivered Item-Set
-|*
-\************************************************************************/
-
-void SvxDistributePage::Reset(const SfxItemSet* )
-{
-    m_xBtnHorNone->set_active(false);
-    m_xBtnHorLeft->set_active(false);
-    m_xBtnHorCenter->set_active(false);
-    m_xBtnHorDistance->set_active(false);
-    m_xBtnHorRight->set_active(false);
-
-    switch(m_eDistributeHor)
-    {
-        case SvxDistributeHorizontal::NONE : m_xBtnHorNone->set_active(true); break;
-        case SvxDistributeHorizontal::Left : m_xBtnHorLeft->set_active(true); break;
-        case SvxDistributeHorizontal::Center : m_xBtnHorCenter->set_active(true); break;
-        case SvxDistributeHorizontal::Distance : m_xBtnHorDistance->set_active(true); break;
-        case SvxDistributeHorizontal::Right    : m_xBtnHorRight->set_active(true);    break;
-    }
-
-    m_xBtnVerNone->set_active(false);
-    m_xBtnVerTop->set_active(false);
-    m_xBtnVerCenter->set_active(false);
-    m_xBtnVerDistance->set_active(false);
-    m_xBtnVerBottom->set_active(false);
-
-    switch(m_eDistributeVer)
-    {
-        case SvxDistributeVertical::NONE : m_xBtnVerNone->set_active(true); break;
-        case SvxDistributeVertical::Top : m_xBtnVerTop->set_active(true); break;
-        case SvxDistributeVertical::Center : m_xBtnVerCenter->set_active(true); break;
-        case SvxDistributeVertical::Distance : m_xBtnVerDistance->set_active(true); break;
-        case SvxDistributeVertical::Bottom : m_xBtnVerBottom->set_active(true); break;
-    }
-}
-
-/*************************************************************************
-|*
-|* Fill the delivered Item-Set with dialogbox-attributes
-|*
-\************************************************************************/
-
-bool SvxDistributePage::FillItemSet( SfxItemSet* )
-{
-    SvxDistributeHorizontal eDistributeHor(SvxDistributeHorizontal::NONE);
-    SvxDistributeVertical eDistributeVer(SvxDistributeVertical::NONE);
-
-    if(m_xBtnHorLeft->get_active())
-        eDistributeHor = SvxDistributeHorizontal::Left;
-    else if(m_xBtnHorCenter->get_active())
-        eDistributeHor = SvxDistributeHorizontal::Center;
-    else if(m_xBtnHorDistance->get_active())
-        eDistributeHor = SvxDistributeHorizontal::Distance;
-    else if(m_xBtnHorRight->get_active())
-        eDistributeHor = SvxDistributeHorizontal::Right;
-
-    if(m_xBtnVerTop->get_active())
-        eDistributeVer = SvxDistributeVertical::Top;
-    else if(m_xBtnVerCenter->get_active())
-        eDistributeVer = SvxDistributeVertical::Center;
-    else if(m_xBtnVerDistance->get_active())
-        eDistributeVer = SvxDistributeVertical::Distance;
-    else if(m_xBtnVerBottom->get_active())
-        eDistributeVer = SvxDistributeVertical::Bottom;
-
-    if(eDistributeHor != m_eDistributeHor || eDistributeVer != m_eDistributeVer)
-    {
-        m_eDistributeHor = eDistributeHor;
-        m_eDistributeVer = eDistributeVer;
-        return true;
-    }
-
-    return false;
-}
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/uiconfig/ui/distributiondialog.ui b/cui/uiconfig/ui/distributiondialog.ui
deleted file mode 100644
index 03f848b981ed..000000000000
--- a/cui/uiconfig/ui/distributiondialog.ui
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.1 -->
-<interface domain="cui">
-  <requires lib="gtk+" version="3.18"/>
-  <object class="GtkDialog" id="DistributionDialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">6</property>
-    <property name="title" translatable="yes" context="distributiondialog|DistributionDialog">Distribution</property>
-    <property name="resizable">False</property>
-    <property name="modal">True</property>
-    <property name="default_width">0</property>
-    <property name="default_height">0</property>
-    <property name="type_hint">dialog</property>
-    <child>
-      <placeholder/>
-    </child>
-    <child internal-child="vbox">
-      <object class="GtkBox" id="dialog-vbox1">
-        <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
-        <property name="spacing">12</property>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area1">
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="ok">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="cancel">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="help">
-                <property name="label">gtk-help</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">2</property>
-                <property name="secondary">True</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-5">ok</action-widget>
-      <action-widget response="-6">cancel</action-widget>
-      <action-widget response="-11">help</action-widget>
-    </action-widgets>
-  </object>
-</interface>
diff --git a/cui/uiconfig/ui/distributionpage.ui b/cui/uiconfig/ui/distributionpage.ui
deleted file mode 100644
index 1798e901e1cf..000000000000
--- a/cui/uiconfig/ui/distributionpage.ui
+++ /dev/null
@@ -1,439 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.36.0 -->
-<interface domain="cui">
-  <requires lib="gtk+" version="3.18"/>
-  <object class="GtkGrid" id="DistributionPage">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="border_width">6</property>
-    <property name="row_spacing">12</property>
-    <child>
-      <object class="GtkGrid" id="grid1">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="row_spacing">12</property>
-        <child>
-          <object class="GtkFrame" id="frame1">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="alignment1">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">6</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkGrid" id="grid2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="row_spacing">6</property>
-                    <property name="column_spacing">12</property>
-                    <property name="row_homogeneous">True</property>
-                    <child>
-                      <object class="GtkRadioButton" id="hornone">
-                        <property name="label" translatable="yes" context="distributionpage|hornone">_None</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="hornone-atkobject">
-                            <property name="AtkObject::accessible-description" translatable="yes" context="distributionpage|extended_tip|hornone">Does not distribute the objects horizontally.</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkRadioButton" id="horleft">
-                        <property name="label" translatable="yes" context="distributionpage|horleft">_Left</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">hornone</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="horleft-atkobject">
-                            <property name="AtkObject::accessible-description" translatable="yes" context="distributionpage|extended_tip|horleft">Distributes the selected objects, so that the left edges of the objects are evenly spaced from one another.</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkRadioButton" id="horcenter">
-                        <property name="label" translatable="yes" context="distributionpage|horcenter">_Center</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">hornone</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="horcenter-atkobject">
-                            <property name="AtkObject::accessible-description" translatable="yes" context="distributionpage|extended_tip|horcenter">Distributes the selected objects, so that the horizontal centers of the objects are evenly spaced from one another.</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">2</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkRadioButton" id="horright">
-                        <property name="label" translatable="yes" context="distributionpage|horright">_Right</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">hornone</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="horright-atkobject">
-                            <property name="AtkObject::accessible-description" translatable="yes" context="distributionpage|extended_tip|horright">Distributes the selected objects, so that the right edges of the objects are evenly spaced from one another.</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">4</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkImage" id="image1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="halign">center</property>
-                        <property name="valign">center</property>
-                        <property name="icon_name">svx/res/dsth_low.png</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkImage" id="image3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="halign">center</property>
-                        <property name="valign">center</property>
-                        <property name="icon_name">svx/res/dsth_cen.png</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">2</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkRadioButton" id="hordistance">
-                        <property name="label" translatable="yes" context="distributionpage|hordistance">_Spacing</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">hornone</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="hordistance-atkobject">
-                            <property name="AtkObject::accessible-description" translatable="yes" context="distributionpage|extended_tip|hordistance">Distributes the selected objects horizontally, so that the objects are evenly spaced from one another.</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">3</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkImage" id="image2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="halign">center</property>
-                        <property name="valign">center</property>
-                        <property name="icon_name">svx/res/dsth_dst.png</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">3</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkImage" id="image4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="halign">center</property>
-                        <property name="valign">center</property>
-                        <property name="icon_name">svx/res/dsth_hig.png</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">4</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes" context="distributionpage|label">Horizontal</property>
-                <attributes>
-                  <attribute name="weight" value="bold"/>
-                </attributes>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="left_attach">0</property>
-            <property name="top_attach">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="frame2">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="alignment2">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">6</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkGrid" id="grid3">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="row_spacing">6</property>
-                    <property name="column_spacing">12</property>
-                    <property name="row_homogeneous">True</property>
-                    <child>
-                      <object class="GtkRadioButton" id="vernone">
-                        <property name="label" translatable="yes" context="distributionpage|vernone">N_one</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="draw_indicator">True</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="vernone-atkobject">
-                            <property name="AtkObject::accessible-description" translatable="yes" context="distributionpage|extended_tip|vernone">Does not distribute the objects vertically.</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkRadioButton" id="vertop">
-                        <property name="label" translatable="yes" context="distributionpage|vertop">_Top</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">vernone</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="vertop-atkobject">
-                            <property name="AtkObject::accessible-description" translatable="yes" context="distributionpage|extended_tip|vertop">Distributes the selected objects, so that the top edges of the objects are evenly spaced from one another.</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkRadioButton" id="vercenter">
-                        <property name="label" translatable="yes" context="distributionpage|vercenter">C_enter</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="yalign">0.5600000023841858</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">vernone</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="vercenter-atkobject">
-                            <property name="AtkObject::accessible-description" translatable="yes" context="distributionpage|extended_tip|vercenter">Distributes the selected objects, so that the vertical centers of the objects are evenly spaced from one another.</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">2</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkRadioButton" id="verdistance">
-                        <property name="label" translatable="yes" context="distributionpage|verdistance">S_pacing</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">vernone</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="verdistance-atkobject">
-                            <property name="AtkObject::accessible-description" translatable="yes" context="distributionpage|extended_tip|verdistance">Distributes the selected objects vertically, so that the objects are evenly spaced from one another.</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">3</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkRadioButton" id="verbottom">
-                        <property name="label" translatable="yes" context="distributionpage|verbottom">_Bottom</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">vernone</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="verbottom-atkobject">
-                            <property name="AtkObject::accessible-description" translatable="yes" context="distributionpage|extended_tip|verbottom">Distributes the selected objects, so that the bottom edges of the objects are evenly spaced from one another.</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">4</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkImage" id="image9">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="halign">center</property>
-                        <property name="valign">center</property>
-                        <property name="icon_name">svx/res/dstv_hig.png</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkImage" id="image10">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="halign">center</property>
-                        <property name="valign">center</property>
-                        <property name="icon_name">svx/res/dstv_cen.png</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">2</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkImage" id="image11">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="halign">center</property>
-                        <property name="valign">center</property>
-                        <property name="icon_name">svx/res/dstv_dst.png</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">3</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkImage" id="image12">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="halign">center</property>
-                        <property name="valign">center</property>
-                        <property name="icon_name">svx/res/dstv_low.png</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">4</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="label1">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes" context="distributionpage|label1">Vertical</property>
-                <attributes>
-                  <attribute name="weight" value="bold"/>
-                </attributes>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="left_attach">0</property>
-            <property name="top_attach">1</property>
-          </packing>
-        </child>
-      </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">0</property>
-      </packing>
-    </child>
-    <child internal-child="accessible">
-      <object class="AtkObject" id="DistributionPage-atkobject">
-        <property name="AtkObject::accessible-description" translatable="yes" context="distributionpage|extended_tip|DistributionPage">Distributes three or more selected objects evenly along the horizontal axis or the vertical axis. You can also evenly distribute the spacing between objects.</property>
-      </object>
-    </child>
-  </object>
-  <object class="GtkSizeGroup" id="sizegroup1">
-    <widgets>
-      <widget name="hornone"/>
-      <widget name="horleft"/>
-      <widget name="horcenter"/>
-      <widget name="horright"/>
-      <widget name="hordistance"/>
-      <widget name="vernone"/>
-      <widget name="vertop"/>
-      <widget name="vercenter"/>
-      <widget name="verdistance"/>
-      <widget name="verbottom"/>
-    </widgets>
-  </object>
-</interface>
diff --git a/include/svx/svdedtv.hxx b/include/svx/svdedtv.hxx
index 35236d6e2570..5ddf6856bb7f 100644
--- a/include/svx/svdedtv.hxx
+++ b/include/svx/svdedtv.hxx
@@ -264,7 +264,7 @@ public:
     void MergeMarkedObjects(SdrMergeMode eMode);
 
     // for distribution dialog function
-    void DistributeMarkedObjects(weld::Window* pParent);
+    void DistributeMarkedObjects(sal_uInt16 SlotID);
 
     // for setting either the width or height of all selected
     // objects to the width/height of the last selected object
diff --git a/include/svx/svxdlg.hxx b/include/svx/svxdlg.hxx
index c07db29b516f..df6f6f106c47 100644
--- a/include/svx/svxdlg.hxx
+++ b/include/svx/svxdlg.hxx
@@ -66,15 +66,6 @@ namespace weld{
     class Window;
 }
 
-class AbstractSvxDistributeDialog :public VclAbstractDialog
-{
-protected:
-    virtual ~AbstractSvxDistributeDialog() override = default;
-public:
-    virtual SvxDistributeHorizontal GetDistributeHor() const = 0;
-    virtual SvxDistributeVertical GetDistributeVer() const = 0;
-};
-
 class AbstractFmShowColsDialog : public VclAbstractDialog
 {
 protected:
@@ -334,9 +325,6 @@ public:
                                                                  const SdrView* pView,
                                                                  SvxAnchorIds nAnchorTypes = SvxAnchorIds::NONE) = 0;
 
-    virtual VclPtr<AbstractSvxDistributeDialog>    CreateSvxDistributeDialog(weld::Window* pParent,
-                                            const SfxItemSet& rAttr)= 0;
-
     virtual VclPtr<AbstractFmShowColsDialog> CreateFmShowColsDialog(weld::Window* pParent) = 0;
 
     virtual VclPtr<AbstractSvxZoomDialog> CreateSvxZoomDialog(weld::Window* pParent, const SfxItemSet& rCoreSet) = 0;
diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc
index ead0bd87d48c..c057e16d81d7 100644
--- a/include/svx/svxids.hrc
+++ b/include/svx/svxids.hrc
@@ -92,9 +92,17 @@ class SvxSetItem;
 #define SID_POLY_MERGE                      (SID_SFX_START + 679)
 #define SID_POLY_SUBSTRACT                  (SID_SFX_START + 680)
 #define SID_POLY_INTERSECT                  (SID_SFX_START + 681)
-#define SID_DISTRIBUTE_DLG                  (SID_SFX_START + 683)
+#define SID_DISTRIBUTE_DLG                  (SID_SFX_START + 683) // dialog replaced by dropdown
 #define SID_EQUALIZEWIDTH                   (SID_SFX_START + 684)
 #define SID_EQUALIZEHEIGHT                  (SID_SFX_START + 685)
+#define SID_DISTRIBUTE_HLEFT                (SID_SFX_START + 686)
+#define SID_DISTRIBUTE_HCENTER              (SID_SFX_START + 687)
+#define SID_DISTRIBUTE_HDISTANCE            (SID_SFX_START + 688)
+#define SID_DISTRIBUTE_HRIGHT               (SID_SFX_START + 689)
+#define SID_DISTRIBUTE_VTOP                 (SID_SFX_START + 690)
+#define SID_DISTRIBUTE_VCENTER              (SID_SFX_START + 691)
+#define SID_DISTRIBUTE_VDISTANCE            (SID_SFX_START + 692)
+#define SID_DISTRIBUTE_VBOTTOM              (SID_SFX_START + 693)
 
 // StarBase IDs
 
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
index 01e6172a80c6..10a67fab1140 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
@@ -520,6 +520,20 @@
           <value>com.sun.star.comp.framework.WindowListMenuController</value>
         </prop>
       </node>
+      <node oor:name="DistributeControl" oor:op="replace">
+        <prop oor:name="Command">
+          <value>.uno:DistributeSelection</value>
+        </prop>
+        <prop oor:name="Module">
+          <value/>
+        </prop>
+        <prop oor:name="Controller">
+          <value>com.sun.star.comp.framework.ToolbarAsMenuController</value>
+        </prop>
+        <prop oor:name="Value">
+          <value>distributebar</value>
+        </prop>
+      </node>
     </node>
     <node oor:name="ToolBar">
       <node oor:name="lo.writer.ScrollToPrevious" oor:op="replace">
@@ -1900,6 +1914,20 @@
           <value>com.sun.star.comp.framework.GenericPopupToolbarController</value>
         </prop>
       </node>
+      <node oor:name="DistributeControl" oor:op="replace">
+        <prop oor:name="Command">
+          <value>.uno:DistributeSelection</value>
+        </prop>
+        <prop oor:name="Module">
+          <value/>
+        </prop>
+        <prop oor:name="Controller">
+          <value>com.sun.star.comp.framework.SubToolBarController</value>
+        </prop>
+        <prop oor:name="Value">
+          <value>distributebar</value>
+        </prop>
+      </node>
     </node>
     <node oor:name="StatusBar">
       <node oor:name="c5" oor:op="replace">
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu
index b1f0b0f292e1..33eb4cb2e8bd 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu
@@ -909,6 +909,17 @@
           <value xml:lang="en-US">Redaction</value>
         </prop>
       </node>
+      <node oor:name="private:resource/toolbar/distributebar" oor:op="replace">
+        <prop oor:name="Docked" oor:type="xs:boolean">
+          <value>false</value>
+        </prop>
+        <prop oor:name="Visible" oor:type="xs:boolean">
+          <value>false</value>
+        </prop>
+        <prop oor:name="UIName" oor:type="xs:string">
+          <value xml:lang="en-US">Distribute Selection</value>
+        </prop>
+      </node>
     </node>
   </node>
 </oor:component-data>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index 3212c283a6b3..97b8e210924c 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -4062,14 +4062,6 @@
           <value>9</value>
         </prop>
       </node>
-      <node oor:name=".uno:DistributeSelection" oor:op="replace">
-        <prop oor:name="Label" oor:type="xs:string">
-          <value xml:lang="en-US">~Distribution...</value>
-        </prop>
-        <prop oor:name="Properties" oor:type="xs:int">
-          <value>1</value>
-        </prop>
-      </node>
       <node oor:name=".uno:ParagraphDialog" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
           <value xml:lang="en-US">P~aragraph...</value>
@@ -7180,6 +7172,108 @@
           <value>1</value>
         </prop>
       </node>
+      <node oor:name=".uno:DistributeSelection" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">~Distribution</value>
+        </prop>
+        <prop oor:name="TooltipLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Select at least three objects to distribute</value>
+        </prop>
+        <prop oor:name="ContextLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Distribute Selection</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:DistributeHorzLeft" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Distribute Horizontally Left</value>
+        </prop>
+        <prop oor:name="ContextLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Horizontally ~Left</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:DistributeHorzCenter" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Distribute Horizontally Center</value>
+        </prop>
+        <prop oor:name="ContextLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Horizontally ~Center</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:DistributeHorzDistance" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Distribute Horizontally Spacing</value>
+        </prop>
+        <prop oor:name="ContextLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Horizontally ~Spacing</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:DistributeHorzRight" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Distribute Horizontally Right</value>
+        </prop>
+        <prop oor:name="ContextLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Horizontally ~Right</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:DistributeVertTop" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Distribute Vertically Top</value>
+        </prop>
+        <prop oor:name="ContextLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Vertically ~Top</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:DistributeVertCenter" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Distribute Vertically Center</value>
+        </prop>
+        <prop oor:name="ContextLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Vertically C~enter</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:DistributeVertDistance" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Distribute Vertically Spacing</value>
+        </prop>
+        <prop oor:name="ContextLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Vertically S~pacing</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:DistributeVertBottom" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Distribute Vertically Bottom</value>
+        </prop>
+        <prop oor:name="ContextLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Vertically ~Bottom</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
     </node>
   </node>
 </oor:component-data>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu
index b9d1d1545298..bd50af5c8671 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu
@@ -1020,6 +1020,17 @@
           <value>true</value>
         </prop>
       </node>
+      <node oor:name="private:resource/toolbar/distributebar" oor:op="replace">
+        <prop oor:name="Docked" oor:type="xs:boolean">
+          <value>false</value>
+        </prop>
+        <prop oor:name="Visible" oor:type="xs:boolean">
+          <value>false</value>
+        </prop>
+        <prop oor:name="UIName" oor:type="xs:string">
+          <value xml:lang="en-US">Distribute Selection</value>
+        </prop>
+      </node>
     </node>
   </node>
 </oor:component-data>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ReportCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ReportCommands.xcu
index dc8d802ccd8b..94a0182b3da0 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/ReportCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/ReportCommands.xcu
@@ -182,11 +182,6 @@
           <value>1</value>
         </prop>
       </node>
-      <node oor:name=".uno:Distribution" oor:op="replace">
-        <prop oor:name="Label" oor:type="xs:string">
-          <value xml:lang="en-US">Distribution...</value>
-        </prop>
-      </node>
       <node oor:name=".uno:SelectAllInSection" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
           <value xml:lang="en-US">~Select Objects in Section</value>
diff --git a/reportdesign/UIConfig_dbreport.mk b/reportdesign/UIConfig_dbreport.mk
index d04dce4bbd64..89c60a3dab4f 100644
--- a/reportdesign/UIConfig_dbreport.mk
+++ b/reportdesign/UIConfig_dbreport.mk
@@ -26,6 +26,7 @@ $(eval $(call gb_UIConfig_add_toolbarfiles,modules/dbreport,\
 	reportdesign/uiconfig/dbreport/toolbar/arrowshapes \
 	reportdesign/uiconfig/dbreport/toolbar/basicshapes \
 	reportdesign/uiconfig/dbreport/toolbar/calloutshapes \
+	reportdesign/uiconfig/dbreport/toolbar/distributebar \
 	reportdesign/uiconfig/dbreport/toolbar/drawbar \
 	reportdesign/uiconfig/dbreport/toolbar/flowchartshapes \
 	reportdesign/uiconfig/dbreport/toolbar/Formatting \
diff --git a/reportdesign/inc/rptui_slotid.hrc b/reportdesign/inc/rptui_slotid.hrc
index 95dc0019af70..c66fb556efaf 100644
--- a/reportdesign/inc/rptui_slotid.hrc
+++ b/reportdesign/inc/rptui_slotid.hrc
@@ -29,7 +29,7 @@
 #define SID_CONDITIONALFORMATTING               ( SID_RPTUI_START +   4 )
 #define SID_PAGEDIALOG                          ( SID_RPTUI_START +   5 )
 #define SID_SETCONTROLDEFAULTS                  ( SID_RPTUI_START +   6 )
-#define SID_DISTRIBUTION                        ( SID_RPTUI_START +   7 )
+
 #define SID_PAGEHEADER_WITHOUT_UNDO             ( SID_RPTUI_START +   8 )
 #define SID_PAGEFOOTER_WITHOUT_UNDO             ( SID_RPTUI_START +   9 )
 #define SID_REPORTHEADER_WITHOUT_UNDO           ( SID_RPTUI_START +  10 )
diff --git a/reportdesign/source/ui/report/ReportController.cxx b/reportdesign/source/ui/report/ReportController.cxx
index 9a73953542c8..f6509cd3beaf 100644
--- a/reportdesign/source/ui/report/ReportController.cxx
+++ b/reportdesign/source/ui/report/ReportController.cxx
@@ -451,7 +451,14 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
                 aReturn.bEnabled = m_nSelectionCount > 1;
             break;
 
-        case SID_DISTRIBUTION:
+        case SID_DISTRIBUTE_HLEFT:
+        case SID_DISTRIBUTE_HCENTER:
+        case SID_DISTRIBUTE_HDISTANCE:
+        case SID_DISTRIBUTE_HRIGHT:
+        case SID_DISTRIBUTE_VTOP:
+        case SID_DISTRIBUTE_VCENTER:
+        case SID_DISTRIBUTE_VDISTANCE:
+        case SID_DISTRIBUTE_VBOTTOM:
             aReturn.bEnabled = isEditable() && getDesignView()->HasSelection();
             if ( aReturn.bEnabled )
             {
@@ -1034,11 +1041,18 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
         case SID_OBJECT_HELL:
             changeZOrder(_nId);
             break;
-        case SID_DISTRIBUTION:
+        case SID_DISTRIBUTE_HLEFT:
+        case SID_DISTRIBUTE_HCENTER:
+        case SID_DISTRIBUTE_HDISTANCE:
+        case SID_DISTRIBUTE_HRIGHT:
+        case SID_DISTRIBUTE_VTOP:
+        case SID_DISTRIBUTE_VCENTER:
+        case SID_DISTRIBUTE_VDISTANCE:
+        case SID_DISTRIBUTE_VBOTTOM:
             {
                 OSectionView* pSectionView = getCurrentSectionView();
                 if ( pSectionView )
-                    pSectionView->DistributeMarkedObjects(getFrameWeld());
+                    pSectionView->DistributeMarkedObjects(_nId);
             }
             break;
         case SID_OBJECT_SMALLESTWIDTH:
@@ -1838,7 +1852,16 @@ void OReportController::describeSupportedFeatures()
     implDescribeSupportedFeature( ".uno:SmallestHeight",            SID_OBJECT_SMALLESTHEIGHT,      CommandGroup::FORMAT );
     implDescribeSupportedFeature( ".uno:GreatestWidth",             SID_OBJECT_GREATESTWIDTH,       CommandGroup::FORMAT );
     implDescribeSupportedFeature( ".uno:GreatestHeight",            SID_OBJECT_GREATESTHEIGHT,      CommandGroup::FORMAT );
-    implDescribeSupportedFeature( ".uno:Distribution",              SID_DISTRIBUTION,               CommandGroup::FORMAT );
+
+    implDescribeSupportedFeature( ".uno:DistributeSelection",       SID_DISTRIBUTE_DLG,             CommandGroup::FORMAT );
+    implDescribeSupportedFeature( ".uno:DistributeHorzLeft",        SID_DISTRIBUTE_HLEFT,           CommandGroup::FORMAT );
+    implDescribeSupportedFeature( ".uno:DistributeHorzCenter",      SID_DISTRIBUTE_HCENTER,         CommandGroup::FORMAT );
+    implDescribeSupportedFeature( ".uno:DistributeHorzDistance",    SID_DISTRIBUTE_HDISTANCE,       CommandGroup::FORMAT );
+    implDescribeSupportedFeature( ".uno:DistributeHorzRight",       SID_DISTRIBUTE_HRIGHT,          CommandGroup::FORMAT );
+    implDescribeSupportedFeature( ".uno:DistributeVertTop",         SID_DISTRIBUTE_VTOP,            CommandGroup::FORMAT );
+    implDescribeSupportedFeature( ".uno:DistributeVertCenter",      SID_DISTRIBUTE_VCENTER,         CommandGroup::FORMAT );
+    implDescribeSupportedFeature( ".uno:DistributeVertDistance",    SID_DISTRIBUTE_VDISTANCE,       CommandGroup::FORMAT );
+    implDescribeSupportedFeature( ".uno:DistributeVertBottom",      SID_DISTRIBUTE_VBOTTOM,         CommandGroup::FORMAT );
 
     implDescribeSupportedFeature( ".uno:ExportTo",                  SID_EXPORTDOC,                  CommandGroup::APPLICATION );
     implDescribeSupportedFeature( ".uno:ExportToPDF",               SID_EXPORTDOCASPDF,             CommandGroup::APPLICATION );
diff --git a/reportdesign/uiconfig/dbreport/menubar/menubar.xml b/reportdesign/uiconfig/dbreport/menubar/menubar.xml
index cf9bb4543450..2ca14f363a5d 100644
--- a/reportdesign/uiconfig/dbreport/menubar/menubar.xml
+++ b/reportdesign/uiconfig/dbreport/menubar/menubar.xml
@@ -240,7 +240,7 @@
                 </menu:menupopup>
             </menu:menu>
             <menu:menuseparator/>
-            <menu:menuitem menu:id=".uno:Distribution"/>
+            <menu:menuitem menu:id=".uno:DistributeSelection"/>
         </menu:menupopup>
     </menu:menu>
     <menu:menu menu:id=".uno:ToolsMenu" >
diff --git a/reportdesign/uiconfig/dbreport/popupmenu/report.xml b/reportdesign/uiconfig/dbreport/popupmenu/report.xml
index 5605aa9c77b7..8791fe4701f2 100644
--- a/reportdesign/uiconfig/dbreport/popupmenu/report.xml
+++ b/reportdesign/uiconfig/dbreport/popupmenu/report.xml
@@ -62,7 +62,7 @@
     </menu:menupopup>
   </menu:menu>
   <menu:menuseparator/>
-  <menu:menuitem menu:id=".uno:Distribution"/>
+  <menu:menuitem menu:id=".uno:DistributeSelection"/>
   <menu:menuseparator/>
   <menu:menuitem menu:id=".uno:ControlProperties"/>
 </menu:menupopup>
diff --git a/reportdesign/uiconfig/dbreport/toolbar/distributebar.xml b/reportdesign/uiconfig/dbreport/toolbar/distributebar.xml
new file mode 100644
index 000000000000..308104262c47
--- /dev/null
+++ b/reportdesign/uiconfig/dbreport/toolbar/distributebar.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<!--
+ * 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/.
+ *
+-->
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzLeft"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzCenter"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzDistance"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzRight"/>
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertTop"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertCenter"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertDistance"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertBottom"/>
+</toolbar:toolbar>
\ No newline at end of file
diff --git a/sd/UIConfig_sdraw.mk b/sd/UIConfig_sdraw.mk
index 643b4fb54072..d757577a97cc 100644
--- a/sd/UIConfig_sdraw.mk
+++ b/sd/UIConfig_sdraw.mk
@@ -61,6 +61,7 @@ $(eval $(call gb_UIConfig_add_toolbarfiles,modules/sdraw,\
 	sd/uiconfig/sdraw/toolbar/commentsbar \
 	sd/uiconfig/sdraw/toolbar/connectorsbar \
 	sd/uiconfig/sdraw/toolbar/drawingobjectbar \
+	sd/uiconfig/sdraw/toolbar/distributebar \
 	sd/uiconfig/sdraw/toolbar/ellipsesbar \
 	sd/uiconfig/sdraw/toolbar/extrusionobjectbar \
 	sd/uiconfig/sdraw/toolbar/findbar \
diff --git a/sd/UIConfig_simpress.mk b/sd/UIConfig_simpress.mk
index ea014ef301b6..f8e10c675609 100644
--- a/sd/UIConfig_simpress.mk
+++ b/sd/UIConfig_simpress.mk
@@ -63,6 +63,7 @@ $(eval $(call gb_UIConfig_add_toolbarfiles,modules/simpress,\
 	sd/uiconfig/simpress/toolbar/commontaskbar \
 	sd/uiconfig/simpress/toolbar/connectorsbar \
 	sd/uiconfig/simpress/toolbar/drawingobjectbar \
+	sd/uiconfig/simpress/toolbar/distributebar \
 	sd/uiconfig/simpress/toolbar/ellipsesbar \
 	sd/uiconfig/simpress/toolbar/extrusionobjectbar \
 	sd/uiconfig/simpress/toolbar/findbar \
diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi
index c3dd109a0956..683e52888635 100644
--- a/sd/sdi/_drvwsh.sdi
+++ b/sd/sdi/_drvwsh.sdi
@@ -479,6 +479,46 @@ interface DrawView
         StateMethod = GetMenuState ;
     ]
     SID_DISTRIBUTE_DLG // ole : no, status : ?
+    [
+        StateMethod = GetMenuState ;
+        GroupId = SfxGroupId::Document ;
+    ]
+    SID_DISTRIBUTE_HLEFT // ole : no, status : ?
+    [
+        ExecMethod = FuTemporary ;
+        StateMethod = GetMenuState ;
+    ]
+    SID_DISTRIBUTE_HCENTER // ole : no, status : ?
+    [
+        ExecMethod = FuTemporary ;
+        StateMethod = GetMenuState ;
+    ]
+    SID_DISTRIBUTE_HDISTANCE // ole : no, status : ?
+    [
+        ExecMethod = FuTemporary ;
+        StateMethod = GetMenuState ;
+    ]
+    SID_DISTRIBUTE_HRIGHT // ole : no, status : ?
+    [
+        ExecMethod = FuTemporary ;
+        StateMethod = GetMenuState ;
+    ]
+    SID_DISTRIBUTE_VTOP // ole : no, status : ?
+    [
+        ExecMethod = FuTemporary ;
+        StateMethod = GetMenuState ;
+    ]
+    SID_DISTRIBUTE_VCENTER // ole : no, status : ?
+    [
+        ExecMethod = FuTemporary ;
+        StateMethod = GetMenuState ;
+    ]
+    SID_DISTRIBUTE_VDISTANCE // ole : no, status : ?
+    [
+        ExecMethod = FuTemporary ;
+        StateMethod = GetMenuState ;
+    ]
+    SID_DISTRIBUTE_VBOTTOM // ole : no, status : ?
     [
         ExecMethod = FuTemporary ;
         StateMethod = GetMenuState ;
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index b89c429452ee..9c35ca4077f7 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -2755,7 +2755,14 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
         }
         break;
 
-        case SID_DISTRIBUTE_DLG:
+        case SID_DISTRIBUTE_HLEFT:
+        case SID_DISTRIBUTE_HCENTER:
+        case SID_DISTRIBUTE_HDISTANCE:
+        case SID_DISTRIBUTE_HRIGHT:
+        case SID_DISTRIBUTE_VTOP:
+        case SID_DISTRIBUTE_VCENTER:
+        case SID_DISTRIBUTE_VDISTANCE:
+        case SID_DISTRIBUTE_VBOTTOM:
         {
             if ( mpDrawView->IsPresObjSelected() )
             {
@@ -2766,13 +2773,12 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
             }
             else
             {
-                mpDrawView->DistributeMarkedObjects(GetFrameWeld());
+                mpDrawView->DistributeMarkedObjects(nSId);
             }
             Cancel();
             rReq.Done ();
         }
         break;
-
         case SID_POLY_MERGE:
         {
             // End text edit to avoid conflicts
diff --git a/sd/source/ui/view/drviewsj.cxx b/sd/source/ui/view/drviewsj.cxx
index 372cb555ebdf..829338a67de1 100644
--- a/sd/source/ui/view/drviewsj.cxx
+++ b/sd/source/ui/view/drviewsj.cxx
@@ -278,7 +278,14 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet )
         rSet.DisableItem(SID_GROUP);
         rSet.DisableItem(SID_TEXT_COMBINE);
         rSet.DisableItem(SID_COMBINE);
-        rSet.DisableItem(SID_DISTRIBUTE_DLG);
+        rSet.DisableItem(SID_DISTRIBUTE_HLEFT);
+        rSet.DisableItem(SID_DISTRIBUTE_HCENTER);
+        rSet.DisableItem(SID_DISTRIBUTE_HDISTANCE);
+        rSet.DisableItem(SID_DISTRIBUTE_HRIGHT);
+        rSet.DisableItem(SID_DISTRIBUTE_VTOP);
+        rSet.DisableItem(SID_DISTRIBUTE_VCENTER);
+        rSet.DisableItem(SID_DISTRIBUTE_VDISTANCE);
+        rSet.DisableItem(SID_DISTRIBUTE_VBOTTOM);
         rSet.DisableItem(SID_POLY_MERGE);
         rSet.DisableItem(SID_POLY_SUBSTRACT);
         rSet.DisableItem(SID_POLY_INTERSECT);
@@ -291,7 +298,16 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet )
     {
         // distribute dialog for 3+n objects
         if(nMarkCount <= 2)
-            rSet.DisableItem(SID_DISTRIBUTE_DLG);
+        {
+            rSet.DisableItem(SID_DISTRIBUTE_HLEFT);
+            rSet.DisableItem(SID_DISTRIBUTE_HCENTER);
+            rSet.DisableItem(SID_DISTRIBUTE_HDISTANCE);
+            rSet.DisableItem(SID_DISTRIBUTE_HRIGHT);
+            rSet.DisableItem(SID_DISTRIBUTE_VTOP);
+            rSet.DisableItem(SID_DISTRIBUTE_VCENTER);
+            rSet.DisableItem(SID_DISTRIBUTE_VDISTANCE);
+            rSet.DisableItem(SID_DISTRIBUTE_VBOTTOM);
+        }
 
         rSet.DisableItem( SID_LINEEND_POLYGON );
         rSet.DisableItem( SID_ENTER_GROUP );
@@ -492,6 +508,14 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet )
         rSet.DisableItem( SID_TEXT_COMBINE );
         rSet.DisableItem( SID_COMBINE );
         rSet.DisableItem(SID_DISTRIBUTE_DLG);
+        rSet.DisableItem(SID_DISTRIBUTE_HLEFT);
+        rSet.DisableItem(SID_DISTRIBUTE_HCENTER);
+        rSet.DisableItem(SID_DISTRIBUTE_HDISTANCE);
+        rSet.DisableItem(SID_DISTRIBUTE_HRIGHT);
+        rSet.DisableItem(SID_DISTRIBUTE_VTOP);
+        rSet.DisableItem(SID_DISTRIBUTE_VCENTER);
+        rSet.DisableItem(SID_DISTRIBUTE_VDISTANCE);
+        rSet.DisableItem(SID_DISTRIBUTE_VBOTTOM);
         rSet.DisableItem(SID_POLY_MERGE);
         rSet.DisableItem(SID_POLY_SUBSTRACT);
         rSet.DisableItem(SID_POLY_INTERSECT);
diff --git a/sd/uiconfig/sdraw/toolbar/distributebar.xml b/sd/uiconfig/sdraw/toolbar/distributebar.xml
new file mode 100644
index 000000000000..308104262c47
--- /dev/null
+++ b/sd/uiconfig/sdraw/toolbar/distributebar.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<!--
+ * 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/.
+ *
+-->
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzLeft"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzCenter"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzDistance"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzRight"/>
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertTop"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertCenter"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertDistance"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertBottom"/>
+</toolbar:toolbar>
\ No newline at end of file
diff --git a/sd/uiconfig/sdraw/toolbar/drawingobjectbar.xml b/sd/uiconfig/sdraw/toolbar/drawingobjectbar.xml
index 4ec8c431197f..04d010eee3dd 100644
--- a/sd/uiconfig/sdraw/toolbar/drawingobjectbar.xml
+++ b/sd/uiconfig/sdraw/toolbar/drawingobjectbar.xml
@@ -56,8 +56,6 @@
  <toolbar:toolbaritem xlink:href=".uno:MirrorHorz"/>
  <toolbar:toolbaritem xlink:href=".uno:AdvancedMode"/>
  <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:DistributeSelection"/>
- <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:FormatLine" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:FormatArea" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:Window3D" toolbar:visible="false"/>
diff --git a/sd/uiconfig/simpress/toolbar/distributebar.xml b/sd/uiconfig/simpress/toolbar/distributebar.xml
new file mode 100644
index 000000000000..308104262c47
--- /dev/null
+++ b/sd/uiconfig/simpress/toolbar/distributebar.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<!--
+ * 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/.
+ *
+-->
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzLeft"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzCenter"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzDistance"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeHorzRight"/>
+ <toolbar:toolbarbreak/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertTop"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertCenter"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertDistance"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeVertBottom"/>
+</toolbar:toolbar>
\ No newline at end of file
diff --git a/sd/uiconfig/simpress/toolbar/drawingobjectbar.xml b/sd/uiconfig/simpress/toolbar/drawingobjectbar.xml
index 91b087528ae7..f5646c28d7e3 100644
--- a/sd/uiconfig/simpress/toolbar/drawingobjectbar.xml
+++ b/sd/uiconfig/simpress/toolbar/drawingobjectbar.xml
@@ -56,8 +56,6 @@
  <toolbar:toolbaritem xlink:href=".uno:MirrorHorz"/>
  <toolbar:toolbaritem xlink:href=".uno:AdvancedMode"/>
  <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:DistributeSelection"/>
- <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:FormatLine" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:FormatArea" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:Window3D" toolbar:visible="false"/>
diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist
index a47fe865da53..50ebe0f410d1 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -2714,7 +2714,6 @@ cui/source/inc/cuitabline.hxx
 cui/source/inc/dbregister.hxx
 cui/source/inc/defdlgname.hxx
 cui/source/inc/dlgname.hxx
-cui/source/inc/dstribut.hxx
 cui/source/inc/grfpage.hxx
 cui/source/inc/hangulhanjadlg.hxx
 cui/source/inc/headertablistbox.hxx
@@ -2828,7 +2827,6 @@ cui/source/tabpages/border.cxx
 cui/source/tabpages/chardlg.cxx
 cui/source/tabpages/chardlg.h
 cui/source/tabpages/connect.cxx
-cui/source/tabpages/dstribut.cxx
 cui/source/tabpages/grfpage.cxx
 cui/source/tabpages/labdlg.cxx
 cui/source/tabpages/macroass.cxx
diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi
index d382a1814121..42158cac9d81 100644
--- a/svx/sdi/svx.sdi
+++ b/svx/sdi/svx.sdi
@@ -2258,9 +2258,26 @@ SfxBoolItem SwitchControlDesignMode SID_FM_DESIGN_MODE
     GroupId = SfxGroupId::Controls;
 ]
 
-
 SfxVoidItem DistributeSelection SID_DISTRIBUTE_DLG
 ()
+[
+    AutoUpdate = FALSE,
+    FastCall = TRUE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+
+
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = TRUE,
+    GroupId = SfxGroupId::Format;
+]
+
+SfxVoidItem DistributeHorzLeft SID_DISTRIBUTE_HLEFT
+()
 [
     AutoUpdate = FALSE,
     FastCall = FALSE,
@@ -2276,7 +2293,125 @@ SfxVoidItem DistributeSelection SID_DISTRIBUTE_DLG
     ToolBoxConfig = TRUE,
     GroupId = SfxGroupId::Modify;
 ]
+SfxVoidItem DistributeHorzCenter SID_DISTRIBUTE_HCENTER
+()
+[
+    AutoUpdate = FALSE,
+    FastCall = FALSE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Asynchron;
 
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = TRUE,
+    GroupId = SfxGroupId::Modify;
+]
+SfxVoidItem DistributeHorzDistance SID_DISTRIBUTE_HDISTANCE
+()
+[
+    AutoUpdate = FALSE,
+    FastCall = FALSE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Asynchron;
+
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = TRUE,
+    GroupId = SfxGroupId::Modify;
+]
+SfxVoidItem DistributeHorzRight SID_DISTRIBUTE_HRIGHT
+()
+[
+    AutoUpdate = FALSE,
+    FastCall = FALSE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Asynchron;
+
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = TRUE,
+    GroupId = SfxGroupId::Modify;
+]
+SfxVoidItem DistributeVertTop SID_DISTRIBUTE_VTOP
+()
+[
+    AutoUpdate = FALSE,
+    FastCall = FALSE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Asynchron;
+
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = TRUE,
+    GroupId = SfxGroupId::Modify;
+]
+SfxVoidItem DistributeVertCenter SID_DISTRIBUTE_VCENTER
+()
+[
+    AutoUpdate = FALSE,
+    FastCall = FALSE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Asynchron;
+
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = TRUE,
+    GroupId = SfxGroupId::Modify;
+]
+SfxVoidItem DistributeVertDistance SID_DISTRIBUTE_VDISTANCE
+()
+[
+    AutoUpdate = FALSE,
+    FastCall = FALSE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Asynchron;
+
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = TRUE,
+    GroupId = SfxGroupId::Modify;
+]
+SfxVoidItem DistributeVertBottom SID_DISTRIBUTE_VBOTTOM
+()
+[
+    AutoUpdate = FALSE,
+    FastCall = FALSE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Asynchron;
+
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = TRUE,
+    GroupId = SfxGroupId::Modify;
+]
 
 SfxBoolItem DrawSelect SID_DRAW_SELECT
 
diff --git a/svx/source/svdraw/svdedtv2.cxx b/svx/source/svdraw/svdedtv2.cxx
index 92bfe93fed56..a9af1d278458 100644
--- a/svx/source/svdraw/svdedtv2.cxx
+++ b/svx/source/svdraw/svdedtv2.cxx
@@ -50,6 +50,7 @@
 #include <memory>
 #include <vector>
 #include <vcl/graph.hxx>
+#include <svx/svxids.hrc>
 
 using namespace com::sun::star;
 
@@ -768,25 +769,28 @@ struct ImpDistributeEntry
 
 typedef std::vector<ImpDistributeEntry> ImpDistributeEntryList;
 
-void SdrEditView::DistributeMarkedObjects(weld::Window* pParent)
+void SdrEditView::DistributeMarkedObjects(sal_uInt16 SlotID)
 {
     const size_t nMark(GetMarkedObjectCount());
 
     if(nMark <= 2)
         return;
 
-    SfxItemSet aNewAttr(mpModel->GetItemPool());
+    SvxDistributeHorizontal eHor = SvxDistributeHorizontal::NONE;
+    SvxDistributeVertical eVer = SvxDistributeVertical::NONE;
 
-    SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
-    ScopedVclPtr<AbstractSvxDistributeDialog> pDlg(pFact->CreateSvxDistributeDialog(pParent, aNewAttr));
-
-    sal_uInt16 nResult = pDlg->Execute();
-
-    if(nResult != RET_OK)
-        return;
+    switch (SlotID)
+    {
+        case SID_DISTRIBUTE_HLEFT: eHor = SvxDistributeHorizontal::Left; break;
+        case SID_DISTRIBUTE_HCENTER: eHor = SvxDistributeHorizontal::Center; break;
+        case SID_DISTRIBUTE_HDISTANCE: eHor = SvxDistributeHorizontal::Distance; break;
+        case SID_DISTRIBUTE_HRIGHT: eHor = SvxDistributeHorizontal::Right; break;
+        case SID_DISTRIBUTE_VTOP: eVer = SvxDistributeVertical::Top; break;
+        case SID_DISTRIBUTE_VCENTER: eVer = SvxDistributeVertical::Center; break;
+        case SID_DISTRIBUTE_VDISTANCE: eVer = SvxDistributeVertical::Distance; break;
+        case SID_DISTRIBUTE_VBOTTOM: eVer = SvxDistributeVertical::Bottom; break;
+    }
 
-    SvxDistributeHorizontal eHor = pDlg->GetDistributeHor();
-    SvxDistributeVertical eVer = pDlg->GetDistributeVer();
     ImpDistributeEntryList aEntryList;
     ImpDistributeEntryList::iterator itEntryList;
     sal_uInt32 nFullLength;


More information about the Libreoffice-commits mailing list