diff --git a/stuff/config/qss/Astral_048_VeryDark/Astral_048_VeryDark.qss b/stuff/config/qss/Astral_048_VeryDark/Astral_048_VeryDark.qss
index 943c3d3..1413593 100644
--- a/stuff/config/qss/Astral_048_VeryDark/Astral_048_VeryDark.qss
+++ b/stuff/config/qss/Astral_048_VeryDark/Astral_048_VeryDark.qss
@@ -1488,7 +1488,8 @@ FxSettings QToolBar QToolBar {
 /* -----------------------------------------------------------------------------
    Tool Options
 ----------------------------------------------------------------------------- */
-#ToolOptions TPanelTitleBar {
+#ToolOptions TPanelTitleBar,
+#CommandBar TPanelTitleBar {
   background-color: #303030;
   background-image: url('../Astral_072_Dark/imgs/white/title_grip_vertical.svg');
   background-repeat: no-repeat;
@@ -1551,6 +1552,15 @@ PopupButton::menu-indicator:disabled {
 #XSheetToolbar #XSheetToolbarLevelButton {
   padding: 2;
 }
+#CommandBar {
+  margin: 0;
+  padding: 0;
+  border: 0;
+}
+#CommandBar::separator:horizontal {
+  margin-right: 3;
+  margin-left: 3;
+}
 QToolBar#MediumPaddingToolBar QToolButton {
   padding-left: 3;
   padding-right: 3;
diff --git a/stuff/config/qss/Astral_072_Dark/Astral_072_Dark.qss b/stuff/config/qss/Astral_072_Dark/Astral_072_Dark.qss
index 994bef1..673aeec 100644
--- a/stuff/config/qss/Astral_072_Dark/Astral_072_Dark.qss
+++ b/stuff/config/qss/Astral_072_Dark/Astral_072_Dark.qss
@@ -1488,7 +1488,8 @@ FxSettings QToolBar QToolBar {
 /* -----------------------------------------------------------------------------
    Tool Options
 ----------------------------------------------------------------------------- */
-#ToolOptions TPanelTitleBar {
+#ToolOptions TPanelTitleBar,
+#CommandBar TPanelTitleBar {
   background-color: #484848;
   background-image: url('imgs/white/title_grip_vertical.svg');
   background-repeat: no-repeat;
@@ -1551,6 +1552,15 @@ PopupButton::menu-indicator:disabled {
 #XSheetToolbar #XSheetToolbarLevelButton {
   padding: 2;
 }
+#CommandBar {
+  margin: 0;
+  padding: 0;
+  border: 0;
+}
+#CommandBar::separator:horizontal {
+  margin-right: 3;
+  margin-left: 3;
+}
 QToolBar#MediumPaddingToolBar QToolButton {
   padding-left: 3;
   padding-right: 3;
diff --git a/stuff/config/qss/Astral_072_Dark/less/layouts/toolbar.less b/stuff/config/qss/Astral_072_Dark/less/layouts/toolbar.less
index 8c90d2d..7cb7065 100644
--- a/stuff/config/qss/Astral_072_Dark/less/layouts/toolbar.less
+++ b/stuff/config/qss/Astral_072_Dark/less/layouts/toolbar.less
@@ -29,7 +29,7 @@
    Tool Options
 ----------------------------------------------------------------------------- */
 
-#ToolOptions {
+#ToolOptions, #CommandBar {
   & TPanelTitleBar {
     // Use grip handles for title bar
     background-color: @bg;
@@ -113,6 +113,16 @@ PopupButton {
   }
 }
 
+#CommandBar {
+	margin: 0;
+	padding: 0;
+	border: 0;
+		&::separator:horizontal {
+		margin-right: 3;
+		margin-left: 3;
+	}
+}
+
 QToolBar#MediumPaddingToolBar { //Schematic Toolbars
     & QToolButton {
       padding-left: 3;
diff --git a/stuff/config/qss/Astral_128_Neutral/Astral_128_Neutral.qss b/stuff/config/qss/Astral_128_Neutral/Astral_128_Neutral.qss
index 35a43e6..059b984 100644
--- a/stuff/config/qss/Astral_128_Neutral/Astral_128_Neutral.qss
+++ b/stuff/config/qss/Astral_128_Neutral/Astral_128_Neutral.qss
@@ -1488,7 +1488,8 @@ FxSettings QToolBar QToolBar {
 /* -----------------------------------------------------------------------------
    Tool Options
 ----------------------------------------------------------------------------- */
-#ToolOptions TPanelTitleBar {
+#ToolOptions TPanelTitleBar,
+#CommandBar TPanelTitleBar {
   background-color: #808080;
   background-image: url('../Astral_072_Dark/imgs/black/title_grip_vertical.svg');
   background-repeat: no-repeat;
@@ -1551,6 +1552,15 @@ PopupButton::menu-indicator:disabled {
 #XSheetToolbar #XSheetToolbarLevelButton {
   padding: 2;
 }
+#CommandBar {
+  margin: 0;
+  padding: 0;
+  border: 0;
+}
+#CommandBar::separator:horizontal {
+  margin-right: 3;
+  margin-left: 3;
+}
 QToolBar#MediumPaddingToolBar QToolButton {
   padding-left: 3;
   padding-right: 3;
diff --git a/stuff/profiles/layouts/rooms/Default/menubar_template.xml b/stuff/profiles/layouts/rooms/Default/menubar_template.xml
index b9e1347..8867a81 100644
--- a/stuff/profiles/layouts/rooms/Default/menubar_template.xml
+++ b/stuff/profiles/layouts/rooms/Default/menubar_template.xml
@@ -226,6 +226,7 @@
     <command>MI_OpenTasks</command>
     <command>MI_OpenTMessage</command>
     <command>MI_OpenToolbar</command>
+    <command>MI_OpenCommandToolbar</command>
     <command>MI_OpenToolOptionBar</command>
     <command>MI_OpenLevelView</command>
     <command>MI_OpenComboViewer</command>
diff --git a/toonz/sources/toonz/CMakeLists.txt b/toonz/sources/toonz/CMakeLists.txt
index 8818d87..2d960c1 100644
--- a/toonz/sources/toonz/CMakeLists.txt
+++ b/toonz/sources/toonz/CMakeLists.txt
@@ -29,6 +29,7 @@ set(MOC_HEADERS
     colormodelviewer.h
     columncommand.h
     columnselection.h
+    commandbar.h
     convertpopup.h
     curveio.h
     drawingdata.h
@@ -163,6 +164,7 @@ set(HEADERS ${MOC_HEADERS})
 set(SOURCES
     floatingpanelcommand.cpp
     canvassizepopup.cpp
+    commandbar.cpp
     history.cpp
     loadfoldercommand.cpp
     loadfolderpopup.cpp
diff --git a/toonz/sources/toonz/commandbar.cpp b/toonz/sources/toonz/commandbar.cpp
new file mode 100644
index 0000000..ceea7fb
--- /dev/null
+++ b/toonz/sources/toonz/commandbar.cpp
@@ -0,0 +1,84 @@
+
+
+#include "commandbar.h"
+
+// Tnz6 includes
+#include "tapp.h"
+#include "menubarcommandids.h"
+// TnzQt includes
+#include "toonzqt/gutil.h"
+
+// TnzLib includes
+#include "toonz/preferences.h"
+#include "toonz/tscenehandle.h"
+#include "toonzqt/menubarcommand.h"
+
+// Qt includes
+#include <QWidgetAction>
+
+
+//=============================================================================
+// Toolbar
+//-----------------------------------------------------------------------------
+
+#if QT_VERSION >= 0x050500
+CommandBar::CommandBar(QWidget *parent, Qt::WindowFlags flags,
+                             bool isCollapsible)
+#else
+CommandBar::CommandBar(XsheetViewer *parent, Qt::WFlags flags)
+#endif
+    : QToolBar(parent), m_isCollapsible(isCollapsible) {
+  setObjectName("cornerWidget");
+  setObjectName("CommandBar");
+
+  TApp *app        = TApp::instance();
+  m_keyFrameButton = new ViewerKeyframeNavigator(this, app->getCurrentFrame());
+  m_keyFrameButton->setObjectHandle(app->getCurrentObject());
+  m_keyFrameButton->setXsheetHandle(app->getCurrentXsheet());
+
+  QWidgetAction *keyFrameAction = new QWidgetAction(this);
+  keyFrameAction->setDefaultWidget(m_keyFrameButton);
+
+  {
+    QAction *newVectorLevel =
+        CommandManager::instance()->getAction("MI_NewVectorLevel");
+    addAction(newVectorLevel);
+    QAction *newToonzRasterLevel =
+        CommandManager::instance()->getAction("MI_NewToonzRasterLevel");
+    addAction(newToonzRasterLevel);
+    QAction *newRasterLevel =
+        CommandManager::instance()->getAction("MI_NewRasterLevel");
+    addAction(newRasterLevel);
+    addSeparator();
+    QAction *reframeOnes = CommandManager::instance()->getAction("MI_Reframe1");
+    addAction(reframeOnes);
+    QAction *reframeTwos = CommandManager::instance()->getAction("MI_Reframe2");
+    addAction(reframeTwos);
+    QAction *reframeThrees =
+        CommandManager::instance()->getAction("MI_Reframe3");
+    addAction(reframeThrees);
+
+    addSeparator();
+
+    QAction *repeat = CommandManager::instance()->getAction("MI_Dup");
+    addAction(repeat);
+
+    addSeparator();
+
+    QAction *collapse = CommandManager::instance()->getAction("MI_Collapse");
+    addAction(collapse);
+    QAction *open = CommandManager::instance()->getAction("MI_OpenChild");
+    addAction(open);
+    QAction *leave = CommandManager::instance()->getAction("MI_CloseChild");
+    addAction(leave);
+
+    addSeparator();
+    addAction(keyFrameAction);
+  }
+}
+
+
+
+
+
+
diff --git a/toonz/sources/toonz/commandbar.h b/toonz/sources/toonz/commandbar.h
new file mode 100644
index 0000000..12262d7
--- /dev/null
+++ b/toonz/sources/toonz/commandbar.h
@@ -0,0 +1,44 @@
+#pragma once
+
+#ifndef COMMANDBAR_H
+#define COMMANDBAR_H
+
+#include <memory>
+
+#include "toonz/txsheet.h"
+#include "toonz/txshleveltypes.h"
+#include "toonzqt/keyframenavigator.h"
+
+#include <QToolBar>
+
+//-----------------------------------------------------------------------------
+
+// forward declaration
+class XsheetViewer;
+class QPushButton;
+
+//=============================================================================
+// XSheet Toolbar
+//-----------------------------------------------------------------------------
+
+class CommandBar final : public QToolBar {
+  Q_OBJECT
+
+  //XsheetViewer *m_viewer;
+  ViewerKeyframeNavigator *m_keyFrameButton;
+  bool m_isCollapsible;
+
+public:
+#if QT_VERSION >= 0x050500
+  CommandBar(QWidget *parent = 0, Qt::WindowFlags flags = 0,
+                bool isCollapsible = false);
+#else
+  CommandBar(XsheetViewer *parent = 0, Qt::WFlags flags = 0);
+#endif
+  
+signals:
+  void updateVisibility();
+ 
+};
+
+#endif  // COMMANDBAR_H
diff --git a/toonz/sources/toonz/mainwindow.cpp b/toonz/sources/toonz/mainwindow.cpp
index 65e0fb3..6d44d82 100644
--- a/toonz/sources/toonz/mainwindow.cpp
+++ b/toonz/sources/toonz/mainwindow.cpp
@@ -307,8 +307,9 @@ void Room::load(const TFilePath &fp) {
     QVariant name = settings.value("name");
     if (name.canConvert(QVariant::String)) {
       // Allocate panel
-      paneObjectName = name.toString();
-      pane           = TPanelFactory::createPanel(this, paneObjectName);
+      paneObjectName          = name.toString();
+      std::string paneStrName = paneObjectName.toStdString();
+      pane = TPanelFactory::createPanel(this, paneObjectName);
       if (SaveLoadQSettings *persistent =
               dynamic_cast<SaveLoadQSettings *>(pane->widget()))
         persistent->load(settings);
@@ -445,6 +446,12 @@ centralWidget->setLayout(centralWidgetLayout);*/
   setCommandHandler(MI_About, this, &MainWindow::onAbout);
   setCommandHandler(MI_MaximizePanel, this, &MainWindow::maximizePanel);
   setCommandHandler(MI_FullScreenWindow, this, &MainWindow::fullScreenWindow);
+  setCommandHandler("MI_NewVectorLevel", this,
+                    &MainWindow::onNewVectorLevelButtonPressed);
+  setCommandHandler("MI_NewToonzRasterLevel", this,
+                    &MainWindow::onNewToonzRasterLevelButtonPressed);
+  setCommandHandler("MI_NewRasterLevel", this,
+                    &MainWindow::onNewRasterLevelButtonPressed);
   // remove ffmpegCache if still exists from crashed exit
   QString ffmpegCachePath =
       ToonzFolder::getCacheRootFolder().getQString() + "//ffmpeg";
@@ -1601,6 +1608,20 @@ void MainWindow::defineActions() {
   createMenuFileAction(MI_ClearRecentLevel, tr("&Clear Recent level File List"),
                        "");
   createMenuFileAction(MI_NewLevel, tr("&New Level..."), "Alt+N");
+
+  QAction *newVectorLevelAction =
+      createMenuFileAction(MI_NewVectorLevel, tr("&New Vector Level"), "");
+  newVectorLevelAction->setIconText(tr("New Vector Level"));
+  newVectorLevelAction->setIcon(createQIconPNG("new_vector_level"));
+  QAction *newToonzRasterLevelAction = createMenuFileAction(
+      MI_NewToonzRasterLevel, tr("&New Toonz Raster Level"), "");
+  newToonzRasterLevelAction->setIconText(tr("New Toonz Raster Level"));
+  newToonzRasterLevelAction->setIcon(createQIconPNG("new_toonz_raster_level"));
+  QAction *newRasterLevelAction =
+      createMenuFileAction(MI_NewRasterLevel, tr("&New Raster Level"), "");
+  newRasterLevelAction->setIconText(tr("New Raster Level"));
+  newRasterLevelAction->setIcon(createQIconPNG("new_raster_level"));
+
   createMenuFileAction(MI_LoadLevel, tr("&Load Level..."), "");
   createMenuFileAction(MI_SaveLevel, tr("&Save Level"), "");
   createMenuFileAction(MI_SaveAllLevels, tr("&Save All Levels"), "");
@@ -1957,6 +1978,7 @@ void MainWindow::defineActions() {
   createMenuWindowsAction(MI_OpenStyleControl, tr("&Style Editor"), "");
   createMenuWindowsAction(MI_OpenToolbar, tr("&Toolbar"), "");
   createMenuWindowsAction(MI_OpenToolOptionBar, tr("&Tool Option Bar"), "");
+  createMenuWindowsAction(MI_OpenCommandToolbar, tr("&Command Bar"), "");
   createMenuWindowsAction(MI_OpenLevelView, tr("&Viewer"), "");
 #ifdef LINETEST
   createMenuWindowsAction(MI_OpenLineTestCapture, tr("&LineTest Capture"), "");
@@ -2259,6 +2281,33 @@ void MainWindow::togglePickStyleLines() {
 
 //-----------------------------------------------------------------------------
 
+void MainWindow::onNewVectorLevelButtonPressed() {
+  int defaultLevelType = Preferences::instance()->getDefLevelType();
+  Preferences::instance()->setDefLevelType(PLI_XSHLEVEL);
+  CommandManager::instance()->execute("MI_NewLevel");
+  Preferences::instance()->setDefLevelType(defaultLevelType);
+}
+
+//-----------------------------------------------------------------------------
+
+void MainWindow::onNewToonzRasterLevelButtonPressed() {
+  int defaultLevelType = Preferences::instance()->getDefLevelType();
+  Preferences::instance()->setDefLevelType(TZP_XSHLEVEL);
+  CommandManager::instance()->execute("MI_NewLevel");
+  Preferences::instance()->setDefLevelType(defaultLevelType);
+}
+
+//-----------------------------------------------------------------------------
+
+void MainWindow::onNewRasterLevelButtonPressed() {
+  int defaultLevelType = Preferences::instance()->getDefLevelType();
+  Preferences::instance()->setDefLevelType(OVL_XSHLEVEL);
+  CommandManager::instance()->execute("MI_NewLevel");
+  Preferences::instance()->setDefLevelType(defaultLevelType);
+}
+
+//-----------------------------------------------------------------------------
+
 class ReloadStyle final : public MenuItemHandler {
 public:
   ReloadStyle() : MenuItemHandler("MI_ReloadStyle") {}
diff --git a/toonz/sources/toonz/mainwindow.h b/toonz/sources/toonz/mainwindow.h
index bfdb041..1c07330 100644
--- a/toonz/sources/toonz/mainwindow.h
+++ b/toonz/sources/toonz/mainwindow.h
@@ -118,6 +118,9 @@ public:
   /*-- StylepickerAreas,StylepickerLinesに直接切り替えるコマンド --*/
   void togglePickStyleAreas();
   void togglePickStyleLines();
+  void onNewVectorLevelButtonPressed();
+  void onNewToonzRasterLevelButtonPressed();
+  void onNewRasterLevelButtonPressed();
 
   QString getLayoutName() { return m_layoutName; }
 
diff --git a/toonz/sources/toonz/menubar.cpp b/toonz/sources/toonz/menubar.cpp
index f8ec356..4d68975 100644
--- a/toonz/sources/toonz/menubar.cpp
+++ b/toonz/sources/toonz/menubar.cpp
@@ -1335,6 +1335,7 @@ QMenuBar *StackedMenuBar::createFullMenuBar() {
   addMenuItem(windowsMenu, MI_OpenTasks);
   addMenuItem(windowsMenu, MI_OpenTMessage);
   addMenuItem(windowsMenu, MI_OpenToolbar);
+  addMenuItem(windowsMenu, MI_OpenCommandToolbar);
   addMenuItem(windowsMenu, MI_OpenToolOptionBar);
   addMenuItem(windowsMenu, MI_OpenLevelView);
   addMenuItem(windowsMenu, MI_OpenComboViewer);
diff --git a/toonz/sources/toonz/menubarcommandids.h b/toonz/sources/toonz/menubarcommandids.h
index 8f023f6..912ca8c 100644
--- a/toonz/sources/toonz/menubarcommandids.h
+++ b/toonz/sources/toonz/menubarcommandids.h
@@ -26,6 +26,9 @@
 #define MI_ClearRecentLevel "MI_ClearRecentLevel"
 #define MI_PrintXsheet "MI_PrintXsheet"
 #define MI_NewLevel "MI_NewLevel"
+#define MI_NewVectorLevel "MI_NewVectorLevel"
+#define MI_NewToonzRasterLevel "MI_NewToonzRasterLevel"
+#define MI_NewRasterLevel "MI_NewRasterLevel"
 #define MI_LoadLevel "MI_LoadLevel"
 #define MI_LoadFolder "MI_LoadFolder"
 #define MI_SaveLevel "MI_SaveLevel"
@@ -86,6 +89,7 @@
 #define MI_OpenFileBrowser2 "MI_OpenFileBrowser2"
 #define MI_OpenStyleControl "MI_OpenStyleControl"
 #define MI_OpenToolbar "MI_OpenToolbar"
+#define MI_OpenCommandToolbar "MI_OpenCommandToolbar"
 #define MI_OpenToolOptionBar "MI_OpenToolOptionBar"
 #define MI_OpenLevelView "MI_OpenLevelView"
 #ifdef LINETEST
diff --git a/toonz/sources/toonz/tpanels.cpp b/toonz/sources/toonz/tpanels.cpp
index 0fe5898..951753e 100644
--- a/toonz/sources/toonz/tpanels.cpp
+++ b/toonz/sources/toonz/tpanels.cpp
@@ -14,6 +14,7 @@
 #include "xsheetviewer.h"
 #include "sceneviewer.h"
 #include "toolbar.h"
+#include "commandbar.h"
 #include "flipbook.h"
 #include "castviewer.h"
 #include "filebrowser.h"
@@ -862,6 +863,35 @@ public:
 } toolbarFactory;
 
 //=========================================================
+// Command Bar Panel
+//---------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+CommandBarPanel::CommandBarPanel(QWidget *parent)
+    : TPanel(parent, 0, TDockWidget::horizontal) {
+  CommandBar *xsheetToolbar = new CommandBar();
+  setWidget(xsheetToolbar);
+  setIsMaximizable(false);
+  setFixedHeight(36);
+}
+
+class CommandBarFactory final : public TPanelFactory {
+public:
+  CommandBarFactory() : TPanelFactory("CommandBar") {}
+  TPanel *createPanel(QWidget *parent) override {
+    TPanel *panel = new CommandBarPanel(parent);
+    panel->setObjectName(getPanelType());
+    return panel;
+  }
+  void initialize(TPanel *panel) override {}
+} commandBarFactory;
+
+//=============================================================================
+OpenFloatingPanel openCommandBarCommand(MI_OpenCommandToolbar, "CommandBar",
+                                        QObject::tr("Command Bar"));
+//-----------------------------------------------------------------------------
+
+//=========================================================
 // ToolOptionPanel
 //---------------------------------------------------------
 
diff --git a/toonz/sources/toonz/tpanels.h b/toonz/sources/toonz/tpanels.h
index d6501d8..db50598 100644
--- a/toonz/sources/toonz/tpanels.h
+++ b/toonz/sources/toonz/tpanels.h
@@ -210,6 +210,15 @@ public:
   ToolOptionPanel(QWidget *parent);
 };
 
+class CommandBarPanel final : public TPanel {
+  Q_OBJECT
+
+  // ToolOptions *m_toolOption;
+
+public:
+  CommandBarPanel(QWidget *parent);
+};
+
 //=========================================================
 // FlipbookPanel
 //---------------------------------------------------------
diff --git a/toonz/sources/toonz/xsheetviewer.cpp b/toonz/sources/toonz/xsheetviewer.cpp
index b34eeb9..e8bd779 100644
--- a/toonz/sources/toonz/xsheetviewer.cpp
+++ b/toonz/sources/toonz/xsheetviewer.cpp
@@ -169,13 +169,9 @@ XsheetViewer::XsheetViewer(QWidget *parent, Qt::WFlags flags)
       TApp::instance()->getCurrentXsheet());
 
   m_toolbarScrollArea = new XsheetScrollArea(this);
-  m_toolbarScrollArea->setFixedSize(m_orientation->cellWidth() * 12,
-                                    XsheetGUI::TOOLBAR_HEIGHT);
   m_toolbarScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
   m_toolbarScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-  m_toolbar = new XsheetGUI::Toolbar(this);
-  m_toolbar->setFixedSize(m_orientation->cellWidth() * 12,
-                          XsheetGUI::TOOLBAR_HEIGHT);
+  m_toolbar = new XsheetGUI::XSheetToolbar(this, 0, true);
   m_toolbarScrollArea->setWidget(m_toolbar);
 
   QRect noteArea(0, 0, 75, 120);
@@ -215,6 +211,8 @@ XsheetViewer::XsheetViewer(QWidget *parent, Qt::WFlags flags)
 
   connect(this, &XsheetViewer::orientationChanged, this,
           &XsheetViewer::onOrientationChanged);
+  connect(m_toolbar, SIGNAL(updateVisibility()), this,
+          SLOT(positionSections()));
 
   emit orientationChanged(orientation());
 }
@@ -313,10 +311,9 @@ void XsheetViewer::positionSections() {
 
   if (Preferences::instance()->isShowXSheetToolbarEnabled()) {
     m_toolbar->showToolbar(true);
-
-    int w = geometry().size().width();
+    int w = visibleRegion().boundingRect().width() - 5;
     m_toolbarScrollArea->setGeometry(0, 0, w, XsheetGUI::TOOLBAR_HEIGHT);
-
+    m_toolbar->setFixedWidth(w);
     if (o->isVerticalTimeline()) {
       headerFrame = headerFrame.adjusted(XsheetGUI::TOOLBAR_HEIGHT,
                                          XsheetGUI::TOOLBAR_HEIGHT);
diff --git a/toonz/sources/toonz/xsheetviewer.h b/toonz/sources/toonz/xsheetviewer.h
index 7a8238c..c55624c 100644
--- a/toonz/sources/toonz/xsheetviewer.h
+++ b/toonz/sources/toonz/xsheetviewer.h
@@ -325,7 +325,7 @@ class XsheetViewer final : public QFrame, public SaveLoadQSettings {
   XsheetGUI::RowArea *m_rowArea;
   XsheetGUI::CellArea *m_cellArea;
   XsheetGUI::NoteArea *m_noteArea;
-  XsheetGUI::Toolbar *m_toolbar;
+  XsheetGUI::XSheetToolbar *m_toolbar;
 
   Spreadsheet::FrameScroller m_frameScroller;
 
@@ -698,7 +698,6 @@ protected:
   void wheelEvent(QWheelEvent *event) override;
   void timerEvent(QTimerEvent *) override;
 
-  void positionSections();
   void disconnectScrollBars();
   void connectScrollBars();
   void connectOrDisconnectScrollBars(bool toConnect);
@@ -708,6 +707,7 @@ signals:
   void orientationChanged(const Orientation *newOrientation);
 
 public slots:
+  void positionSections();
   void onSceneSwitched();
   void onXsheetChanged();
   void onCurrentFrameSwitched();
diff --git a/toonz/sources/toonz/xshtoolbar.cpp b/toonz/sources/toonz/xshtoolbar.cpp
index 114d9cc..eafafb5 100644
--- a/toonz/sources/toonz/xshtoolbar.cpp
+++ b/toonz/sources/toonz/xshtoolbar.cpp
@@ -12,9 +12,11 @@
 // TnzLib includes
 #include "toonz/preferences.h"
 #include "toonz/tscenehandle.h"
+#include "toonzqt/menubarcommand.h"
 
 // Qt includes
 #include <QPushButton>
+#include <QWidgetAction>
 
 //=============================================================================
 
@@ -25,144 +27,77 @@ namespace XsheetGUI {
 //-----------------------------------------------------------------------------
 
 #if QT_VERSION >= 0x050500
-Toolbar::Toolbar(XsheetViewer *parent, Qt::WindowFlags flags)
+XSheetToolbar::XSheetToolbar(XsheetViewer *parent, Qt::WindowFlags flags,
+                             bool isCollapsible)
 #else
-Toolbar::Toolbar(XsheetViewer *parent, Qt::WFlags flags)
+XSheetToolbar::XSheetToolbar(XsheetViewer *parent, Qt::WFlags flags)
 #endif
-    : QFrame(parent), m_viewer(parent) {
-  setFrameStyle(QFrame::StyledPanel);
+    : QToolBar(parent), m_viewer(parent), m_isCollapsible(isCollapsible) {
   setObjectName("cornerWidget");
-  m_toolbar = new QToolBar();
-  m_toolbar->setFixedHeight(30);
-  m_toolbar->setObjectName("XSheetToolbar");
-
-  m_newVectorLevelButton = new QPushButton(this);
-  m_newVectorLevelButton->setIconSize(QSize(18, 18));
-  QIcon newVectorIcon = createQIconPNG("new_vector_level");
-  m_newVectorLevelButton->setIcon(newVectorIcon);
-  m_newVectorLevelButton->setObjectName("XSheetToolbarLevelButton");
-  m_newVectorLevelButton->setToolTip(tr("New Vector Level"));
-
-  m_newToonzRasterLevelButton = new QPushButton(this);
-  m_newToonzRasterLevelButton->setIconSize(QSize(18, 18));
-  QIcon newToonzRasterIcon = createQIconPNG("new_toonz_raster_level");
-  m_newToonzRasterLevelButton->setIcon(newToonzRasterIcon);
-  m_newToonzRasterLevelButton->setObjectName("XSheetToolbarLevelButton");
-  m_newToonzRasterLevelButton->setToolTip(tr("New Toonz Raster Level"));
-
-  m_newRasterLevelButton = new QPushButton(this);
-  m_newRasterLevelButton->setIconSize(QSize(18, 18));
-  QIcon newRasterIcon = createQIconPNG("new_raster_level");
-  m_newRasterLevelButton->setIcon(newRasterIcon);
-  m_newRasterLevelButton->setObjectName("XSheetToolbarLevelButton");
-  m_newRasterLevelButton->setToolTip(tr("New Raster Level"));
+  setFixedHeight(30);
+  setObjectName("XSheetToolbar");
 
   TApp *app        = TApp::instance();
   m_keyFrameButton = new ViewerKeyframeNavigator(this, app->getCurrentFrame());
   m_keyFrameButton->setObjectHandle(app->getCurrentObject());
   m_keyFrameButton->setXsheetHandle(app->getCurrentXsheet());
 
-  QVBoxLayout *mainLay = new QVBoxLayout();
-  mainLay->setMargin(0);
-  mainLay->setSpacing(5);
+  QWidgetAction *keyFrameAction = new QWidgetAction(this);
+  keyFrameAction->setDefaultWidget(m_keyFrameButton);
+
   {
-    mainLay->addStretch(1);
-    QHBoxLayout *toolbarLayout = new QHBoxLayout();
-    toolbarLayout->setSpacing(2);
-    toolbarLayout->setMargin(0);
-    {
-      m_toolbar->addWidget(m_newVectorLevelButton);
-      m_toolbar->addWidget(m_newToonzRasterLevelButton);
-      m_toolbar->addWidget(m_newRasterLevelButton);
-      m_toolbar->addSeparator();
-      QAction *reframeOnes =
-          CommandManager::instance()->getAction("MI_Reframe1");
-      m_toolbar->addAction(reframeOnes);
-      QAction *reframeTwos =
-          CommandManager::instance()->getAction("MI_Reframe2");
-      m_toolbar->addAction(reframeTwos);
-      QAction *reframeThrees =
-          CommandManager::instance()->getAction("MI_Reframe3");
-      m_toolbar->addAction(reframeThrees);
-
-      m_toolbar->addSeparator();
-
-      QAction *repeat = CommandManager::instance()->getAction("MI_Dup");
-      m_toolbar->addAction(repeat);
-
-      m_toolbar->addSeparator();
-
-      QAction *collapse = CommandManager::instance()->getAction("MI_Collapse");
-      m_toolbar->addAction(collapse);
-      QAction *open = CommandManager::instance()->getAction("MI_OpenChild");
-      m_toolbar->addAction(open);
-      QAction *leave = CommandManager::instance()->getAction("MI_CloseChild");
-      m_toolbar->addAction(leave);
-
-      m_toolbar->addSeparator();
-      m_toolbar->addWidget(m_keyFrameButton);
-      toolbarLayout->addWidget(m_toolbar);
-      toolbarLayout->addStretch(0);
-    }
-    mainLay->addLayout(toolbarLayout, 0);
-    if (!Preferences::instance()->isShowXSheetToolbarEnabled()) {
-      m_toolbar->hide();
+    QAction *newVectorLevel =
+        CommandManager::instance()->getAction("MI_NewVectorLevel");
+    addAction(newVectorLevel);
+    QAction *newToonzRasterLevel =
+        CommandManager::instance()->getAction("MI_NewToonzRasterLevel");
+    addAction(newToonzRasterLevel);
+    QAction *newRasterLevel =
+        CommandManager::instance()->getAction("MI_NewRasterLevel");
+    addAction(newRasterLevel);
+    addSeparator();
+    QAction *reframeOnes = CommandManager::instance()->getAction("MI_Reframe1");
+    addAction(reframeOnes);
+    QAction *reframeTwos = CommandManager::instance()->getAction("MI_Reframe2");
+    addAction(reframeTwos);
+    QAction *reframeThrees =
+        CommandManager::instance()->getAction("MI_Reframe3");
+    addAction(reframeThrees);
+
+    addSeparator();
+
+    QAction *repeat = CommandManager::instance()->getAction("MI_Dup");
+    addAction(repeat);
+
+    addSeparator();
+
+    QAction *collapse = CommandManager::instance()->getAction("MI_Collapse");
+    addAction(collapse);
+    QAction *open = CommandManager::instance()->getAction("MI_OpenChild");
+    addAction(open);
+    QAction *leave = CommandManager::instance()->getAction("MI_CloseChild");
+    addAction(leave);
+
+    addSeparator();
+    addAction(keyFrameAction);
+
+    if (!Preferences::instance()->isShowXSheetToolbarEnabled() &&
+        m_isCollapsible) {
+      hide();
     }
-
-    mainLay->addStretch(1);
   }
-  setLayout(mainLay);
-
-  // signal-slot connections
-  bool ret = true;
-  ret      = ret && connect(m_newVectorLevelButton, SIGNAL(released()), this,
-                       SLOT(onNewVectorLevelButtonPressed()));
-  ret = ret && connect(m_newToonzRasterLevelButton, SIGNAL(released()), this,
-                       SLOT(onNewToonzRasterLevelButtonPressed()));
-  ret = ret && connect(m_newRasterLevelButton, SIGNAL(released()), this,
-                       SLOT(onNewRasterLevelButtonPressed()));
-  assert(ret);
-
-  // m_leaveSubButton->hide();
 }
 
 //-----------------------------------------------------------------------------
 
-void Toolbar::onNewVectorLevelButtonPressed() {
-  int defaultLevelType = Preferences::instance()->getDefLevelType();
-  Preferences::instance()->setDefLevelType(PLI_XSHLEVEL);
-  CommandManager::instance()->execute("MI_NewLevel");
-  Preferences::instance()->setDefLevelType(defaultLevelType);
+void XSheetToolbar::showToolbar(bool show) {
+  if (!m_isCollapsible) return;
+  show ? this->show() : this->hide();
 }
 
 //-----------------------------------------------------------------------------
 
-void Toolbar::onNewToonzRasterLevelButtonPressed() {
-  int defaultLevelType = Preferences::instance()->getDefLevelType();
-  // Preferences::instance()->setOldDefLevelType(defaultLevelType);
-  Preferences::instance()->setDefLevelType(TZP_XSHLEVEL);
-  CommandManager::instance()->execute("MI_NewLevel");
-  Preferences::instance()->setDefLevelType(defaultLevelType);
-}
-
-//-----------------------------------------------------------------------------
-
-void Toolbar::onNewRasterLevelButtonPressed() {
-  int defaultLevelType = Preferences::instance()->getDefLevelType();
-  Preferences::instance()->setDefLevelType(OVL_XSHLEVEL);
-  CommandManager::instance()->execute("MI_NewLevel");
-  Preferences::instance()->setDefLevelType(defaultLevelType);
-}
-
-//-----------------------------------------------------------------------------
-
-void Toolbar::showToolbar(bool show) {
-  show ? m_toolbar->show() : m_toolbar->hide();
-}
-
-//-----------------------------------------------------------------------------
-
-void Toolbar::toggleXSheetToolbar() {
+void XSheetToolbar::toggleXSheetToolbar() {
   bool toolbarEnabled = Preferences::instance()->isShowXSheetToolbarEnabled();
   Preferences::instance()->enableShowXSheetToolbar(!toolbarEnabled);
   TApp::instance()->getCurrentScene()->notifyPreferenceChanged("XSheetToolbar");
@@ -170,12 +105,20 @@ void Toolbar::toggleXSheetToolbar() {
 
 //-----------------------------------------------------------------------------
 
+void XSheetToolbar::showEvent(QShowEvent *e) {
+  if (Preferences::instance()->isShowXSheetToolbarEnabled() || !m_isCollapsible)
+    show();
+  else
+    hide();
+  emit updateVisibility();
+}
+
 //============================================================
 
 class ToggleXSheetToolbarCommand final : public MenuItemHandler {
 public:
   ToggleXSheetToolbarCommand() : MenuItemHandler(MI_ToggleXSheetToolbar) {}
-  void execute() override { Toolbar::toggleXSheetToolbar(); }
+  void execute() override { XSheetToolbar::toggleXSheetToolbar(); }
 } ToggleXSheetToolbarCommand;
 
 //============================================================
diff --git a/toonz/sources/toonz/xshtoolbar.h b/toonz/sources/toonz/xshtoolbar.h
index 18e5f70..0ca8690 100644
--- a/toonz/sources/toonz/xshtoolbar.h
+++ b/toonz/sources/toonz/xshtoolbar.h
@@ -26,30 +26,27 @@ namespace XsheetGUI {
 // XSheet Toolbar
 //-----------------------------------------------------------------------------
 
-class Toolbar final : public QFrame {
+class XSheetToolbar final : public QToolBar {
   Q_OBJECT
 
   XsheetViewer *m_viewer;
-
-  QPushButton *m_newVectorLevelButton;
-  QPushButton *m_newToonzRasterLevelButton;
-  QPushButton *m_newRasterLevelButton;
   ViewerKeyframeNavigator *m_keyFrameButton;
-  QToolBar *m_toolbar;
+  bool m_isCollapsible;
 
 public:
 #if QT_VERSION >= 0x050500
-  Toolbar(XsheetViewer *parent = 0, Qt::WindowFlags flags = 0);
+  XSheetToolbar(XsheetViewer *parent = 0, Qt::WindowFlags flags = 0,
+                bool isCollapsible = false);
 #else
-  Toolbar(XsheetViewer *parent = 0, Qt::WFlags flags = 0);
+  XSheetToolbar(XsheetViewer *parent = 0, Qt::WFlags flags = 0);
 #endif
   static void toggleXSheetToolbar();
   void showToolbar(bool show);
+signals:
+  void updateVisibility();
 
-protected slots:
-  void onNewVectorLevelButtonPressed();
-  void onNewToonzRasterLevelButtonPressed();
-  void onNewRasterLevelButtonPressed();
+protected:
+  void showEvent(QShowEvent *e) override;
 };
 
 }  // namespace XsheetGUI;