diff --git a/src/app/ui/main_window.cpp b/src/app/ui/main_window.cpp index 41cdcecf0..5653e4cb9 100644 --- a/src/app/ui/main_window.cpp +++ b/src/app/ui/main_window.cpp @@ -62,6 +62,7 @@ MainWindow::MainWindow() m_toolBar = new ToolBar(); m_tabsBar = new Tabs(this); m_workspace = new Workspace(); + m_workspace->setTabsBar(m_tabsBar); m_workspace->ActiveViewChanged.connect(&MainWindow::onActiveViewChange, this); m_previewEditor = new PreviewEditorWindow(); m_timeline = new Timeline(); diff --git a/src/app/ui/workspace.cpp b/src/app/ui/workspace.cpp index b72ee90bf..44ea6f418 100644 --- a/src/app/ui/workspace.cpp +++ b/src/app/ui/workspace.cpp @@ -28,6 +28,7 @@ using namespace ui; Workspace::Workspace() : Widget(kGenericWidget) + , m_tabsBar(nullptr) , m_activeView(nullptr) { SkinTheme* theme = static_cast(getTheme()); @@ -40,6 +41,11 @@ Workspace::~Workspace() ASSERT(m_views.empty()); } +void Workspace::setTabsBar(Tabs* tabsBar) +{ + m_tabsBar = tabsBar; +} + void Workspace::addView(WorkspaceView* view, int pos) { if (pos < 0) @@ -47,7 +53,7 @@ void Workspace::addView(WorkspaceView* view, int pos) else m_views.insert(m_views.begin()+pos, view); - App::instance()->getMainWindow()->getTabsBar()->addTab(dynamic_cast(view), pos); + m_tabsBar->addTab(dynamic_cast(view), pos); setActiveView(view); } @@ -59,11 +65,10 @@ void Workspace::removeView(WorkspaceView* view) if (content->getParent()) content->getParent()->removeChild(content); - // Remove related tab - Tabs* tabs = App::instance()->getMainWindow()->getTabsBar(); - tabs->removeTab(dynamic_cast(view)); + // Remove related tab. + m_tabsBar->removeTab(dynamic_cast(view)); - TabView* tabView = tabs->getSelectedTab(); + TabView* tabView = m_tabsBar->getSelectedTab(); setActiveView(dynamic_cast(tabView)); } diff --git a/src/app/ui/workspace.h b/src/app/ui/workspace.h index 37a2362f9..a2f7c1f32 100644 --- a/src/app/ui/workspace.h +++ b/src/app/ui/workspace.h @@ -17,6 +17,7 @@ #include namespace app { + class Tabs; class Workspace : public ui::Widget { public: @@ -25,6 +26,7 @@ namespace app { Workspace(); ~Workspace(); + void setTabsBar(Tabs* tabsBar); iterator begin() { return m_views.begin(); } iterator end() { return m_views.end(); } @@ -44,6 +46,7 @@ namespace app { void onPaint(ui::PaintEvent& ev) override; private: + Tabs* m_tabsBar; WorkspaceViews m_views; WorkspaceView* m_activeView; };