[Libreoffice-commits] core.git: icon-themes/breeze icon-themes/galaxy icon-themes/tango officecfg/registry sd/inc sd/Library_sd.mk sd/sdi sd/source sd/uiconfig sd/util

Philippe Jung phil.jung at free.fr
Wed Nov 18 06:09:54 PST 2015


 dev/null                                                                 |binary
 icon-themes/breeze/cmd/lc_toggletabbarvisibility.png                     |binary
 icon-themes/galaxy/cmd/lc_toggletabbarvisibility.png                     |binary
 icon-themes/tango/cmd/lc_toggletabbarvisibility.png                      |binary
 officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu          |   11 
 officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu |   16 
 sd/Library_sd.mk                                                         |    1 
 sd/inc/app.hrc                                                           |   23 
 sd/inc/sdcommands.h                                                      |    4 
 sd/sdi/ViewShellBase.sdi                                                 |   28 
 sd/sdi/drviewsh.sdi                                                      |   15 
 sd/sdi/sdraw.sdi                                                         |   75 +-
 sd/source/filter/ppt/pptin.cxx                                           |    2 
 sd/source/ui/app/strings.src                                             |   23 
 sd/source/ui/controller/displaymodecontroller.cxx                        |  316 ++++++++++
 sd/source/ui/controller/displaymodecontroller.hxx                        |   53 +
 sd/source/ui/framework/module/SlideSorterModule.cxx                      |    2 
 sd/source/ui/framework/module/ViewTabBarModule.cxx                       |    4 
 sd/source/ui/framework/tools/FrameworkHelper.cxx                         |  113 +--
 sd/source/ui/func/fusearch.cxx                                           |   10 
 sd/source/ui/inc/FrameView.hxx                                           |   11 
 sd/source/ui/inc/strings.hrc                                             |   31 
 sd/source/ui/inc/unokywds.hxx                                            |    7 
 sd/source/ui/slidesorter/controller/SlsSlotManager.cxx                   |   16 
 sd/source/ui/view/GraphicViewShellBase.cxx                               |   10 
 sd/source/ui/view/ViewShellBase.cxx                                      |  104 ++-
 sd/source/ui/view/drviews1.cxx                                           |    6 
 sd/source/ui/view/drviews5.cxx                                           |   17 
 sd/source/ui/view/drviews7.cxx                                           |   86 +-
 sd/source/ui/view/drviewsa.cxx                                           |   14 
 sd/source/ui/view/drviewse.cxx                                           |   89 --
 sd/source/ui/view/frmview.cxx                                            |   83 --
 sd/source/ui/view/outlnvsh.cxx                                           |   20 
 sd/uiconfig/simpress/toolbar/standardbar.xml                             |    3 
 sd/util/sd.component                                                     |    4 
 35 files changed, 836 insertions(+), 361 deletions(-)

New commits:
commit 229fc164dc1773484b74eca016863cf68860e81b
Author: Philippe Jung <phil.jung at free.fr>
Date:   Fri Jul 10 17:02:44 2015 +0200

    Impress: Rework the way the display modes are presented.
    
    TODO: take into account remarks from Gerrit
    
    New combo to select display mode among:
     - Slide edition (Normal)
     - Outline
     - Notes
     - Slide sorter
     - Slide master
     - Notes master
     - Handout (master, as we are designing the template used to generate
       the handout)
    
    The combo is based on uno command .uno:DisplayMode
    
    Center pane tabs are hidden by default. A new uno dispatch
    command (.uno:ToggleTabBarVisibility) is available to show/hide
    this tab bar.
    
    Modified uno dispatch commands:
    
    No uno name has been modified.
    
    .uno:DiaMode :
    SID_DIAMODE renamed SID_SLIDER_SORTER_MODE
    
    .uno:OutlineMode
    SID_OUTLINEMODE renamed SID_OUTLINE_MODE
    
    .uno:NotesMode
    No change
    
    .uno:HandoutMode
    SID_HANDOUT_MODE renamed SID_HANDOUT_MASTER_MODE
    All internal code also considers the edit mode as master
    
    .uno:SlideMasterPage
    SID_SLIDE_MASTERPAGE renamed SID_SLIDE_MASTER_MODE
    If the input parameter SfxBoolItem Isactive is true or not provided,
    activates Slide Master mode. If parameter is false, activates the
    "Normal" (slide editing) mode.
    
    .uno:NotesMasterPage
    SID_NOTES_MASTERPAGE renamed SID_NOTES_MASTER_MODE
    If the input parameter SfxBoolItem Isactive is true or not provided,
    activates Notes Master mode. If parameter is false, activates the
    "Notes" mode.
    
    Modified behaviours: Now only one mode can be chosen. It is possible to
    navigate from a mode to any other mode.
    Previous behaviour: the following navigation
         Normal -> Slide Master -> Notes -> Normal
    was displaying slide master. It was required to activate Normal once more
    to get back to normal.
    Now the same commands will display the requested mode.
    
    Still to come (at least):
    - Fix reopen the last display mode.
    - Center pane tabs are now presenting all buttons for all modes (TODO).
    
    Change-Id: I11ab59d2f3caa9149260c5e55d44d598d0ce3390
    Reviewed-on: https://gerrit.libreoffice.org/16723
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/icon-themes/breeze/cmd/lc_toggletabbarvisibility.png b/icon-themes/breeze/cmd/lc_toggletabbarvisibility.png
new file mode 100644
index 0000000..1bc7df4
Binary files /dev/null and b/icon-themes/breeze/cmd/lc_toggletabbarvisibility.png differ
diff --git a/icon-themes/galaxy/cmd/lc_toggletabbarvisibility.png b/icon-themes/galaxy/cmd/lc_toggletabbarvisibility.png
new file mode 100644
index 0000000..1bc7df4
Binary files /dev/null and b/icon-themes/galaxy/cmd/lc_toggletabbarvisibility.png differ
diff --git a/icon-themes/tango/cmd/lc_displaymode.png b/icon-themes/tango/cmd/lc_displaymode.png
deleted file mode 100644
index 481407d..0000000
Binary files a/icon-themes/tango/cmd/lc_displaymode.png and /dev/null differ
diff --git a/icon-themes/tango/cmd/lc_toggletabbarvisibility.png b/icon-themes/tango/cmd/lc_toggletabbarvisibility.png
new file mode 100644
index 0000000..1bc7df4
Binary files /dev/null and b/icon-themes/tango/cmd/lc_toggletabbarvisibility.png differ
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
index 6daf719..3a28f01 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
@@ -530,6 +530,17 @@
           <value>com.sun.star.comp.sd.SlideLayoutController</value>
         </prop>
       </node>
+      <node oor:name="DisplayMode" oor:op="replace">
+        <prop oor:name="Command">
+          <value>.uno:DisplayMode</value>
+        </prop>
+        <prop oor:name="Module">
+          <value>com.sun.star.presentation.PresentationDocument</value>
+        </prop>
+        <prop oor:name="Controller">
+          <value>com.sun.star.comp.sd.DisplayModeController</value>
+        </prop>
+      </node>
       <node oor:name="InsertPage" oor:op="replace">
         <prop oor:name="Command">
           <value>.uno:InsertPage</value>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu
index 10580cf..33c9eb9 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu
@@ -894,6 +894,22 @@
           <value xml:lang="en-US">Notes</value>
         </prop>
       </node>
+      <node oor:name=".uno:DisplayMode" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Display Mode</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:ToggleTabBarVisibility" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Toggle Tab bar visibility</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
       <node oor:name=".uno:HandoutMode" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
           <value xml:lang="en-US">H~andout Master</value>
diff --git a/sd/Library_sd.mk b/sd/Library_sd.mk
index 7a9078f..b86c51c 100644
--- a/sd/Library_sd.mk
+++ b/sd/Library_sd.mk
@@ -194,6 +194,7 @@ $(eval $(call gb_Library_add_exception_objects,sd,\
 	sd/source/ui/app/sdxfer \
 	sd/source/ui/app/tmplctrl \
 	sd/source/ui/controller/slidelayoutcontroller \
+	sd/source/ui/controller/displaymodecontroller \
 	sd/source/ui/dlg/AnimationChildWindow \
 	sd/source/ui/dlg/LayerTabBar \
 	sd/source/ui/dlg/NavigatorChildWindow \
diff --git a/sd/inc/app.hrc b/sd/inc/app.hrc
index f75757e..c9dd138 100644
--- a/sd/inc/app.hrc
+++ b/sd/inc/app.hrc
@@ -69,9 +69,10 @@
     // FREE
 #define SID_CONVERT_TO_3D_LATHE             (SID_SD_START+8)
 #define SID_DRAWINGMODE                     (SID_SD_START+9)
-#define SID_OUTLINEMODE                     (SID_SD_START+10)
-#define SID_DIAMODE                         (SID_SD_START+11)
-    // FREE
+#define SID_OUTLINE_MODE                    (SID_SD_START+10)
+#define SID_SLIDE_SORTER_MODE               (SID_SD_START+11)
+#define SID_DISPLAY_MODE                    (SID_SD_START+12)
+#define SID_TOGGLE_TABBAR_VISIBILITY        (SID_SD_START+13)
 #define SID_INSERTPAGE                      (SID_SD_START+14)
 #define SID_INSERTFILE                      (SID_SD_START+15)
 #define SID_INSERTSYMBOL                    (SID_SD_START+16)
@@ -123,18 +124,18 @@
 #define SID_ANIMATION_OBJECTS               (SID_SD_START+62)
 #define SID_ANIMATION_EFFECTS               (SID_SD_START+63)
 #define SID_PRESENTATION_LAYOUT             (SID_SD_START+64)
-// In svxids.hrc: SID_BEZIER_CONVERT            (SID_SD_START+65)
-// In svxids.hrc: SID_BEZIER_EDGE               (SID_SD_START+66)
-// In svxids.hrc: SID_BEZIER_SYMMTR             (SID_SD_START+67)
+// In svxids.hrc: SID_BEZIER_CONVERT        (SID_SD_START+65)
+// In svxids.hrc: SID_BEZIER_EDGE           (SID_SD_START+66)
+// In svxids.hrc: SID_BEZIER_SYMMTR         (SID_SD_START+67)
 #define SID_PRESENTATION_TEMPLATES          (SID_SD_START+68)
-#define SID_NOTESMODE                       (SID_SD_START+69)
-#define SID_HANDOUTMODE                     (SID_SD_START+70)
+#define SID_NOTES_MODE                      (SID_SD_START+69)
+#define SID_HANDOUT_MASTER_MODE             (SID_SD_START+70)
 #define SID_LINEEND_POLYGON                 (SID_SD_START+71)
     // FREE
 #define SID_GRAPHIC_EXPORT                  (SID_SD_START+73)
 #define SID_SWITCH_POINTEDIT                (SID_SD_START+74)
     // FREE
-// In svxids.hrc: SID_TEXTEDIT                  (SID_SD_START+76)
+// In svxids.hrc: SID_TEXTEDIT              (SID_SD_START+76)
 #define SID_SET_SNAPITEM                    (SID_SD_START+77)
     // FREE
 #define SID_DELETE_PAGE                     (SID_SD_START+80)
@@ -388,9 +389,9 @@
 #define SID_SUMMARY_PAGE                    (SID_SD_START+344)
 #define SID_LEAVE_ALL_GROUPS                (SID_SD_START+345)
     // FREE
-#define SID_SLIDE_MASTERPAGE                (SID_SD_START+348)
+#define SID_SLIDE_MASTER_MODE               (SID_SD_START+348)
 #define SID_HANDOUT_MASTERPAGE              (SID_SD_START+349)
-#define SID_NOTES_MASTERPAGE                (SID_SD_START+350)
+#define SID_NOTES_MASTER_MODE               (SID_SD_START+350)
     // FREE
 #define SID_INSERTPAGE_QUICK                (SID_SD_START+352)
     // FREE
diff --git a/sd/inc/sdcommands.h b/sd/inc/sdcommands.h
index 1d3502f..4642124 100644
--- a/sd/inc/sdcommands.h
+++ b/sd/inc/sdcommands.h
@@ -56,7 +56,7 @@
 #define CMD_SID_GLUE_VERTALIGN_CENTER               ".uno:GlueVertAlignCenter"
 #define CMD_SID_GLUE_VERTALIGN_TOP                  ".uno:GlueVertAlignTop"
 #define CMD_SID_GRID_FRONT                          ".uno:GridFront"
-#define CMD_SID_HANDOUTMODE                         ".uno:HandoutMode"
+#define CMD_SID_HANDOUT_MASTER_MODE                 ".uno:HandoutMode"
 #define CMD_SID_HELPLINES_FRONT                     ".uno:HelplinesFront"
 #define CMD_SID_HELPLINES_USE                       ".uno:HelplinesUse"
 #define CMD_SID_HELPLINES_VISIBLE                   ".uno:HelplinesVisible"
@@ -74,7 +74,7 @@
 #define CMD_SID_NAME_GROUP                          ".uno:NameGroup"
 #define CMD_SID_OBJECT_TITLE_DESCRIPTION            ".uno:ObjectTitleDescription"
 #define CMD_SID_CONNECTION_NEW_ROUTING              ".uno:NewRouting"
-#define CMD_SID_NOTESMODE                           ".uno:NotesMode"
+#define CMD_SID_NOTES_MODE                          ".uno:NotesMode"
 #define CMD_SID_POSITION                            ".uno:ObjectPosition"
 #define CMD_SID_ORIGINAL_SIZE                       ".uno:OriginalSize"
 #define CMD_SID_OUTLINE_TEXT_AUTOFIT                ".uno.OutlineTextAutofit"
diff --git a/sd/sdi/ViewShellBase.sdi b/sd/sdi/ViewShellBase.sdi
index 98da5f5..0f1bcb8 100644
--- a/sd/sdi/ViewShellBase.sdi
+++ b/sd/sdi/ViewShellBase.sdi
@@ -52,31 +52,51 @@ interface ViewShellBaseView
         ExecMethod = Execute;
         StateMethod = GetState;
     ]
+    SID_TOGGLE_TABBAR_VISIBILITY
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+    ]
+    SID_DISPLAY_MODE
+    [
+        ExecMethod = Execute;
+        StateMethod = GetState;
+    ]
     SID_DRAWINGMODE
     [
         ExecMethod = Execute;
         StateMethod = GetState;
     ]
-    SID_DIAMODE
+    SID_SLIDE_SORTER_MODE
     [
         ExecMethod = Execute;
         StateMethod = GetState;
     ]
-    SID_OUTLINEMODE
+    SID_OUTLINE_MODE
     [
         ExecMethod = Execute;
         StateMethod = GetState;
     ]
-    SID_NOTESMODE
+    SID_NOTES_MODE
     [
         ExecMethod = Execute;
         StateMethod = GetState;
     ]
-    SID_HANDOUTMODE
+    SID_HANDOUT_MASTER_MODE
     [
         ExecMethod = Execute;
         StateMethod = GetState;
     ]
+    SID_SLIDE_MASTER_MODE
+    [
+        ExecMethod = Execute ;
+        StateMethod = GetState ;
+    ]
+    SID_NOTES_MASTER_MODE
+    [
+        ExecMethod = Execute ;
+        StateMethod = GetState ;
+    ]
     SID_WIN_FULLSCREEN
     [
         ExecMethod = Execute;
diff --git a/sd/sdi/drviewsh.sdi b/sd/sdi/drviewsh.sdi
index 682c7ec..2e9f7a3 100644
--- a/sd/sdi/drviewsh.sdi
+++ b/sd/sdi/drviewsh.sdi
@@ -135,21 +135,6 @@ interface ImpressEditView : DrawView
         ExecMethod = FuTemporary ;
         StateMethod = GetMenuState ;
     ]
-    SID_SLIDE_MASTERPAGE // ole : no, status : play rec
-    [
-        ExecMethod = FuSupport ;
-        StateMethod = GetMenuState ;
-    ]
-    SID_NOTES_MASTERPAGE // ole : no, status : play rec
-    [
-        ExecMethod = FuSupport ;
-        StateMethod = GetMenuState ;
-    ]
-    SID_HANDOUT_MASTERPAGE // ole : no, status : play rec
-    [
-        ExecMethod = FuSupport ;
-        StateMethod = GetMenuState ;
-    ]
     SID_STYLE_FAMILY
     [
         ExecMethod = FuSupport ;
diff --git a/sd/sdi/sdraw.sdi b/sd/sdi/sdraw.sdi
index fd0e8bc..82fa634 100644
--- a/sd/sdi/sdraw.sdi
+++ b/sd/sdi/sdraw.sdi
@@ -1932,8 +1932,7 @@ SfxVoidItem DeSelect SID_UNSELECT
     GroupId = GID_EDIT;
 ]
 
-SfxBoolItem DiaMode SID_DIAMODE
-
+SfxBoolItem DiaMode SID_SLIDE_SORTER_MODE
 [
     /* flags: */
     AutoUpdate = FALSE,
@@ -2944,7 +2943,7 @@ SfxVoidItem HandoutMasterPage SID_HANDOUT_MASTERPAGE
     GroupId = GID_VIEW;
 ]
 
-SfxBoolItem HandoutMode SID_HANDOUTMODE
+SfxBoolItem HandoutMode SID_HANDOUT_MASTER_MODE
 
 [
     /* flags: */
@@ -4160,6 +4159,56 @@ SfxUInt32Item AssignLayout SID_ASSIGN_LAYOUT
     GroupId = GID_MODIFY;
 ]
 
+
+SfxBoolItem ToggleTabBarVisibility SID_TOGGLE_TABBAR_VISIBILITY
+
+[
+    /* flags: */
+    AutoUpdate = TRUE,
+    Cachable = Cachable
+    FastCall = FALSE,
+    HasCoreId = FALSE,
+    HasDialog = FALSE,
+    ReadOnlyDoc = TRUE,
+    Toggle = TRUE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Synchron;
+
+    /* config: */
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    StatusBarConfig = FALSE,
+    ToolBoxConfig = TRUE,
+    GroupId = GID_VIEW;
+]
+
+
+SfxVoidItem DisplayMode SID_DISPLAY_MODE
+()
+[
+    /* flags: */
+    AutoUpdate = FALSE,
+    Cachable = Cachable
+    FastCall = FALSE,
+    HasCoreId = FALSE,
+    HasDialog = TRUE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Synchron;
+
+    /* config: */
+    AccelConfig = FALSE,
+    MenuConfig = FALSE,
+    StatusBarConfig = FALSE,
+    ToolBoxConfig = FALSE,
+    GroupId = GID_VIEW;
+]
+
 SfxVoidItem ModifyPresentationObject SID_PRESENTATIONOBJECT
 ()
 [
@@ -4463,8 +4512,8 @@ SfxBoolItem NewRouting SID_CONNECTION_NEW_ROUTING
     GroupId = GID_DRAWING;
 ]
 
-SfxVoidItem NotesMasterPage SID_NOTES_MASTERPAGE
-(SfxBoolItem Isactive ID_VAL_ISACTIVE)
+SfxVoidItem NotesMasterPage SID_NOTES_MASTER_MODE
+()
 [
     /* flags: */
     AutoUpdate = FALSE,
@@ -4479,10 +4528,7 @@ SfxVoidItem NotesMasterPage SID_NOTES_MASTERPAGE
     RecordPerSet;
     Synchron;
 
-    /* status: */
-    SlotType = SfxBoolItem
-
-    /* config: */
+     /* config: */
     AccelConfig = TRUE,
     MenuConfig = TRUE,
     StatusBarConfig = FALSE,
@@ -4490,7 +4536,7 @@ SfxVoidItem NotesMasterPage SID_NOTES_MASTERPAGE
     GroupId = GID_VIEW;
 ]
 
-SfxBoolItem NotesMode SID_NOTESMODE
+SfxVoidItem NotesMode SID_NOTES_MODE
 
 [
     /* flags: */
@@ -4592,7 +4638,7 @@ SfxVoidItem OriginalSize SID_ORIGINAL_SIZE
     GroupId = GID_MODIFY;
 ]
 
-SfxBoolItem OutlineMode SID_OUTLINEMODE
+SfxVoidItem OutlineMode SID_OUTLINE_MODE
 
 [
     /* flags: */
@@ -5615,8 +5661,8 @@ SfxBoolItem SlideChangeWindow SID_SLIDE_TRANSITIONS_PANEL
     GroupId = GID_MODIFY;
 ]
 
-SfxVoidItem SlideMasterPage SID_SLIDE_MASTERPAGE
-(SfxBoolItem Isactive ID_VAL_ISACTIVE)
+SfxVoidItem SlideMasterPage SID_SLIDE_MASTER_MODE
+()
 [
     /* flags: */
     AutoUpdate = FALSE,
@@ -5631,9 +5677,6 @@ SfxVoidItem SlideMasterPage SID_SLIDE_MASTERPAGE
     RecordPerSet;
     Synchron;
 
-    /* status: */
-    SlotType = SfxBoolItem
-
     /* config: */
     AccelConfig = TRUE,
     MenuConfig = TRUE,
diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx
index 5a1084a..4d65355 100644
--- a/sd/source/filter/ppt/pptin.cxx
+++ b/sd/source/filter/ppt/pptin.cxx
@@ -1277,7 +1277,7 @@ bool ImplSdPPTImport::Import()
                 }
                 pFrameView->SetPageKind( ePageKind );
                 pFrameView->SetSelectedPage( nSelectedPage );
-                pFrameView->SetViewShEditMode( eEditMode, ePageKind );
+                pFrameView->SetViewShEditMode( eEditMode );
             }
         }
         DffRecordHeader aCustomShowHeader;
diff --git a/sd/source/ui/app/strings.src b/sd/source/ui/app/strings.src
index 6308c02..caa5752 100644
--- a/sd/source/ui/app/strings.src
+++ b/sd/source/ui/app/strings.src
@@ -120,14 +120,18 @@ String STR_UNDO_BEZCLOSE
 {
     Text [ en-US ] = "Close Polygon" ;
 };
-String STR_SLIDE_MODE
+String STR_SLIDE_SORTER_MODE
 {
     Text [ en-US ] = "Slide Sorter" ;
 };
-String STR_DRAW_MODE
+String STR_NORMAL_MODE
 {
     Text [ en-US ] = "Normal" ;
 };
+String STR_SLIDE_MASTER_MODE
+{
+    Text [ en-US ] = "Slide Master" ;
+};
 String STR_OUTLINE_MODE
 {
     Text [ en-US ] = "Outline" ;
@@ -136,7 +140,11 @@ String STR_NOTES_MODE
 {
     Text [ en-US ] = "Notes" ;
 };
-String STR_HANDOUT_MODE
+String STR_NOTES_MASTER_MODE
+{
+    Text [ en-US ] = "Notes Master" ;
+};
+String STR_HANDOUT_MASTER_MODE
 {
     Text [ en-US ] = "Handout" ;
 };
@@ -234,7 +242,14 @@ String STR_AUTOLAYOUT_HANDOUT9
 {
     Text [ en-US ] = "Nine Slides" ;
 };
-
+String STR_DISPLAYMODE_EDITMODES
+{
+    Text [ en-US ] = "Edit Modes" ;
+};
+String STR_DISPLAYMODE_MASTERMODES
+{
+    Text [ en-US ] = "Master Modes" ;
+};
 String STR_AUTOLAYOUT_NOTES
 {
     Text [ en-US ] = "Notes" ;
diff --git a/sd/source/ui/controller/displaymodecontroller.cxx b/sd/source/ui/controller/displaymodecontroller.cxx
new file mode 100644
index 0000000..32209e6
--- /dev/null
+++ b/sd/source/ui/controller/displaymodecontroller.cxx
@@ -0,0 +1,316 @@
+/* -*- 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/.
+ *
+ */
+
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/text/WritingMode.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/DrawViewMode.hpp>
+
+#include <osl/mutex.hxx>
+
+#include <vcl/svapp.hxx>
+#include <vcl/toolbox.hxx>
+
+#include <svl/languageoptions.hxx>
+
+#include <svtools/ctrltool.hxx>
+#include <svtools/ctrlbox.hxx>
+#include <svtools/toolbarmenu.hxx>
+#include <svtools/valueset.hxx>
+
+#include <toolkit/helper/vclunohelper.hxx>
+#include <comphelper/processfactory.hxx>
+
+#include <sfx2/imagemgr.hxx>
+
+#include "app.hrc"
+#include "facreg.hxx"
+#include "glob.hrc"
+#include "strings.hrc"
+#include "res_bmp.hrc"
+#include "sdresid.hxx"
+#include "pres.hxx"
+#include "displaymodecontroller.hxx"
+#include "ViewShellBase.hxx"
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::beans;
+
+namespace sd
+{
+
+// Component to select which display mode has to be used.
+// Composed of a combobox in the toolbar and a popup menu to select
+// the value
+
+class DisplayModeToolbarMenu : public svtools::ToolbarMenu
+{
+public:
+    DisplayModeToolbarMenu( DisplayModeController& rController,
+        const Reference< XFrame >& xFrame, vcl::Window* pParent );
+    virtual ~DisplayModeToolbarMenu();
+    virtual void dispose() SAL_OVERRIDE;
+
+protected:
+    DECL_LINK_TYPED( SelectToolbarMenuHdl, ToolbarMenu*, void );
+    DECL_LINK_TYPED( SelectValueSetHdl, ValueSet*, void );
+    void SelectHdl(void*);
+
+private:
+    DisplayModeController& mrController;
+    Reference< XFrame > mxFrame;
+    VclPtr<ValueSet> mpDisplayModeSet1;
+    VclPtr<ValueSet> mpDisplayModeSet2;
+};
+
+struct snewfoil_value_info
+{
+    sal_uInt16  mnId;
+    sal_uInt16  mnBmpResId;
+    sal_uInt16  mnStrResId;
+    OUString    msUnoCommand;
+};
+
+static const snewfoil_value_info editmodes[] =
+{
+    {1,
+        BMP_DISPLAYMODE_SLIDE,
+        STR_NORMAL_MODE,
+        OUString(".uno:NormalMultiPaneGUI") },
+    {2,
+        BMP_DISPLAYMODE_NOTES,
+        STR_NOTES_MODE,
+        OUString(".uno:NotesMode") },
+    {3,
+        BMP_DISPLAYMODE_OUTLINE,
+        STR_OUTLINE_MODE,
+        OUString(".uno:OutlineMode") },
+    {4,
+        BMP_DISPLAYMODE_SLIDE_SORTER,
+        STR_SLIDE_SORTER_MODE,
+        OUString(".uno:DiaMode") },
+    {0, 0, 0, OUString() }
+};
+
+static const snewfoil_value_info mastermodes[] =
+{
+    {5,
+        BMP_DISPLAYMODE_SLIDE_MASTER,
+        STR_SLIDE_MASTER_MODE,
+        OUString(".uno:SlideMasterPage") },
+    {6,
+        BMP_DISPLAYMODE_NOTES_MASTER,
+        STR_NOTES_MASTER_MODE,
+        OUString(".uno:NotesMasterPage") },
+    {7,
+        BMP_DISPLAYMODE_HANDOUT_MASTER,
+        STR_HANDOUT_MASTER_MODE,
+        OUString(".uno:HandoutMode") },
+    {0, 0, 0, OUString() }
+};
+
+
+static void fillLayoutValueSet( ValueSet* pValue, const snewfoil_value_info* pInfo )
+{
+    Size aLayoutItemSize;
+    for( ; pInfo->mnId; pInfo++ )
+    {
+        OUString aText( SD_RESSTR( pInfo->mnStrResId ) );
+        BitmapEx aBmp(  SdResId( pInfo->mnBmpResId ) );
+
+        pValue->InsertItem(pInfo->mnId, Image(aBmp), aText);
+
+        aLayoutItemSize.Width()  = std::max( aLayoutItemSize.Width(),  aBmp.GetSizePixel().Width()  );
+        aLayoutItemSize.Height() = std::max( aLayoutItemSize.Height(), aBmp.GetSizePixel().Height() );
+    }
+
+    aLayoutItemSize = pValue->CalcItemSizePixel( aLayoutItemSize );
+    pValue->SetSizePixel( pValue->CalcWindowSizePixel( aLayoutItemSize ) );
+}
+
+DisplayModeToolbarMenu::DisplayModeToolbarMenu( DisplayModeController& rController,
+    const Reference< XFrame >& xFrame, vcl::Window* pParent )
+: svtools::ToolbarMenu(xFrame, pParent, WB_CLIPCHILDREN )
+, mrController( rController )
+, mxFrame(xFrame)
+, mpDisplayModeSet1( 0 )
+, mpDisplayModeSet2( 0 )
+{
+    const sal_Int32 LAYOUT_BORDER_PIX = 7;
+
+    OUString aTitle1( SD_RESSTR( STR_DISPLAYMODE_EDITMODES ) );
+    OUString aTitle2( SD_RESSTR( STR_DISPLAYMODE_MASTERMODES ) );
+
+    SvtLanguageOptions aLanguageOptions;
+
+    SetSelectHdl( LINK( this, DisplayModeToolbarMenu, SelectToolbarMenuHdl ) );
+
+    mpDisplayModeSet1 = createEmptyValueSetControl();
+    mpDisplayModeSet1->SetSelectHdl( LINK( this, DisplayModeToolbarMenu, SelectValueSetHdl ) );
+
+    sal_Int16 nColCount = 2;
+    mpDisplayModeSet1->SetColCount( nColCount );
+    fillLayoutValueSet( mpDisplayModeSet1, &editmodes[0] );
+
+    Size aSize( mpDisplayModeSet1->GetOutputSizePixel() );
+    aSize.Width() += (mpDisplayModeSet1->GetColCount() + 1) * LAYOUT_BORDER_PIX;
+    aSize.Height() += (mpDisplayModeSet1->GetLineCount() +1) * LAYOUT_BORDER_PIX;
+    mpDisplayModeSet1->SetOutputSizePixel( aSize );
+
+    appendEntry( -1, aTitle1 );
+    appendEntry( 1, mpDisplayModeSet1 );
+
+    mpDisplayModeSet2 = VclPtr<ValueSet>::Create( this, WB_TABSTOP | WB_MENUSTYLEVALUESET | WB_FLATVALUESET | WB_NOBORDER | WB_NO_DIRECTSELECT );
+
+    mpDisplayModeSet2->SetSelectHdl( LINK( this, DisplayModeToolbarMenu, SelectValueSetHdl ) );
+    mpDisplayModeSet2->SetColCount( nColCount );
+    mpDisplayModeSet2->EnableFullItemMode( false );
+    mpDisplayModeSet2->SetColor( GetControlBackground() );
+
+    fillLayoutValueSet( mpDisplayModeSet2, &mastermodes[0] );
+
+    aSize = mpDisplayModeSet2->GetOutputSizePixel();
+    aSize.Width() += (mpDisplayModeSet2->GetColCount() + 1) * LAYOUT_BORDER_PIX;
+    aSize.Height() += (mpDisplayModeSet2->GetLineCount() + 1) * LAYOUT_BORDER_PIX;
+    mpDisplayModeSet2->SetOutputSizePixel( aSize );
+
+    appendEntry( -1, aTitle2 );
+    appendEntry( 2, mpDisplayModeSet2 );
+
+    SetOutputSizePixel( getMenuSize() );
+}
+
+DisplayModeToolbarMenu::~DisplayModeToolbarMenu()
+{
+    disposeOnce();
+}
+
+void DisplayModeToolbarMenu::dispose()
+{
+    mpDisplayModeSet1.clear();
+    mpDisplayModeSet2.clear();
+    svtools::ToolbarMenu::dispose();
+}
+
+IMPL_LINK_TYPED( DisplayModeToolbarMenu, SelectValueSetHdl, ValueSet*, pControl, void )
+{
+    SelectHdl(pControl);
+}
+IMPL_LINK_TYPED( DisplayModeToolbarMenu, SelectToolbarMenuHdl, ToolbarMenu *, pControl, void )
+{
+    SelectHdl(pControl);
+}
+
+void DisplayModeToolbarMenu::SelectHdl(void * pControl)
+{
+    if ( IsInPopupMode() )
+        EndPopupMode();
+
+    OUString sCommandURL;
+    sal_uInt16 nImage = 0;
+
+    if( pControl == mpDisplayModeSet1 ) {
+        sCommandURL = editmodes[mpDisplayModeSet1->GetSelectItemId() - 1 ].msUnoCommand;
+        nImage = editmodes[mpDisplayModeSet1->GetSelectItemId() - 1 ].mnBmpResId;
+    }
+    else if( pControl == mpDisplayModeSet2 ) {
+        sCommandURL = mastermodes[mpDisplayModeSet2->GetSelectItemId() - 5 ].msUnoCommand;
+        nImage = mastermodes[mpDisplayModeSet2->GetSelectItemId() - 5 ].mnBmpResId;
+    }
+
+    Sequence< PropertyValue > aArgs;
+    if (!sCommandURL.isEmpty())
+        mrController.dispatchCommand( sCommandURL, aArgs );
+
+    mrController.setToolboxItemImage( nImage );
+}
+
+OUString DisplayModeController_getImplementationName() throw (css::uno::RuntimeException)
+{
+    return OUString( "com.sun.star.comp.sd.DisplayModeController" );
+}
+
+Sequence< OUString >  DisplayModeController_getSupportedServiceNames() throw( RuntimeException )
+{
+    Sequence< OUString > aSNS( 1 );
+    aSNS.getArray()[0] = "com.sun.star.frame.ToolbarController";
+    return aSNS;
+}
+
+// class SlideLayoutController
+
+DisplayModeController::DisplayModeController( const Reference< uno::XComponentContext >& rxContext, const OUString& sCommandURL )
+: svt::PopupWindowController( rxContext, Reference< frame::XFrame >(), sCommandURL )
+{
+}
+
+void SAL_CALL DisplayModeController::initialize( const css::uno::Sequence< css::uno::Any >& aArguments )
+        throw ( css::uno::Exception, css::uno::RuntimeException, std::exception )
+{
+    svt::PopupWindowController::initialize( aArguments );
+    setToolboxItemImage( BMP_DISPLAYMODE_SLIDE );
+}
+
+VclPtr<vcl::Window> DisplayModeController::createPopupWindow( vcl::Window* pParent )
+{
+    return VclPtr<sd::DisplayModeToolbarMenu>::Create( *this, m_xFrame, pParent );
+}
+
+void DisplayModeController::setToolboxItemImage( sal_uInt16 nImage )
+{
+    sal_uInt16 nId;
+    ToolBox* pToolBox;
+    getToolboxId( nId, &pToolBox );
+
+    SdResId resId( nImage );
+    BitmapEx aBmp( resId );
+    int targetSize = (pToolBox->GetToolboxButtonSize() == TOOLBOX_BUTTONSIZE_LARGE) ? 32 : 16;
+    double scale = 1.0f;
+    Size size = aBmp.GetSizePixel();
+    if (size.Width() > targetSize)
+        scale = (double)targetSize / (double)size.Width();
+    if (size.Height() > targetSize)
+        scale = ::std::min( scale, (double)targetSize / (double)size.Height() );
+    aBmp.Scale( scale, scale );
+    pToolBox->SetItemImage( nId, Image( aBmp ) );
+
+}
+
+// XServiceInfo
+
+OUString SAL_CALL DisplayModeController::getImplementationName() throw( RuntimeException, std::exception )
+{
+    return DisplayModeController_getImplementationName();
+}
+
+Sequence< OUString > SAL_CALL DisplayModeController::getSupportedServiceNames(  ) throw( RuntimeException, std::exception )
+{
+    return DisplayModeController_getSupportedServiceNames();
+}
+
+}
+
+
+extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
+com_sun_star_comp_sd_DisplayModeController_get_implementation(::com::sun::star::uno::XComponentContext* context,
+                                                              ::com::sun::star::uno::Sequence<css::uno::Any> const &)
+{
+    return cppu::acquire(new sd::DisplayModeController(context, ".uno:DisplayMode"));
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/controller/displaymodecontroller.hxx b/sd/source/ui/controller/displaymodecontroller.hxx
new file mode 100644
index 0000000..ff2f250
--- /dev/null
+++ b/sd/source/ui/controller/displaymodecontroller.hxx
@@ -0,0 +1,53 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_SD_SOURCE_UI_CONTROLLER_DISPLAYMODECONTROLLER_HXX
+#define INCLUDED_SD_SOURCE_UI_CONTROLLER_DISPLAYMODECONTROLLER_HXX
+
+#include <svtools/popupwindowcontroller.hxx>
+
+namespace sd
+{
+
+class DisplayModeController : public svt::PopupWindowController
+{
+public:
+    DisplayModeController( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext,
+                           const OUString& sCommandURL );
+
+    virtual VclPtr<vcl::Window> createPopupWindow( vcl::Window* pParent ) SAL_OVERRIDE;
+
+    // XInitialization
+    virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments )
+        throw ( css::uno::Exception, css::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
+
+    // XServiceInfo
+    virtual OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
+    virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
+
+    void setToolboxItemImage( sal_uInt16 nImage );
+
+    using svt::PopupWindowController::createPopupWindow;
+};
+
+}
+
+#endif // INCLUDED_SD_SOURCE_UI_CONTROLLER_DISPLAYMODECONTROLLER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/framework/module/SlideSorterModule.cxx b/sd/source/ui/framework/module/SlideSorterModule.cxx
index fcf6437..bf6c040 100644
--- a/sd/source/ui/framework/module/SlideSorterModule.cxx
+++ b/sd/source/ui/framework/module/SlideSorterModule.cxx
@@ -134,7 +134,7 @@ void SlideSorterModule::UpdateViewTabBar (const Reference<XTabBar>& rxTabBar)
         aButtonA.ResourceId = FrameworkHelper::CreateResourceId(
             FrameworkHelper::msSlideSorterURL,
             FrameworkHelper::msCenterPaneURL);
-        aButtonA.ButtonLabel = SD_RESSTR(STR_SLIDE_MODE);
+        aButtonA.ButtonLabel = SD_RESSTR(STR_SLIDE_SORTER_MODE);
 
         TabBarButton aButtonB;
         aButtonB.ResourceId = FrameworkHelper::CreateResourceId(
diff --git a/sd/source/ui/framework/module/ViewTabBarModule.cxx b/sd/source/ui/framework/module/ViewTabBarModule.cxx
index cfa0b31..02a7b55 100644
--- a/sd/source/ui/framework/module/ViewTabBarModule.cxx
+++ b/sd/source/ui/framework/module/ViewTabBarModule.cxx
@@ -155,7 +155,7 @@ void ViewTabBarModule::UpdateViewTabBar (const Reference<XTabBar>& rxTabBar)
             aImpressViewButton.ResourceId = FrameworkHelper::CreateResourceId(
                 FrameworkHelper::msImpressViewURL,
                 xAnchor);
-            aImpressViewButton.ButtonLabel = SD_RESSTR(STR_DRAW_MODE);
+            aImpressViewButton.ButtonLabel = SD_RESSTR(STR_NORMAL_MODE);
             if ( ! xBar->hasTabBarButton(aImpressViewButton))
                 xBar->addTabBarButtonAfter(aImpressViewButton, aEmptyButton);
 
@@ -179,7 +179,7 @@ void ViewTabBarModule::UpdateViewTabBar (const Reference<XTabBar>& rxTabBar)
             aHandoutViewButton.ResourceId = FrameworkHelper::CreateResourceId(
                 FrameworkHelper::msHandoutViewURL,
                 xAnchor);
-            aHandoutViewButton.ButtonLabel = SD_RESSTR(STR_HANDOUT_MODE);
+            aHandoutViewButton.ButtonLabel = SD_RESSTR(STR_HANDOUT_MASTER_MODE);
             if ( ! xBar->hasTabBarButton(aHandoutViewButton))
                 xBar->addTabBarButtonAfter(aHandoutViewButton, aNotesViewButton);
         }
diff --git a/sd/source/ui/framework/tools/FrameworkHelper.cxx b/sd/source/ui/framework/tools/FrameworkHelper.cxx
index 564f756..585a82d 100644
--- a/sd/source/ui/framework/tools/FrameworkHelper.cxx
+++ b/sd/source/ui/framework/tools/FrameworkHelper.cxx
@@ -522,27 +522,26 @@ void FrameworkHelper::HandleModeChangeSlot (
     sal_uLong nSlotId,
     SfxRequest& rRequest)
 {
-    bool bIsActive = true;
-
     if ( ! mxConfigurationController.is())
         return;
 
-    switch (nSlotId)
+    // Parameters are allowed for NotesMasterPage and SlideMasterPage
+    // for these command, transfor xxxxMasterPage with param = false
+    // to ActivatexxxxxMode
+    if (nSlotId == SID_NOTES_MASTER_MODE || nSlotId == SID_SLIDE_MASTER_MODE)
     {
-        case SID_DRAWINGMODE:
-        case SID_NOTESMODE:
-        case SID_HANDOUTMODE:
-        case SID_DIAMODE:
-        case SID_OUTLINEMODE:
+        const SfxItemSet* pRequestArguments = rRequest.GetArgs();
+        if (pRequestArguments)
         {
-            const SfxItemSet* pRequestArguments = rRequest.GetArgs();
-            if (pRequestArguments)
+            const SfxBoolItem* pIsActive = rRequest.GetArg<SfxBoolItem>((sal_uInt16)nSlotId);
+            if (!pIsActive->GetValue ())
             {
-                const SfxBoolItem* pIsActive = rRequest.GetArg<SfxBoolItem>((sal_uInt16)nSlotId);
-                bIsActive = pIsActive->GetValue ();
+                if (nSlotId == SID_NOTES_MASTER_MODE)
+                    nSlotId = SID_NOTES_MODE;
+                else
+                    nSlotId = SID_NORMAL_MULTI_PANE_GUI;
             }
         }
-        break;
     }
 
     try
@@ -555,60 +554,68 @@ void FrameworkHelper::HandleModeChangeSlot (
         Reference<XView> xView (GetView(xPaneId));
         ::std::shared_ptr<ViewShell> pCenterViewShell (GetViewShell(xView));
 
+        // Compute requested view
         OUString sRequestedView;
-        if (bIsActive)
+        switch (nSlotId)
         {
-            switch (nSlotId)
-            {
-                case SID_NORMAL_MULTI_PANE_GUI:
-                case SID_DRAWINGMODE:
-                    sRequestedView = FrameworkHelper::msImpressViewURL;
-                    break;
-
-                case SID_NOTESMODE:
-                    sRequestedView = FrameworkHelper::msNotesViewURL;
+            // draw
+            case SID_DRAWINGMODE:
+            // impress
+            case SID_NORMAL_MULTI_PANE_GUI:
+            case SID_SLIDE_MASTER_MODE:
+                sRequestedView = FrameworkHelper::msImpressViewURL;
                 break;
 
-                case SID_HANDOUTMODE:
-                    sRequestedView = FrameworkHelper::msHandoutViewURL;
-                    break;
+            case SID_NOTES_MODE:
+            case SID_NOTES_MASTER_MODE:
+                sRequestedView = FrameworkHelper::msNotesViewURL;
+            break;
 
-                case SID_SLIDE_SORTER_MULTI_PANE_GUI:
-                case SID_DIAMODE:
-                    sRequestedView = FrameworkHelper::msSlideSorterURL;
-                    break;
+            case SID_HANDOUT_MASTER_MODE:
+                sRequestedView = FrameworkHelper::msHandoutViewURL;
+                break;
 
-                case SID_OUTLINEMODE:
-                    sRequestedView = FrameworkHelper::msOutlineViewURL;
-                    break;
-            }
-        }
+            case SID_SLIDE_SORTER_MULTI_PANE_GUI:
+            case SID_SLIDE_SORTER_MODE:
+                sRequestedView = FrameworkHelper::msSlideSorterURL;
+                break;
 
-        if (xView.is()
-            && xView->getResourceId()->getResourceURL().equals(sRequestedView))
-        {
-            // We do not have to switch the view shell but maybe the edit mode
-            // has changed.
-            DrawViewShell* pDrawViewShell
-                = dynamic_cast<DrawViewShell*>(pCenterViewShell.get());
-            if (pDrawViewShell != nullptr)
-            {
-                pCenterViewShell->Broadcast (
-                    ViewShellHint(ViewShellHint::HINT_CHANGE_EDIT_MODE_START));
+            case SID_OUTLINE_MODE:
+                sRequestedView = FrameworkHelper::msOutlineViewURL;
+                break;
+        }
 
-                pDrawViewShell->ChangeEditMode (
-                    EM_PAGE, pDrawViewShell->IsLayerModeActive());
+        // Compute requested mode
+        EditMode eEMode = EM_PAGE;
+        if (nSlotId == SID_SLIDE_MASTER_MODE
+            || nSlotId == SID_NOTES_MASTER_MODE
+            || nSlotId == SID_HANDOUT_MASTER_MODE)
+            eEMode = EM_MASTERPAGE;
+        // Ensure we have the expected view shell
+        if (!(xView.is() && xView->getResourceId()->getResourceURL().equals(sRequestedView)))
 
-                pCenterViewShell->Broadcast (
-                    ViewShellHint(ViewShellHint::HINT_CHANGE_EDIT_MODE_END));
-            }
-        }
-        else
         {
             mxConfigurationController->requestResourceActivation(
                 CreateResourceId(sRequestedView, msCenterPaneURL),
                 ResourceActivationMode_REPLACE);
         }
+
+        // Ensure we have the expected edit mode
+        // The check is only for DrawViewShell as OutlineViewShell
+        // and SlideSorterViewShell have no master mode
+        DrawViewShell* pDrawViewShell
+            = dynamic_cast<DrawViewShell*>(pCenterViewShell.get());
+        if (pDrawViewShell != NULL)
+        {
+            pCenterViewShell->Broadcast (
+                ViewShellHint(ViewShellHint::HINT_CHANGE_EDIT_MODE_START));
+
+            pDrawViewShell->ChangeEditMode (
+                eEMode, pDrawViewShell->IsLayerModeActive());
+
+            pCenterViewShell->Broadcast (
+                ViewShellHint(ViewShellHint::HINT_CHANGE_EDIT_MODE_END));
+        }
     }
     catch (RuntimeException&)
     {
diff --git a/sd/source/ui/func/fusearch.cxx b/sd/source/ui/func/fusearch.cxx
index 7dca870..6c839ab 100644
--- a/sd/source/ui/func/fusearch.cxx
+++ b/sd/source/ui/func/fusearch.cxx
@@ -42,10 +42,12 @@ namespace sd {
 
 static sal_uInt16 SidArraySpell[] = {
             SID_DRAWINGMODE,
-            SID_OUTLINEMODE,
-            SID_DIAMODE,
-            SID_NOTESMODE,
-            SID_HANDOUTMODE,
+            SID_SLIDE_MASTER_MODE,
+            SID_OUTLINE_MODE,
+            SID_SLIDE_SORTER_MODE,
+            SID_NOTES_MODE,
+            SID_NOTES_MASTER_MODE,
+            SID_HANDOUT_MASTER_MODE,
             0 };
 
 
diff --git a/sd/source/ui/inc/FrameView.hxx b/sd/source/ui/inc/FrameView.hxx
index ffc37cb..f59c6b6 100644
--- a/sd/source/ui/inc/FrameView.hxx
+++ b/sd/source/ui/inc/FrameView.hxx
@@ -103,8 +103,8 @@ public:
     /** can be used to get the page that was selected on last save of this document */
     sal_uInt16 GetSelectedPageOnLoad () const { return mnSelectedPageOnLoad; }
 
-    void SetViewShEditMode(EditMode eMode, PageKind eKind);
-    EditMode GetViewShEditMode (PageKind eKind);
+    void SetViewShEditMode(EditMode eMode);
+    EditMode GetViewShEditMode ();
 
     /** Remember the edit mode of the main view shell at the time when the
         document is loaded.
@@ -184,9 +184,10 @@ private:
     sal_uInt16          mnSelectedPage;
     PageKind            mePageKindOnLoad;
     sal_uInt16          mnSelectedPageOnLoad;
-    EditMode            meStandardEditMode; ///< edit mode in drawing mode (Page/MasterPage)
-    EditMode            meNotesEditMode;    ///< edit mode in notes mode (Page/MasterPage)
-    EditMode            meHandoutEditMode;  ///< edit mode in handout mode (Page/MasterPage)
+    EditMode            meEditMode; ///< edit mode in drawing mode (Page/MasterPage)
+    // EditMode            meStandardEditMode; ///< edit mode in drawing mode (Page/MasterPage)
+    // EditMode            meNotesEditMode;    ///< edit mode in notes mode (Page/MasterPage)
+    // EditMode            meHandoutEditMode;  ///< edit mode in handout mode (Page/MasterPage)
     EditMode            meEditModeOnLoad;
     bool                mbLayerMode;        ///< layer on/off
     bool                mbQuickEdit;        ///< QuickEdit on/off
diff --git a/sd/source/ui/inc/strings.hrc b/sd/source/ui/inc/strings.hrc
index ca3f496a..06cc14c 100644
--- a/sd/source/ui/inc/strings.hrc
+++ b/sd/source/ui/inc/strings.hrc
@@ -72,15 +72,17 @@
 #define STR_MEDIUM                  (RID_APP_START+113)
 #define STR_FAST                    (RID_APP_START+114)
 
-#define STR_SLIDE_MODE              (RID_APP_START+121)
-#define STR_DRAW_MODE               (RID_APP_START+122)
+#define STR_SLIDE_SORTER_MODE       (RID_APP_START+121)
+#define STR_NORMAL_MODE             (RID_APP_START+122)
 #define STR_OUTLINE_MODE            (RID_APP_START+123)
+#define STR_SLIDE_MASTER_MODE       (RID_APP_START+124)
+#define STR_NOTES_MASTER_MODE       (RID_APP_START+125)
 
 #define STR_UNDO_BEZCLOSE           (RID_APP_START+127)
 
 #define STR_END_SPELLING_OBJ        (RID_APP_START+129)
 #define STR_NOTES_MODE              (RID_APP_START+135)
-#define STR_HANDOUT_MODE            (RID_APP_START+136)
+#define STR_HANDOUT_MASTER_MODE     (RID_APP_START+136)
 
 #define STR_LINEEND                 (RID_APP_START+137)
 #define STR_DESC_LINEEND            (RID_APP_START+138)
@@ -144,16 +146,19 @@
 #define STR_AUTOLAYOUT_CONTENT_OVER_CONTENT     (RID_APP_START+221)
 #define STR_AUTOLAYOUT_4CONTENT                 (RID_APP_START+222)
 #define STR_AUTOLAYOUT_6CONTENT                 (RID_APP_START+223)
-
-#define STR_AUTOLAYOUT_HANDOUT1     (RID_APP_START+231)
-#define STR_AUTOLAYOUT_HANDOUT2     (RID_APP_START+232)
-#define STR_AUTOLAYOUT_HANDOUT3     (RID_APP_START+233)
-#define STR_AUTOLAYOUT_HANDOUT4     (RID_APP_START+234)
-#define STR_AUTOLAYOUT_HANDOUT6     (RID_APP_START+235)
-#define STR_AUTOLAYOUT_NOTES        (RID_APP_START+236)
-#define STR_AUTOLAYOUT_HANDOUT9     (RID_APP_START+237)
-
-#define STR_TRANSFORM               (RID_APP_START+240)
+    // FREE
+#define STR_AUTOLAYOUT_HANDOUT1             (RID_APP_START+231)
+#define STR_AUTOLAYOUT_HANDOUT2             (RID_APP_START+232)
+#define STR_AUTOLAYOUT_HANDOUT3             (RID_APP_START+233)
+#define STR_AUTOLAYOUT_HANDOUT4             (RID_APP_START+234)
+#define STR_AUTOLAYOUT_HANDOUT6             (RID_APP_START+235)
+#define STR_AUTOLAYOUT_NOTES                (RID_APP_START+236)
+#define STR_AUTOLAYOUT_HANDOUT9             (RID_APP_START+237)
+
+#define STR_DISPLAYMODE_EDITMODES           (RID_APP_START+238)
+#define STR_DISPLAYMODE_MASTERMODES         (RID_APP_START+239)
+
+#define STR_TRANSFORM                       (RID_APP_START+240)
 
 #define STR_EXPORT_HTML_NAME                (RID_APP_START+244)
 #define STR_EXPORT_HTML_FILTER              (RID_APP_START+245)
diff --git a/sd/source/ui/inc/unokywds.hxx b/sd/source/ui/inc/unokywds.hxx
index 8e1f902..937320b 100644
--- a/sd/source/ui/inc/unokywds.hxx
+++ b/sd/source/ui/inc/unokywds.hxx
@@ -139,9 +139,10 @@ const char sUNO_View_PreviewDrawMode[] = "PreviewDrawMode";
 const char sUNO_View_IsShowPreviewInPageMode[] = "IsShowPreviewInPageMode";
 const char sUNO_View_IsShowPreviewInMasterPageMode[] = "IsShowPreviewInMasterPageMode";
 const char sUNO_View_SetShowPreviewInOutlineMode[] = "SetShowPreviewInOutlineMode";
-const char sUNO_View_EditModeStandard[] = "EditModeStandard";
-const char sUNO_View_EditModeNotes[] = "EditModeNotes";
-const char sUNO_View_EditModeHandout[] = "EditModeHandout";
+const char sUNO_View_EditMode[] = "EditMode";
+const char sUNO_View_EditModeStandard[] = "EditModeStandard";   // To be deprecated
+// const char sUNO_View_EditModeNotes[] = "EditModeNotes";
+// const char sUNO_View_EditModeHandout[] = "EditModeHandout";
 const char sUNO_View_VisArea[] = "VisArea";
 
 const char sUNO_View_GridIsVisible[] = "GridIsVisible";
diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
index e710a05..b03821c 100644
--- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
@@ -388,10 +388,10 @@ void SlotManager::FuSupport (SfxRequest& rRequest)
             break;
 
         case SID_DRAWINGMODE:
-        case SID_NOTESMODE:
-        case SID_HANDOUTMODE:
-        case SID_DIAMODE:
-        case SID_OUTLINEMODE:
+        case SID_NOTES_MODE:
+        case SID_HANDOUT_MASTER_MODE:
+        case SID_SLIDE_SORTER_MODE:
+        case SID_OUTLINE_MODE:
         {
             ViewShellBase* pBase = mrSlideSorter.GetViewShellBase();
             if (pBase != nullptr)
@@ -538,10 +538,10 @@ void SlotManager::GetMenuState (SfxItemSet& rSet)
         rSet.Put( SfxBoolItem( nSId, true ) );
     }
     rSet.Put( SfxBoolItem( SID_DRAWINGMODE, false ) );
-    rSet.Put( SfxBoolItem( SID_DIAMODE, true ) );
-    rSet.Put( SfxBoolItem( SID_OUTLINEMODE, false ) );
-    rSet.Put( SfxBoolItem( SID_NOTESMODE, false ) );
-    rSet.Put( SfxBoolItem( SID_HANDOUTMODE, false ) );
+    rSet.Put( SfxBoolItem( SID_SLIDE_SORTER_MODE, true ) );
+    rSet.Put( SfxBoolItem( SID_OUTLINE_MODE, false ) );
+    rSet.Put( SfxBoolItem( SID_NOTES_MODE, false ) );
+    rSet.Put( SfxBoolItem( SID_HANDOUT_MASTER_MODE, false ) );
 
     if (pShell!=nullptr && pShell->IsMainViewShell())
     {
diff --git a/sd/source/ui/view/GraphicViewShellBase.cxx b/sd/source/ui/view/GraphicViewShellBase.cxx
index 7157a04..fec98e7 100644
--- a/sd/source/ui/view/GraphicViewShellBase.cxx
+++ b/sd/source/ui/view/GraphicViewShellBase.cxx
@@ -72,10 +72,12 @@ void GraphicViewShellBase::Execute (SfxRequest& rRequest)
     {
         case SID_NOTES_WINDOW:
         case SID_SLIDE_SORTER_MULTI_PANE_GUI:
-        case SID_DIAMODE:
-        case SID_OUTLINEMODE:
-        case SID_NOTESMODE:
-        case SID_HANDOUTMODE:
+        case SID_SLIDE_SORTER_MODE:
+        case SID_SLIDE_MASTER_MODE:
+        case SID_OUTLINE_MODE:
+        case SID_NOTES_MODE:
+        case SID_NOTES_MASTER_MODE:
+        case SID_HANDOUT_MASTER_MODE:
             // Prevent some Impress-only slots from being executed.
             rRequest.Cancel();
             break;
diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx
index 3436e3d..41ad725 100644
--- a/sd/source/ui/view/ViewShellBase.cxx
+++ b/sd/source/ui/view/ViewShellBase.cxx
@@ -157,6 +157,9 @@ public:
     */
     void ShowViewTabBar (bool bShow);
 
+    void SetUserWantsTabBar(bool inValue);
+    inline bool GetUserWantsTabBar() { return mbUserWantsTabBar; }
+
     /** Common code of ViewShellBase::OuterResizePixel() and
         ViewShellBase::InnerResizePixel().
     */
@@ -187,7 +190,8 @@ public:
 
 private:
     ViewShellBase& mrBase;
-
+    bool mbUserWantsTabBar;
+    bool mbTabBarShouldBeVisible;
     /** Hold a reference to the page cache manager of the slide sorter in
         order to ensure that it stays alive while the ViewShellBase is
         alive.
@@ -364,6 +368,8 @@ void ViewShellBase::LateInit (const OUString& rsDefaultView)
         if (pFrameView != nullptr)
             pFrameView->SetViewShellTypeOnLoad(pViewShell->GetShellType());
     }
+    // Hide the TabBar
+    mpImpl->SetUserWantsTabBar(false);
 }
 
 std::shared_ptr<ViewShellManager> ViewShellBase::GetViewShellManager() const
@@ -630,13 +636,23 @@ void ViewShellBase::Execute (SfxRequest& rRequest)
                 framework::FrameworkHelper::msSlideSorterURL);
             break;
 
+        case SID_TOGGLE_TABBAR_VISIBILITY:
+            mpImpl->SetUserWantsTabBar(!mpImpl->GetUserWantsTabBar());
+            rRequest.Done();
+            break;
+
+        // draw
+        case SID_DRAWINGMODE:
+        // impress normal
         case SID_NORMAL_MULTI_PANE_GUI:
+        case SID_NOTES_MODE:
+        case SID_OUTLINE_MODE:
         case SID_SLIDE_SORTER_MULTI_PANE_GUI:
-        case SID_DRAWINGMODE:
-        case SID_DIAMODE:
-        case SID_OUTLINEMODE:
-        case SID_NOTESMODE:
-        case SID_HANDOUTMODE:
+        case SID_SLIDE_SORTER_MODE:
+        // impress master
+        case SID_SLIDE_MASTER_MODE:
+        case SID_NOTES_MASTER_MODE:
+        case SID_HANDOUT_MASTER_MODE:
             framework::FrameworkHelper::Instance(*this)->HandleModeChangeSlot(nSlotId, rRequest);
             break;
 
@@ -833,8 +849,7 @@ void ViewShellBase::UpdateBorder ( bool bForce /* = false */ )
 
 void ViewShellBase::ShowUIControls (bool bVisible)
 {
-    if (mpImpl->mpViewTabBar.is())
-        mpImpl->mpViewTabBar->GetTabControl()->Show(bVisible);
+    mpImpl->ShowViewTabBar(bVisible);
 
     ViewShell* pMainViewShell = GetMainViewShell().get();
     if (pMainViewShell != nullptr)
@@ -1015,6 +1030,8 @@ ViewShellBase::Implementation::Implementation (ViewShellBase& rBase)
       mpEventMultiplexer(),
       mpFormShellManager(),
       mrBase(rBase),
+      mbUserWantsTabBar(false),
+      mbTabBarShouldBeVisible(true),
       mpPageCacheManager(slidesorter::cache::PageCacheManager::Instance())
 {
 }
@@ -1041,9 +1058,11 @@ void ViewShellBase::Implementation::ProcessRestoreEditingViewSlot()
         if (pFrameView != nullptr)
         {
             // Set view shell, edit mode, and page kind.
+            // pFrameView->SetViewShEditMode(
+            //     pFrameView->GetViewShEditModeOnLoad(),
+            //     pFrameView->GetPageKindOnLoad());
             pFrameView->SetViewShEditMode(
-                pFrameView->GetViewShEditModeOnLoad(),
-                pFrameView->GetPageKindOnLoad());
+                pFrameView->GetViewShEditModeOnLoad() );
             pFrameView->SetPageKind(
                 pFrameView->GetPageKindOnLoad());
             std::shared_ptr<FrameworkHelper> pHelper (FrameworkHelper::Instance(mrBase));
@@ -1055,8 +1074,18 @@ void ViewShellBase::Implementation::ProcessRestoreEditingViewSlot()
     }
 }
 
+void ViewShellBase::Implementation::SetUserWantsTabBar(bool inValue)
+{
+    mbUserWantsTabBar = inValue;
+    // Call ShowViewTabBar to refresh the TabBar visibility
+    ShowViewTabBar(mbTabBarShouldBeVisible);
+}
+
 void ViewShellBase::Implementation::ShowViewTabBar (bool bShow)
 {
+    mbTabBarShouldBeVisible = bShow;
+    bShow = bShow && mbUserWantsTabBar;
+
     if (mpViewTabBar.is()
         && mpViewTabBar->GetTabControl()->IsVisible() != bShow)
     {
@@ -1194,6 +1223,8 @@ void ViewShellBase::Implementation::GetSlotState (SfxItemSet& rSet)
             ::comphelper::getProcessComponentContext() );
         SfxWhichIter aSetIterator (rSet);
         sal_uInt16 nItemId (aSetIterator.FirstWhich());
+
+        FrameView *pFrameView;
         while (nItemId > 0)
         {
             bool bState (false);
@@ -1205,49 +1236,62 @@ void ViewShellBase::Implementation::GetSlotState (SfxItemSet& rSet)
                     case SID_LEFT_PANE_IMPRESS:
                         xResourceId = ResourceId::create(
                             xContext, FrameworkHelper::msLeftImpressPaneURL);
+                        bState = xConfiguration->hasResource(xResourceId);
                         break;
 
                     case SID_LEFT_PANE_DRAW:
                         xResourceId = ResourceId::create(
                             xContext, FrameworkHelper::msLeftDrawPaneURL);
+                        bState = xConfiguration->hasResource(xResourceId);
                         break;
 
                     case SID_NORMAL_MULTI_PANE_GUI:
-                        xResourceId = ResourceId::createWithAnchorURL(
-                            xContext,
-                            FrameworkHelper::msImpressViewURL,
-                            FrameworkHelper::msCenterPaneURL);
+                        pFrameView = mrBase.GetMainViewShell()->GetFrameView();
+                        bState = pFrameView->GetViewShEditMode() == EM_PAGE
+                            && pFrameView->GetPageKind() == PK_STANDARD;
                         break;
 
+                    case SID_SLIDE_MASTER_MODE:
+                        pFrameView = mrBase.GetMainViewShell()->GetFrameView();
+                        bState = pFrameView->GetViewShEditMode() == EM_MASTERPAGE
+                            && pFrameView->GetPageKind() == PK_STANDARD;
+
                     case SID_SLIDE_SORTER_MULTI_PANE_GUI:
-                    case SID_DIAMODE:
+                    case SID_SLIDE_SORTER_MODE:
                         xResourceId = ResourceId::createWithAnchorURL(
                             xContext,
                             FrameworkHelper::msSlideSorterURL,
                             FrameworkHelper::msCenterPaneURL);
+                        bState = xConfiguration->hasResource(xResourceId);
                         break;
 
-                    case SID_OUTLINEMODE:
+                    case SID_OUTLINE_MODE:
                         xResourceId = ResourceId::createWithAnchorURL(
                             xContext,
                             FrameworkHelper::msOutlineViewURL,
                             FrameworkHelper::msCenterPaneURL);
+                        bState = xConfiguration->hasResource(xResourceId);
                         break;
 
-                    case SID_HANDOUTMODE:
-                        // There is only the master page mode for the handout
-                        // view so ignore the master page flag.
-                        xResourceId = ResourceId::createWithAnchorURL(
-                            xContext,
-                            FrameworkHelper::msHandoutViewURL,
-                            FrameworkHelper::msCenterPaneURL);
+                    case SID_HANDOUT_MASTER_MODE:
+                        pFrameView = mrBase.GetMainViewShell()->GetFrameView();
+                        bState = pFrameView->GetViewShEditMode() == EM_MASTERPAGE
+                            && pFrameView->GetPageKind() == PK_HANDOUT;
                         break;
 
-                    case SID_NOTESMODE:
-                        xResourceId = ResourceId::createWithAnchorURL(
-                            xContext,
-                            FrameworkHelper::msNotesViewURL,
-                            FrameworkHelper::msCenterPaneURL);
+                    case SID_NOTES_MODE:
+                        pFrameView = mrBase.GetMainViewShell()->GetFrameView();
+                        bState = pFrameView->GetViewShEditMode() == EM_PAGE
+                            && pFrameView->GetPageKind() == PK_NOTES;
+                        break;
+
+                    case SID_NOTES_MASTER_MODE:
+                        pFrameView = mrBase.GetMainViewShell()->GetFrameView();
+                        bState = pFrameView->GetViewShEditMode() == EM_MASTERPAGE
+                            && pFrameView->GetPageKind() == PK_NOTES;
+
+                    case SID_TOGGLE_TABBAR_VISIBILITY:
+                        bState = GetUserWantsTabBar();
                         break;
 
                     default:
@@ -1267,7 +1311,7 @@ void ViewShellBase::Implementation::GetSlotState (SfxItemSet& rSet)
             switch (nItemId)
             {
                 case SID_NORMAL_MULTI_PANE_GUI:
-                case SID_NOTESMODE:
+                case SID_NOTES_MODE:
                 {
                     // Determine the master page mode.
                     ViewShell* pCenterViewShell = FrameworkHelper::Instance(mrBase)->GetViewShell(
@@ -1285,7 +1329,7 @@ void ViewShellBase::Implementation::GetSlotState (SfxItemSet& rSet)
                     break;
                 }
 
-                case SID_HANDOUTMODE:
+                case SID_HANDOUT_MASTER_MODE:
                     // There is only the master page mode for the handout
                     // view so ignore the master page flag.
                     break;
diff --git a/sd/source/ui/view/drviews1.cxx b/sd/source/ui/view/drviews1.cxx
index 8be1d79..a933808 100644
--- a/sd/source/ui/view/drviews1.cxx
+++ b/sd/source/ui/view/drviews1.cxx
@@ -485,9 +485,9 @@ void DrawViewShell::ChangeEditMode(EditMode eEMode, bool bIsLayerModeActive)
         Invalidate( SID_MASTERPAGE );
         Invalidate( SID_DELETE_MASTER_PAGE );
         Invalidate( SID_DELETE_PAGE );
-        Invalidate( SID_SLIDE_MASTERPAGE );
-        Invalidate( SID_NOTES_MASTERPAGE );
-        Invalidate( SID_HANDOUT_MASTERPAGE );
+        Invalidate( SID_SLIDE_MASTER_MODE );
+        Invalidate( SID_NOTES_MASTER_MODE );
+        Invalidate( SID_HANDOUT_MASTER_MODE );
         InvalidateWindows();
 
         SetContextName(GetSidebarContextName());
diff --git a/sd/source/ui/view/drviews5.cxx b/sd/source/ui/view/drviews5.cxx
index 88963c8..1b9649e 100644
--- a/sd/source/ui/view/drviews5.cxx
+++ b/sd/source/ui/view/drviews5.cxx
@@ -277,7 +277,7 @@ void DrawViewShell::ReadFrameViewData(FrameView* pView)
         nSelectedPage = pView->GetSelectedPage();
     }
 
-    EditMode eNewEditMode = pView->GetViewShEditMode(mePageKind);
+    EditMode eNewEditMode = pView->GetViewShEditMode(/*mePageKind*/);
     bool bNewLayerMode = pView->IsLayerMode();
 
     if(IsLayerModeActive() && bNewLayerMode)
@@ -355,7 +355,7 @@ void DrawViewShell::WriteFrameViewData()
         mpFrameView->SetSelectedPage( maTabControl->GetCurPageId() - 1 );
     }
 
-    mpFrameView->SetViewShEditMode(meEditMode, mePageKind);
+    mpFrameView->SetViewShEditMode(meEditMode);
     mpFrameView->SetLayerMode(IsLayerModeActive());
 
     SdrPageView* pPageView = mpDrawView->GetSdrPageView();
@@ -478,15 +478,15 @@ void DrawViewShell::ReadUserDataSequence ( const css::uno::Sequence < css::beans
 
         if (mePageKind == PK_NOTES)
         {
-            SetHelpId( SID_NOTESMODE );
-            GetActiveWindow()->SetHelpId( CMD_SID_NOTESMODE );
-            GetActiveWindow()->SetUniqueId( CMD_SID_NOTESMODE );
+            SetHelpId( SID_NOTES_MODE );
+            GetActiveWindow()->SetHelpId( CMD_SID_NOTES_MODE );
+            GetActiveWindow()->SetUniqueId( CMD_SID_NOTES_MODE );
         }
         else if (mePageKind == PK_HANDOUT)
         {
-            SetHelpId( SID_HANDOUTMODE );
-            GetActiveWindow()->SetHelpId( CMD_SID_HANDOUTMODE );
-            GetActiveWindow()->SetUniqueId( CMD_SID_HANDOUTMODE );
+            SetHelpId( SID_HANDOUT_MASTER_MODE );
+            GetActiveWindow()->SetHelpId( CMD_SID_HANDOUT_MASTER_MODE );
+            GetActiveWindow()->SetUniqueId( CMD_SID_HANDOUT_MASTER_MODE );
         }
         else
         {
@@ -518,7 +518,6 @@ void DrawViewShell::ReadUserDataSequence ( const css::uno::Sequence < css::beans
 
         SetZoomRect(aVisArea);
     }
-
     ChangeEditMode (meEditMode, ! IsLayerModeActive());
     ResetActualLayer();
 }
diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx
index feaad5e..1740fa6 100644
--- a/sd/source/ui/view/drviews7.cxx
+++ b/sd/source/ui/view/drviews7.cxx
@@ -748,9 +748,9 @@ void DrawViewShell::GetMenuState( SfxItemSet &rSet )
         **********************************************************************/
         rSet.Put(SfxBoolItem(SID_PAGEMODE, true));
         rSet.Put(SfxBoolItem(SID_MASTERPAGE, false));
-        rSet.Put(SfxBoolItem(SID_SLIDE_MASTERPAGE, false));
-        rSet.Put(SfxBoolItem(SID_NOTES_MASTERPAGE, false));
-        rSet.Put(SfxBoolItem(SID_HANDOUT_MASTERPAGE, false));
+        rSet.Put(SfxBoolItem(SID_SLIDE_MASTER_MODE, false));
+        rSet.Put(SfxBoolItem(SID_NOTES_MASTER_MODE, false));
+        rSet.Put(SfxBoolItem(SID_HANDOUT_MASTER_MODE, false));
 
         rSet.DisableItem (SID_INSERT_MASTER_PAGE);
         rSet.DisableItem (SID_DELETE_MASTER_PAGE);
@@ -767,22 +767,22 @@ void DrawViewShell::GetMenuState( SfxItemSet &rSet )
         **********************************************************************/
         if (mePageKind == PK_STANDARD)
         {
-            rSet.Put(SfxBoolItem(SID_SLIDE_MASTERPAGE, true));
-            rSet.Put(SfxBoolItem(SID_NOTES_MASTERPAGE, false));
-            rSet.Put(SfxBoolItem(SID_HANDOUT_MASTERPAGE, false));
+            rSet.Put(SfxBoolItem(SID_SLIDE_MASTER_MODE, true));
+            rSet.Put(SfxBoolItem(SID_NOTES_MASTER_MODE, false));
+            rSet.Put(SfxBoolItem(SID_HANDOUT_MASTER_MODE, false));
 
         }
         else if (mePageKind == PK_NOTES)
         {
-            rSet.Put(SfxBoolItem(SID_SLIDE_MASTERPAGE, false));
-            rSet.Put(SfxBoolItem(SID_NOTES_MASTERPAGE, true));
-            rSet.Put(SfxBoolItem(SID_HANDOUT_MASTERPAGE, false));
+            rSet.Put(SfxBoolItem(SID_SLIDE_MASTER_MODE, false));
+            rSet.Put(SfxBoolItem(SID_NOTES_MASTER_MODE, true));
+            rSet.Put(SfxBoolItem(SID_HANDOUT_MASTER_MODE, false));
         }
         else if (mePageKind == PK_HANDOUT)
         {
-            rSet.Put(SfxBoolItem(SID_SLIDE_MASTERPAGE, false));
-            rSet.Put(SfxBoolItem(SID_NOTES_MASTERPAGE, false));
-            rSet.Put(SfxBoolItem(SID_HANDOUT_MASTERPAGE, true));
+            rSet.Put(SfxBoolItem(SID_SLIDE_MASTER_MODE, false));
+            rSet.Put(SfxBoolItem(SID_NOTES_MASTER_MODE, false));
+            rSet.Put(SfxBoolItem(SID_HANDOUT_MASTER_MODE, true));
         }
     }
 
@@ -1556,25 +1556,27 @@ void DrawViewShell::GetMenuState( SfxItemSet &rSet )
 void DrawViewShell::GetModeSwitchingMenuState (SfxItemSet &rSet)
 {
     //DrawView
-    rSet.Put(SfxBoolItem(SID_DIAMODE, false));
-    rSet.Put(SfxBoolItem(SID_OUTLINEMODE, false));
+    rSet.Put(SfxBoolItem(SID_SLIDE_SORTER_MODE, false));
+    rSet.Put(SfxBoolItem(SID_OUTLINE_MODE, false));
+    rSet.Put(SfxBoolItem(SID_SLIDE_MASTER_MODE, false));
+    rSet.Put(SfxBoolItem(SID_NOTES_MASTER_MODE, false));
     if (mePageKind == PK_NOTES)
     {
         rSet.Put(SfxBoolItem(SID_DRAWINGMODE, false));
-        rSet.Put(SfxBoolItem(SID_NOTESMODE, true));
-        rSet.Put(SfxBoolItem(SID_HANDOUTMODE, false));
+        rSet.Put(SfxBoolItem(SID_NOTES_MODE, true));
+        rSet.Put(SfxBoolItem(SID_HANDOUT_MASTER_MODE, false));
     }
     else if (mePageKind == PK_HANDOUT)
     {
         rSet.Put(SfxBoolItem(SID_DRAWINGMODE, false));
-        rSet.Put(SfxBoolItem(SID_NOTESMODE, false));
-        rSet.Put(SfxBoolItem(SID_HANDOUTMODE, true));
+        rSet.Put(SfxBoolItem(SID_NOTES_MODE, false));
+        rSet.Put(SfxBoolItem(SID_HANDOUT_MASTER_MODE, true));
     }
     else
     {
         rSet.Put(SfxBoolItem(SID_DRAWINGMODE, true));
-        rSet.Put(SfxBoolItem(SID_NOTESMODE, false));
-        rSet.Put(SfxBoolItem(SID_HANDOUTMODE, false));
+        rSet.Put(SfxBoolItem(SID_NOTES_MODE, false));
+        rSet.Put(SfxBoolItem(SID_HANDOUT_MASTER_MODE, false));
     }
 
     // Removed [GetDocSh()->GetCurrentFunction() ||] from the following
@@ -1591,33 +1593,45 @@ void DrawViewShell::GetModeSwitchingMenuState (SfxItemSet &rSet)
             rSet.DisableItem( SID_DRAWINGMODE );
         }
 
-        rSet.ClearItem( SID_NOTESMODE );
-        rSet.DisableItem( SID_NOTESMODE );
+        rSet.ClearItem( SID_NOTES_MODE );
+        rSet.DisableItem( SID_NOTES_MODE );
 
-        rSet.ClearItem( SID_HANDOUTMODE );
-        rSet.DisableItem( SID_HANDOUTMODE );
+        rSet.ClearItem( SID_HANDOUT_MASTER_MODE );
+        rSet.DisableItem( SID_HANDOUT_MASTER_MODE );
 
-        rSet.ClearItem( SID_OUTLINEMODE );
-        rSet.DisableItem( SID_OUTLINEMODE );
+        rSet.ClearItem( SID_OUTLINE_MODE );
+        rSet.DisableItem( SID_OUTLINE_MODE );
 
-        rSet.ClearItem( SID_DIAMODE );
-        rSet.DisableItem( SID_DIAMODE );
+        rSet.ClearItem( SID_SLIDE_MASTER_MODE );
+        rSet.DisableItem( SID_SLIDE_MASTER_MODE );
+
+        rSet.ClearItem( SID_NOTES_MASTER_MODE );
+        rSet.DisableItem( SID_NOTES_MASTER_MODE );
+
+        rSet.ClearItem( SID_SLIDE_SORTER_MODE );
+        rSet.DisableItem( SID_SLIDE_SORTER_MODE );
     }
 
     if (GetDocSh()->GetCreateMode() == SfxObjectCreateMode::EMBEDDED)
     {
         // Outplace-Edit: do not allow switch
-        rSet.ClearItem( SID_OUTLINEMODE );
-        rSet.DisableItem( SID_OUTLINEMODE );
+        rSet.ClearItem( SID_OUTLINE_MODE );
+        rSet.DisableItem( SID_OUTLINE_MODE );
+
+        rSet.ClearItem( SID_SLIDE_SORTER_MODE );
+        rSet.DisableItem( SID_SLIDE_SORTER_MODE );
+
+        rSet.ClearItem( SID_NOTES_MODE );
+        rSet.DisableItem( SID_NOTES_MODE );
 
-        rSet.ClearItem( SID_DIAMODE );
-        rSet.DisableItem( SID_DIAMODE );
+        rSet.ClearItem( SID_HANDOUT_MASTER_MODE );
+        rSet.DisableItem( SID_HANDOUT_MASTER_MODE );
 
-        rSet.ClearItem( SID_NOTESMODE );
-        rSet.DisableItem( SID_NOTESMODE );
+        rSet.ClearItem( SID_SLIDE_MASTER_MODE );
+        rSet.DisableItem( SID_SLIDE_MASTER_MODE );
 
-        rSet.ClearItem( SID_HANDOUTMODE );
-        rSet.DisableItem( SID_HANDOUTMODE );
+        rSet.ClearItem( SID_NOTES_MASTER_MODE );
+        rSet.DisableItem( SID_NOTES_MASTER_MODE );
     }
 
     svx::ExtrusionBar::getState( mpDrawView, rSet );
diff --git a/sd/source/ui/view/drviewsa.cxx b/sd/source/ui/view/drviewsa.cxx
index c79450a..fd7de69 100644
--- a/sd/source/ui/view/drviewsa.cxx
+++ b/sd/source/ui/view/drviewsa.cxx
@@ -264,7 +264,7 @@ void DrawViewShell::Construct(DrawDocShell* pDocSh, PageKind eInitialPageKind)
 
     /* In order to set the correct EditMode of the FrameView, we select another
        one (small trick).  */
-    if (mpFrameView->GetViewShEditMode(mePageKind) == EM_PAGE)
+    if (mpFrameView->GetViewShEditMode(/*mePageKind*/) == EM_PAGE)
     {
         meEditMode = EM_MASTERPAGE;
     }
@@ -286,18 +286,18 @@ void DrawViewShell::Construct(DrawDocShell* pDocSh, PageKind eInitialPageKind)
     {
         if (mePageKind == PK_NOTES)
         {
-            SetHelpId( SID_NOTESMODE );
-            GetActiveWindow()->SetHelpId( CMD_SID_NOTESMODE );
-            GetActiveWindow()->SetUniqueId( CMD_SID_NOTESMODE );
+            SetHelpId( SID_NOTES_MODE );
+            GetActiveWindow()->SetHelpId( CMD_SID_NOTES_MODE );
+            GetActiveWindow()->SetUniqueId( CMD_SID_NOTES_MODE );
 
             // AutoLayouts have to be created
             GetDoc()->StopWorkStartupDelay();
         }
         else if (mePageKind == PK_HANDOUT)
         {
-            SetHelpId( SID_HANDOUTMODE );
-            GetActiveWindow()->SetHelpId( CMD_SID_HANDOUTMODE );
-            GetActiveWindow()->SetUniqueId( CMD_SID_HANDOUTMODE );
+            SetHelpId( SID_HANDOUT_MASTER_MODE );
+            GetActiveWindow()->SetHelpId( CMD_SID_HANDOUT_MASTER_MODE );
+            GetActiveWindow()->SetUniqueId( CMD_SID_HANDOUT_MASTER_MODE );
 
             // AutoLayouts have to be created
             GetDoc()->StopWorkStartupDelay();
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index fea938d..80b2bab 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -56,6 +56,7 @@
 #include <tools/urlobj.hxx>
 #include <svl/slstitm.hxx>
 #include <sfx2/ipclient.hxx>
+#include <sfx2/sidebar/Sidebar.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
 #include <avmedia/mediawindow.hxx>
 #include <svl/urihelper.hxx>
@@ -964,15 +965,18 @@ void DrawViewShell::FuSupport(SfxRequest& rReq)
         }
         break;
 
-        case SID_NOTESMODE:
-        case SID_HANDOUTMODE:
+        case SID_NOTES_MODE:
+        case SID_SLIDE_MASTER_MODE:
+        case SID_NOTES_MASTER_MODE:
+        case SID_HANDOUT_MASTER_MODE:
+
             // AutoLayouts have to be ready.
             GetDoc()->StopWorkStartupDelay();
             // Fall through to following case statements.
 
         case SID_DRAWINGMODE:
-        case SID_DIAMODE:
-        case SID_OUTLINEMODE:
+        case SID_SLIDE_SORTER_MODE:
+        case SID_OUTLINE_MODE:
             // Let the sub-shell manager handle the slot handling.
             framework::FrameworkHelper::Instance(GetViewShellBase())->HandleModeChangeSlot(
                 nSId,
@@ -981,9 +985,6 @@ void DrawViewShell::FuSupport(SfxRequest& rReq)
             break;
 
         case SID_MASTERPAGE:          // BASIC
-        case SID_SLIDE_MASTERPAGE:    // BASIC
-        case SID_NOTES_MASTERPAGE:    // BASIC
-        case SID_HANDOUT_MASTERPAGE:  // BASIC
         {
             // AutoLayouts needs to be finished
             GetDoc()->StopWorkStartupDelay();
@@ -999,70 +1000,32 @@ void DrawViewShell::FuSupport(SfxRequest& rReq)
             Broadcast (
                 ViewShellHint(ViewShellHint::HINT_CHANGE_EDIT_MODE_START));
 
-            if (nSId == SID_MASTERPAGE                                       ||
-                (nSId == SID_SLIDE_MASTERPAGE   && mePageKind == PK_STANDARD) ||
-                (nSId == SID_NOTES_MASTERPAGE   && mePageKind == PK_NOTES)    ||
-                (nSId == SID_HANDOUT_MASTERPAGE && mePageKind == PK_HANDOUT))
-            {
-                if (nSId == SID_SLIDE_MASTERPAGE)
-                {
-                    // Is there a page with the AutoLayout "Title"?
-                    bool bFound = false;
-                    sal_uInt16 i = 0;
-                    sal_uInt16 nCount = GetDoc()->GetSdPageCount(PK_STANDARD);
+            // Is there a page with the AutoLayout "Title"?
+            bool bFound = false;
+            sal_uInt16 i = 0;
+            sal_uInt16 nCount = GetDoc()->GetSdPageCount(PK_STANDARD);
 
-                    while (i < nCount && !bFound)
-                    {
-                        SdPage* pPage = GetDoc()->GetSdPage(i, PK_STANDARD);
-
-                        if (nSId == SID_SLIDE_MASTERPAGE && pPage->GetAutoLayout() != AUTOLAYOUT_TITLE)
-                        {
-                            bFound = true;
-                            SwitchPage((pPage->GetPageNum() - 1) / 2);
-                        }
+            while (i < nCount && !bFound)
+            {
+                SdPage* pPage = GetDoc()->GetSdPage(i, PK_STANDARD);
 
-                        i++;
-                    }
+                if (nSId == SID_SLIDE_MASTER_MODE && pPage->GetAutoLayout() != AUTOLAYOUT_TITLE)
+                {
+                    bFound = true;
+                    SwitchPage((pPage->GetPageNum() - 1) / 2);
                 }
 
-                // turn on default layer of MasterPage
-                mpDrawView->SetActiveLayer( SD_RESSTR(STR_LAYER_BCKGRNDOBJ) );
-
-                ChangeEditMode(EM_MASTERPAGE, mbIsLayerModeActive);
-
-                if(HasCurrentFunction(SID_BEZIER_EDIT))
-                    GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SfxCallMode::ASYNCHRON);
+                i++;
             }
-            else
-            {
-                // Switch to requested ViewShell.
-                ::OUString sRequestedView;
-                PageKind ePageKind;
-                switch (nSId)
-                {
-                    case SID_SLIDE_MASTERPAGE:
-                    default:
-                        sRequestedView = framework::FrameworkHelper::msImpressViewURL;
-                        ePageKind = PK_STANDARD;
-                        break;
 
-                    case SID_NOTES_MASTERPAGE:
-                        sRequestedView = framework::FrameworkHelper::msNotesViewURL;
-                        ePageKind = PK_NOTES;
-                        break;
+            // turn on default layer of MasterPage
+            mpDrawView->SetActiveLayer( SD_RESSTR(STR_LAYER_BCKGRNDOBJ) );
 
-                    case SID_HANDOUT_MASTERPAGE:
-                        sRequestedView = framework::FrameworkHelper::msHandoutViewURL;
-                        ePageKind = PK_HANDOUT;
-                        break;
-                }
+            ChangeEditMode(EM_MASTERPAGE, mbIsLayerModeActive);
+
+            if(HasCurrentFunction(SID_BEZIER_EDIT))
+                GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SfxCallMode::ASYNCHRON);
 
-                mpFrameView->SetViewShEditMode(EM_MASTERPAGE, ePageKind);
-                mpFrameView->SetLayerMode(mbIsLayerModeActive);
-                framework::FrameworkHelper::Instance(GetViewShellBase())->RequestView(
-                    sRequestedView,
-                    framework::FrameworkHelper::msCenterPaneURL);
-            }
             Broadcast (
                 ViewShellHint(ViewShellHint::HINT_CHANGE_EDIT_MODE_END));
 
diff --git a/sd/source/ui/view/frmview.cxx b/sd/source/ui/view/frmview.cxx
index 2b34d6b..99c8797 100644
--- a/sd/source/ui/view/frmview.cxx
+++ b/sd/source/ui/view/frmview.cxx
@@ -175,9 +175,10 @@ FrameView::FrameView(SdDrawDocument* pDrawDoc, FrameView* pFrameView /* = NULK *
         mePageKindOnLoad = pFrameView->GetPageKindOnLoad();
         mnSelectedPage = pFrameView->GetSelectedPage();
         mnSelectedPageOnLoad = pFrameView->GetSelectedPageOnLoad();
-        meStandardEditMode = pFrameView->GetViewShEditMode(PK_STANDARD);
-        meNotesEditMode = pFrameView->GetViewShEditMode(PK_NOTES);
-        meHandoutEditMode = pFrameView->GetViewShEditMode(PK_HANDOUT);
+        meEditMode = pFrameView->GetViewShEditMode();
+        // meStandardEditMode = pFrameView->GetViewShEditMode(PK_STANDARD);
+        // meNotesEditMode = pFrameView->GetViewShEditMode(PK_NOTES);
+        // meHandoutEditMode = pFrameView->GetViewShEditMode(PK_HANDOUT);
         SetViewShEditModeOnLoad(pFrameView->GetViewShEditModeOnLoad());
         mbLayerMode = pFrameView->IsLayerMode();
         mbQuickEdit = pFrameView->IsQuickEdit();
@@ -209,9 +210,10 @@ FrameView::FrameView(SdDrawDocument* pDrawDoc, FrameView* pFrameView /* = NULK *
         mePageKindOnLoad = PK_STANDARD;
         mnSelectedPage = 0;
         mnSelectedPageOnLoad = 0;
-        meStandardEditMode = EM_PAGE;
-        meNotesEditMode = EM_PAGE;
-        meHandoutEditMode = EM_MASTERPAGE;
+        meEditMode = EM_PAGE;
+        // meStandardEditMode = EM_PAGE;
+        // meNotesEditMode = EM_PAGE;
+        // meHandoutEditMode = EM_MASTERPAGE;
         SetViewShEditModeOnLoad(EM_PAGE);
         mbLayerMode = false;
         SetEliminatePolyPoints(false);
@@ -317,43 +319,17 @@ void FrameView::Update(SdOptions* pOptions)
 /**
  * Set EditMode (Page or MasterPage) of working mode
  */
-void FrameView::SetViewShEditMode(EditMode eMode, PageKind eKind)
+void FrameView::SetViewShEditMode(EditMode eMode)
 {
-    if (eKind == PK_STANDARD)
-    {
-        meStandardEditMode = eMode;
-    }
-    else if (eKind == PK_NOTES)
-    {
-        meNotesEditMode = eMode;
-    }
-    else if (eKind == PK_HANDOUT)
-    {
-        meHandoutEditMode = eMode;
-    }
+    meEditMode = eMode;
 }
 
 /**
  * Return EditMode (Page or MasterPage) of working mode
  */
-EditMode FrameView::GetViewShEditMode(PageKind eKind)
+EditMode FrameView::GetViewShEditMode()
 {
-    EditMode eMode = EM_PAGE;
-
-    if (eKind == PK_STANDARD)
-    {
-        eMode = meStandardEditMode;
-    }
-    else if (eKind == PK_NOTES)
-    {
-        eMode = meNotesEditMode;
-    }
-    else if (eKind == PK_HANDOUT)
-    {
-        eMode = meHandoutEditMode;
-    }
-
-    return eMode;
+    return meEditMode;
 }
 
 void FrameView::SetViewShEditModeOnLoad (EditMode eMode)
@@ -445,9 +421,10 @@ void FrameView::WriteUserDataSequence ( css::uno::Sequence < css::beans::Propert
     aUserData.addValue( sUNO_View_IsClickChangeRotation, makeAny( IsClickChangeRotation() ) );
 
     aUserData.addValue( sUNO_View_SlidesPerRow, makeAny( (sal_Int16)GetSlidesPerRow() ) );
-    aUserData.addValue( sUNO_View_EditModeStandard, makeAny( (sal_Int32)GetViewShEditMode( PK_STANDARD ) ) );
-    aUserData.addValue( sUNO_View_EditModeNotes, makeAny( (sal_Int32)GetViewShEditMode( PK_NOTES ) ) );
-    aUserData.addValue( sUNO_View_EditModeHandout, makeAny( (sal_Int32)GetViewShEditMode( PK_HANDOUT ) ) );
+    aUserData.addValue( sUNO_View_EditMode, makeAny( (sal_Int32)GetViewShEditMode() ) );
+    // aUserData.addValue( sUNO_View_EditModeStandard, makeAny( (sal_Int32)GetViewShEditMode( PK_STANDARD ) ) );
+    // aUserData.addValue( sUNO_View_EditModeNotes, makeAny( (sal_Int32)GetViewShEditMode( PK_NOTES ) ) );
+    // aUserData.addValue( sUNO_View_EditModeHandout, makeAny( (sal_Int32)GetViewShEditMode( PK_HANDOUT ) ) );
 
     {
         const Rectangle aVisArea = GetVisArea();
@@ -655,31 +632,25 @@ void FrameView::ReadUserDataSequence ( const css::uno::Sequence < css::beans::Pr
                     SetSlidesPerRow( (sal_uInt16)nInt16 );
                 }
             }
-            else if ( pValue->Name == sUNO_View_EditModeStandard )
+            else if ( pValue->Name == sUNO_View_EditMode )
             {
                 if( pValue->Value >>= nInt32 )
                 {
                     SdDrawDocument* pDoc = dynamic_cast< SdDrawDocument* >( GetModel() );
                     if( pDoc && pDoc->GetDocSh() && ( SfxObjectCreateMode::EMBEDDED == pDoc->GetDocSh()->GetCreateMode() ) )
-                        SetViewShEditMode( (EditMode)nInt32, PK_STANDARD );
+                        SetViewShEditMode( (EditMode)nInt32 );
                 }
             }
-            else if ( pValue->Name == sUNO_View_EditModeNotes )
-            {
-                if( pValue->Value >>= nInt32 )
-                {
-                    SdDrawDocument* pDoc = dynamic_cast< SdDrawDocument* >( GetModel() );
-                    if( pDoc && pDoc->GetDocSh() && ( SfxObjectCreateMode::EMBEDDED == pDoc->GetDocSh()->GetCreateMode() ) )
-                        SetViewShEditMode( (EditMode)nInt32, PK_NOTES );
-                }
-            }
-            else if ( pValue->Name == sUNO_View_EditModeHandout )
+            // This one is kept for compatibility. Old value read from sUNO_View_EditModeStandard
+            // is used. New value will be written into sUNO_View_EditMode.
+            // Values from sUNO_View_EditModeNotes and sUNO_View_EditModeHangout will be ignored.
+            else if ( pValue->Name == sUNO_View_EditModeStandard )
             {
                 if( pValue->Value >>= nInt32 )
                 {
                     SdDrawDocument* pDoc = dynamic_cast< SdDrawDocument* >( GetModel() );
                     if( pDoc && pDoc->GetDocSh() && ( SfxObjectCreateMode::EMBEDDED == pDoc->GetDocSh()->GetCreateMode() ) )
-                        SetViewShEditMode( (EditMode)nInt32, PK_HANDOUT );
+                        SetViewShEditMode( (EditMode)nInt32 );
                 }
             }
             else if ( pValue->Name == sUNO_View_VisibleAreaTop )
@@ -906,13 +877,7 @@ void FrameView::ReadUserDataSequence ( const css::uno::Sequence < css::beans::Pr
             }
         }
 
-        switch (GetPageKindOnLoad())
-        {
-            case PK_STANDARD: SetViewShEditModeOnLoad(meStandardEditMode); break;
-            case PK_NOTES: SetViewShEditModeOnLoad(meNotesEditMode); break;
-            case PK_HANDOUT: SetViewShEditModeOnLoad(meHandoutEditMode); break;
-            default: SetViewShEditModeOnLoad(EM_PAGE); break;
-        }
+        SetViewShEditModeOnLoad(EM_PAGE);
 
         const Fraction aSnapGridWidthX( aSnapGridWidthXNum, aSnapGridWidthXDom );
         const Fraction aSnapGridWidthY( aSnapGridWidthYNum, aSnapGridWidthYDom );
diff --git a/sd/source/ui/view/outlnvsh.cxx b/sd/source/ui/view/outlnvsh.cxx
index bacfa42..8acacd4 100644
--- a/sd/source/ui/view/outlnvsh.cxx
+++ b/sd/source/ui/view/outlnvsh.cxx
@@ -538,10 +538,12 @@ void OutlineViewShell::FuSupport(SfxRequest &rReq)
         break;
 
         case SID_DRAWINGMODE:
-        case SID_NOTESMODE:
-        case SID_HANDOUTMODE:
-        case SID_DIAMODE:
-        case SID_OUTLINEMODE:
+        case SID_SLIDE_MASTER_MODE:
+        case SID_NOTES_MODE:
+        case SID_NOTES_MASTER_MODE:
+        case SID_HANDOUT_MASTER_MODE:
+        case SID_SLIDE_SORTER_MODE:
+        case SID_OUTLINE_MODE:
             framework::FrameworkHelper::Instance(GetViewShellBase())->HandleModeChangeSlot(
                 nSlot,
                 rReq);
@@ -724,11 +726,13 @@ void OutlineViewShell::GetMenuState( SfxItemSet &rSet )
 {
     ViewShell::GetMenuState(rSet);
 
-    rSet.Put(SfxBoolItem(SID_DIAMODE, false));
+    rSet.Put(SfxBoolItem(SID_SLIDE_SORTER_MODE, false));
     rSet.Put(SfxBoolItem(SID_DRAWINGMODE, false));
-    rSet.Put(SfxBoolItem(SID_OUTLINEMODE, true));
-    rSet.Put(SfxBoolItem(SID_NOTESMODE, false));
-    rSet.Put(SfxBoolItem(SID_HANDOUTMODE, false));
+    rSet.Put(SfxBoolItem(SID_SLIDE_MASTER_MODE, false));
+    rSet.Put(SfxBoolItem(SID_OUTLINE_MODE, true));
+    rSet.Put(SfxBoolItem(SID_NOTES_MODE, false));
+    rSet.Put(SfxBoolItem(SID_NOTES_MASTER_MODE, false));
+    rSet.Put(SfxBoolItem(SID_HANDOUT_MASTER_MODE, false));
 
     if (!mpZoomList->IsNextPossible())
     {
diff --git a/sd/uiconfig/simpress/toolbar/standardbar.xml b/sd/uiconfig/simpress/toolbar/standardbar.xml
index ef4658c..47d6776 100644
--- a/sd/uiconfig/simpress/toolbar/standardbar.xml
+++ b/sd/uiconfig/simpress/toolbar/standardbar.xml
@@ -41,6 +41,9 @@
  <toolbar:toolbaritem xlink:href=".uno:Undo"/>
  <toolbar:toolbaritem xlink:href=".uno:Redo"/>
  <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:DisplayMode" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ToggleTabBarVisibility" toolbar:visible="false"/>
+ <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:SearchDialog"/>
  <toolbar:toolbaritem xlink:href=".uno:SpellDialog"/>
  <toolbar:toolbaritem xlink:href=".uno:SpellOnline" toolbar:visible="false"/>
diff --git a/sd/util/sd.component b/sd/util/sd.component
index ab85d55..a3e531a 100644
--- a/sd/util/sd.component
+++ b/sd/util/sd.component
@@ -103,6 +103,10 @@
       constructor="com_sun_star_comp_sd_SlideLayoutController_get_implementation">
     <service name="com.sun.star.frame.ToolbarController"/>
   </implementation>
+  <implementation name="com.sun.star.comp.sd.DisplayModeController"
+      constructor="com_sun_star_comp_sd_DisplayModeController_get_implementation">
+    <service name="com.sun.star.frame.ToolbarController"/>
+  </implementation>
   <implementation name="sd::RandomAnimationNode"
       constructor="RandomAnimationNode_get_implementation">
     <service name="com.sun.star.comp.sd.RandomAnimationNode"/>


More information about the Libreoffice-commits mailing list