summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extras/source/glade/libreoffice-catalog.xml.in3
-rw-r--r--include/sfx2/notebookbar/SfxNotebookBar.hxx2
-rw-r--r--include/vcl/syswin.hxx1
-rw-r--r--sd/Library_sd.mk1
-rw-r--r--sd/UIConfig_simpress.mk1
-rw-r--r--sd/source/ui/animations/SlideTransitionBox.cxx83
-rwxr-xr-xsd/source/ui/animations/SlideTransitionPane.cxx43
-rwxr-xr-xsd/source/ui/inc/SlideTransitionPane.hxx (renamed from sd/source/ui/animations/SlideTransitionPane.hxx)9
-rw-r--r--sd/source/ui/view/ViewShellBase.cxx4
-rw-r--r--sd/uiconfig/simpress/ui/notebookbar.ui34
-rwxr-xr-xsd/uiconfig/simpress/ui/slidetransitionspanelhorizontal.ui263
-rw-r--r--sfx2/source/notebookbar/SfxNotebookBar.cxx7
-rw-r--r--vcl/inc/brdwin.hxx1
-rw-r--r--vcl/source/window/brdwin.cxx8
-rw-r--r--vcl/source/window/syswin.cxx6
15 files changed, 457 insertions, 9 deletions
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index 3b322ae5f482..4dd4593d56e0 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -807,5 +807,8 @@
<glade-widget-class title="Notebookbar with context" name="vcllo-ContextTabControl"
generic-name="ContextTabControl" parent="GtkNotebook"
icon-name="widget-gtk-notebook"/>
+ <glade-widget-class title="Slide Transition Pane" name="sdlo-SlideTransitionBox"
+ generic-name="ShowText" parent="GtkToolButton"
+ icon-name="widget-gtk-toolbutton"/>
</glade-widget-classes>
</glade-catalog>
diff --git a/include/sfx2/notebookbar/SfxNotebookBar.hxx b/include/sfx2/notebookbar/SfxNotebookBar.hxx
index 1b79c78ece09..e68d3f17160e 100644
--- a/include/sfx2/notebookbar/SfxNotebookBar.hxx
+++ b/include/sfx2/notebookbar/SfxNotebookBar.hxx
@@ -21,6 +21,8 @@ namespace sfx2 {
class SFX2_DLLPUBLIC SfxNotebookBar
{
public:
+ static void CloseMethod(SfxBindings& rBindings);
+
/// Function to be called from the sdi's ExecMethod.
static void ExecMethod(SfxBindings& rBindings);
diff --git a/include/vcl/syswin.hxx b/include/vcl/syswin.hxx
index 4c525e72484f..3ea4dcb6589e 100644
--- a/include/vcl/syswin.hxx
+++ b/include/vcl/syswin.hxx
@@ -242,6 +242,7 @@ public:
void SetMenuBarMode( MenuBarMode nMode );
void SetNotebookBar(const OUString& rUIXMLDescription, const css::uno::Reference<css::frame::XFrame>& rFrame);
+ void CloseNotebookBar();
VclPtr<NotebookBar> GetNotebookBar() const;
TaskPaneList* GetTaskPaneList();
diff --git a/sd/Library_sd.mk b/sd/Library_sd.mk
index ae04336e21fb..eab6571024d2 100644
--- a/sd/Library_sd.mk
+++ b/sd/Library_sd.mk
@@ -180,6 +180,7 @@ $(eval $(call gb_Library_add_exception_objects,sd,\
sd/source/ui/animations/CustomAnimationPane \
sd/source/ui/animations/STLPropertySet \
sd/source/ui/animations/SlideTransitionPane \
+ sd/source/ui/animations/SlideTransitionBox \
sd/source/ui/animations/motionpathtag \
sd/source/ui/annotations/annotationmanager \
sd/source/ui/annotations/annotationtag \
diff --git a/sd/UIConfig_simpress.mk b/sd/UIConfig_simpress.mk
index 0309c75c8a23..ef79c951702b 100644
--- a/sd/UIConfig_simpress.mk
+++ b/sd/UIConfig_simpress.mk
@@ -130,6 +130,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/simpress,\
sd/uiconfig/simpress/ui/sidebarslidebackground \
sd/uiconfig/simpress/ui/slidedesigndialog \
sd/uiconfig/simpress/ui/slidetransitionspanel \
+ sd/uiconfig/simpress/ui/slidetransitionspanelhorizontal \
sd/uiconfig/simpress/ui/tabledesignpanel \
sd/uiconfig/simpress/ui/templatedialog \
))
diff --git a/sd/source/ui/animations/SlideTransitionBox.cxx b/sd/source/ui/animations/SlideTransitionBox.cxx
new file mode 100644
index 000000000000..29c3d4f1019b
--- /dev/null
+++ b/sd/source/ui/animations/SlideTransitionBox.cxx
@@ -0,0 +1,83 @@
+/* -*- 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 "ViewShellBase.hxx"
+#include <DrawDocShell.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <SlideTransitionPane.hxx>
+#include <vcl/builderfactory.hxx>
+#include <vcl/layout.hxx>
+
+namespace sd
+{
+
+class SlideTransitionBox : public VclVBox
+{
+ VclPtr<SlideTransitionPane> m_pPane;
+ bool m_bIsInitialized;
+
+public:
+ SlideTransitionBox(vcl::Window* pParent);
+ ~SlideTransitionBox();
+
+ virtual void dispose() override;
+ virtual void StateChanged(StateChangedType nStateChange) override;
+};
+
+VCL_BUILDER_FACTORY(SlideTransitionBox);
+
+SlideTransitionBox::SlideTransitionBox(vcl::Window* pParent)
+ : VclVBox(pParent)
+ , m_bIsInitialized(false)
+{
+}
+
+SlideTransitionBox::~SlideTransitionBox()
+{
+ disposeOnce();
+}
+
+void SlideTransitionBox::dispose()
+{
+ m_pPane.disposeAndClear();
+ VclVBox::dispose();
+}
+
+void SlideTransitionBox::StateChanged(StateChangedType nStateChange)
+{
+ if(SfxViewFrame::Current() && !m_bIsInitialized)
+ {
+ ViewShellBase* pBase = ViewShellBase::GetViewShellBase(SfxViewFrame::Current());
+
+ if(pBase && pBase->GetDocShell())
+ {
+ css::uno::Reference<css::frame::XFrame> xFrame;
+ SdDrawDocument* pDoc = pBase->GetDocShell()->GetDoc();
+ m_pPane = VclPtr<SlideTransitionPane>::Create(this, *pBase, pDoc, xFrame, false);
+ m_pPane->Show();
+ m_pPane->SetSizePixel(GetSizePixel());
+ m_bIsInitialized = true;
+ }
+ }
+ VclVBox::StateChanged(nStateChange);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx b/sd/source/ui/animations/SlideTransitionPane.cxx
index 1778f13a72ed..174d83f96ef3 100755
--- a/sd/source/ui/animations/SlideTransitionPane.cxx
+++ b/sd/source/ui/animations/SlideTransitionPane.cxx
@@ -404,8 +404,33 @@ SlideTransitionPane::SlideTransitionPane(
mbHasSelection( false ),
mbUpdatingControls( false ),
mbIsMainViewChangePending( false ),
+ mbHorizontalLayout( false ),
maLateInitTimer()
{
+ Initialize(pDoc);
+}
+
+SlideTransitionPane::SlideTransitionPane(
+ Window * pParent,
+ ViewShellBase & rBase,
+ SdDrawDocument* pDoc,
+ const css::uno::Reference<css::frame::XFrame>& rxFrame,
+ bool /*bHorizontalLayout*/ ) :
+ PanelLayout( pParent, "SlideTransitionsPanel", "modules/simpress/ui/slidetransitionspanelhorizontal.ui", rxFrame ),
+
+ mrBase( rBase ),
+ mpDrawDoc( pDoc ),
+ mbHasSelection( false ),
+ mbUpdatingControls( false ),
+ mbIsMainViewChangePending( false ),
+ mbHorizontalLayout( true ),
+ maLateInitTimer()
+{
+ Initialize(pDoc);
+}
+
+void SlideTransitionPane::Initialize(SdDrawDocument* pDoc)
+{
get(mpFT_VARIANT, "variant_label");
get(mpLB_VARIANT, "variant_list");
get(mpFT_duration, "duration_label");
@@ -511,9 +536,16 @@ void SlideTransitionPane::DataChanged (const DataChangedEvent& rEvent)
void SlideTransitionPane::UpdateLook()
{
- SetBackground(::sfx2::sidebar::Theme::GetWallpaper(::sfx2::sidebar::Theme::Paint_PanelBackground));
- mpFT_duration->SetBackground(Wallpaper());
- mpFT_SOUND->SetBackground(Wallpaper());
+ if( mbHorizontalLayout )
+ {
+ SetBackground(Wallpaper());
+ }
+ else
+ {
+ SetBackground(::sfx2::sidebar::Theme::GetWallpaper(::sfx2::sidebar::Theme::Paint_PanelBackground));
+ mpFT_duration->SetBackground(Wallpaper());
+ mpFT_SOUND->SetBackground(Wallpaper());
+ }
}
void SlideTransitionPane::onSelectionChanged()
@@ -981,6 +1013,11 @@ IMPL_LINK_TYPED(SlideTransitionPane,EventMultiplexerListener,
break;
default:
+ if (rEvent.meEventId != tools::EventMultiplexerEvent::EID_DISPOSING)
+ {
+ onSelectionChanged();
+ onChangeCurrentPage();
+ }
break;
}
}
diff --git a/sd/source/ui/animations/SlideTransitionPane.hxx b/sd/source/ui/inc/SlideTransitionPane.hxx
index 9407ad14a1df..e5da099de2e5 100755
--- a/sd/source/ui/animations/SlideTransitionPane.hxx
+++ b/sd/source/ui/inc/SlideTransitionPane.hxx
@@ -58,6 +58,12 @@ public:
ViewShellBase & rBase,
SdDrawDocument* pDoc,
const css::uno::Reference<css::frame::XFrame>& rxFrame );
+ explicit SlideTransitionPane(
+ Window * pParent,
+ ViewShellBase & rBase,
+ SdDrawDocument* pDoc,
+ const css::uno::Reference<css::frame::XFrame>& rxFrame,
+ bool bHorizontalLayout );
virtual ~SlideTransitionPane();
virtual void dispose() override;
@@ -88,6 +94,8 @@ private:
void UpdateLook();
+ void Initialize(SdDrawDocument* pDoc);
+
DECL_LINK_TYPED( ApplyToAllButtonClicked, Button*, void );
DECL_LINK_TYPED( PlayButtonClicked, Button*, void );
DECL_LINK_TYPED( AutoPreviewClicked, Button*, void );
@@ -127,6 +135,7 @@ private:
bool mbHasSelection;
bool mbUpdatingControls;
bool mbIsMainViewChangePending;
+ bool mbHorizontalLayout;
typedef ::std::vector< OUString > tSoundListType;
tSoundListType maSoundList;
diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx
index 340948a83b97..2df5ad572516 100644
--- a/sd/source/ui/view/ViewShellBase.cxx
+++ b/sd/source/ui/view/ViewShellBase.cxx
@@ -83,6 +83,8 @@
#include <vcl/msgbox.hxx>
#include <vcl/settings.hxx>
+#include <sfx2/notebookbar/SfxNotebookBar.hxx>
+
#include <tools/diagnose_ex.h>
#include "fubullet.hxx"
@@ -768,6 +770,8 @@ bool ViewShellBase::PrepareClose (bool bUI)
if (bResult)
{
+ sfx2::SfxNotebookBar::CloseMethod(GetFrame()->GetBindings());
+
mpImpl->mbIsClosing = true;
// Forward call to main sub shell.
diff --git a/sd/uiconfig/simpress/ui/notebookbar.ui b/sd/uiconfig/simpress/ui/notebookbar.ui
index da12749dcc01..4bc8d84b27aa 100644
--- a/sd/uiconfig/simpress/ui/notebookbar.ui
+++ b/sd/uiconfig/simpress/ui/notebookbar.ui
@@ -1880,6 +1880,28 @@
</packing>
</child>
<child>
+ <object class="sdlo-SlideTransitionBox" id="SlideTransitionBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="is_important">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="TransitionsLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Transitions</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkBox" id="SlideShowBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -2029,7 +2051,7 @@
</child>
</object>
<packing>
- <property name="position">3</property>
+ <property name="position">4</property>
</packing>
</child>
<child type="tab">
@@ -2039,7 +2061,7 @@
<property name="label" translatable="yes">Slide Show</property>
</object>
<packing>
- <property name="position">3</property>
+ <property name="position">4</property>
<property name="tab_fill">False</property>
</packing>
</child>
@@ -2167,7 +2189,7 @@
</child>
</object>
<packing>
- <property name="position">4</property>
+ <property name="position">5</property>
</packing>
</child>
<child type="tab">
@@ -2177,7 +2199,7 @@
<property name="label" translatable="yes">Review</property>
</object>
<packing>
- <property name="position">4</property>
+ <property name="position">5</property>
<property name="tab_fill">False</property>
</packing>
</child>
@@ -2541,7 +2563,7 @@
</child>
</object>
<packing>
- <property name="position">5</property>
+ <property name="position">6</property>
</packing>
</child>
<child type="tab">
@@ -2551,7 +2573,7 @@
<property name="label" translatable="yes">View</property>
</object>
<packing>
- <property name="position">5</property>
+ <property name="position">6</property>
<property name="tab_fill">False</property>
</packing>
</child>
diff --git a/sd/uiconfig/simpress/ui/slidetransitionspanelhorizontal.ui b/sd/uiconfig/simpress/ui/slidetransitionspanelhorizontal.ui
new file mode 100755
index 000000000000..652bdf817656
--- /dev/null
+++ b/sd/uiconfig/simpress/ui/slidetransitionspanelhorizontal.ui
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.3 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <requires lib="LibreOffice" version="1.0"/>
+ <object class="GtkBox" id="SlideTransitionsPanel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkBox" id="box4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkAlignment" id="transitions_icons">
+ <property name="width_request">500</property>
+ <property name="height_request">75</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="duration_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">Duration:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="VclComboBoxNumeric" id="transition_duration:0.00sec">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_markup" translatable="yes">Select the speed of Slide Transition.</property>
+ <property name="tooltip_text" translatable="yes">Select the speed of Slide Transition.</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="variant_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Variant:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="variant_list">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="sound_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">Sound:</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="sound_list">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <items>
+ <item translatable="yes">No sound</item>
+ <item translatable="yes">Stop previous sound</item>
+ <item translatable="yes">Other sound...</item>
+ </items>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="loop_sound">
+ <property name="label" translatable="yes">Loop until next sound</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="rb_mouse_click">
+ <property name="label" translatable="yes">On mouse click</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">rb_auto_after</property>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">0</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="rb_auto_after">
+ <property name="label" translatable="yes">Automatically after:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="auto_after_value:0sec">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="text" translatable="yes">0,00</property>
+ <property name="digits">2</property>
+ </object>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="auto_preview">
+ <property name="label" translatable="yes">Automatic Preview</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="buttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">center</property>
+ <child>
+ <object class="GtkButton" id="apply_to_all">
+ <property name="label" translatable="yes">Apply Transition to All Slides</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="top_attach">0</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="play">
+ <property name="label" translatable="yes">Play</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="image">image1</property>
+ <property name="image_position">right</property>
+ <property name="always_show_image">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">7</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixbuf">sd/res/playblue_16.png</property>
+ </object>
+</interface>
diff --git a/sfx2/source/notebookbar/SfxNotebookBar.cxx b/sfx2/source/notebookbar/SfxNotebookBar.cxx
index 5640e46c374e..8652df76c1dc 100644
--- a/sfx2/source/notebookbar/SfxNotebookBar.cxx
+++ b/sfx2/source/notebookbar/SfxNotebookBar.cxx
@@ -22,6 +22,13 @@ using namespace sfx2;
using namespace css::uno;
using namespace css::ui;
+void SfxNotebookBar::CloseMethod(SfxBindings& rBindings)
+{
+ SfxFrame& rFrame = rBindings.GetDispatcher_Impl()->GetFrame()->GetFrame();
+ if (rFrame.GetSystemWindow()->GetNotebookBar())
+ rFrame.GetSystemWindow()->CloseNotebookBar();
+}
+
void SfxNotebookBar::ExecMethod(SfxBindings& rBindings)
{
SvtViewOptions aViewOpt(E_WINDOW, "notebookbar");
diff --git a/vcl/inc/brdwin.hxx b/vcl/inc/brdwin.hxx
index 49c60c9ba190..fd3859b9f67c 100644
--- a/vcl/inc/brdwin.hxx
+++ b/vcl/inc/brdwin.hxx
@@ -177,6 +177,7 @@ public:
void SetMenuBarMode( bool bHide );
void SetNotebookBar(const OUString& rUIXMLDescription, const css::uno::Reference<css::frame::XFrame>& rFrame);
+ void CloseNotebookBar();
const VclPtr<NotebookBar>& GetNotebookBar() const { return mpNotebookBar; }
void SetMinOutputSize( long nWidth, long nHeight )
diff --git a/vcl/source/window/brdwin.cxx b/vcl/source/window/brdwin.cxx
index bf4270c2f795..32606f7040fe 100644
--- a/vcl/source/window/brdwin.cxx
+++ b/vcl/source/window/brdwin.cxx
@@ -2183,6 +2183,14 @@ void ImplBorderWindow::SetNotebookBar(const OUString& rUIXMLDescription, const c
Resize();
}
+void ImplBorderWindow::CloseNotebookBar()
+{
+ if (mpNotebookBar)
+ mpNotebookBar.disposeAndClear();
+ mpNotebookBar = nullptr;
+ Resize();
+}
+
void ImplBorderWindow::GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const
{
diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx
index bdf2e44a6ffd..ca0f47feaa95 100644
--- a/vcl/source/window/syswin.cxx
+++ b/vcl/source/window/syswin.cxx
@@ -939,6 +939,12 @@ void SystemWindow::SetNotebookBar(const OUString& rUIXMLDescription, const css::
}
}
+void SystemWindow::CloseNotebookBar()
+{
+ static_cast<ImplBorderWindow*>(mpWindowImpl->mpBorderWindow.get())->CloseNotebookBar();
+ maNotebookBarUIFile = "";
+}
+
VclPtr<NotebookBar> SystemWindow::GetNotebookBar() const
{
return static_cast<ImplBorderWindow*>(mpWindowImpl->mpBorderWindow.get())->GetNotebookBar();