diff --git a/src/app/app.cpp b/src/app/app.cpp index 5a14995be..a37a760e4 100644 --- a/src/app/app.cpp +++ b/src/app/app.cpp @@ -51,7 +51,7 @@ #include "app/ui/main_window.h" #include "app/ui/status_bar.h" #include "app/ui/toolbar.h" -#include "app/ui/workspace_tabs.h" +#include "app/ui/workspace.h" #include "app/ui_context.h" #include "app/util/boundary.h" #include "app/webserver.h" @@ -692,10 +692,13 @@ void app_refresh_screen() ui::Manager::getDefault()->invalidate(); } +// TODO remove app_rebuild_documents_tabs() and replace it by +// observable events in the document (so a tab can observe if the +// document is modified). void app_rebuild_documents_tabs() { if (App::instance()->isGui()) - App::instance()->getMainWindow()->getTabsBar()->updateTabs(); + App::instance()->getMainWindow()->getWorkspace()->updateTabs(); } PixelFormat app_get_current_pixel_format() diff --git a/src/app/ui/workspace.cpp b/src/app/ui/workspace.cpp index a7b8eff67..2e28031cc 100644 --- a/src/app/ui/workspace.cpp +++ b/src/app/ui/workspace.cpp @@ -137,6 +137,21 @@ void Workspace::duplicateActiveView() setActiveView(clone); } +void Workspace::updateTabs() +{ + WidgetsList children = getChildren(); + while (!children.empty()) { + Widget* child = children.back(); + children.erase(--children.end()); + + if (child->getType() == WorkspacePanel::Type()) + static_cast(child)->tabs()->updateTabs(); + + for (auto subchild : child->getChildren()) + children.push_back(subchild); + } +} + void Workspace::onPaint(PaintEvent& ev) { ev.getGraphics()->fillRect(getBgColor(), getClientBounds()); diff --git a/src/app/ui/workspace.h b/src/app/ui/workspace.h index 7e90b1159..ec4d8e308 100644 --- a/src/app/ui/workspace.h +++ b/src/app/ui/workspace.h @@ -47,6 +47,8 @@ namespace app { void selectPreviousTab(); void duplicateActiveView(); + void updateTabs(); + // Set the preview of what could happen if we drop the given // "view" at the "pos"? DropViewPreviewResult setDropViewPreview(const gfx::Point& pos,