Update all tabs (main Tabs and from subpanels) when a document is modified

This commit is contained in:
David Capello 2015-05-04 15:52:00 -03:00
parent 53e572eaf5
commit 5538c5a749
3 changed files with 22 additions and 2 deletions

View File

@ -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()

View File

@ -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<WorkspacePanel*>(child)->tabs()->updateTabs();
for (auto subchild : child->getChildren())
children.push_back(subchild);
}
}
void Workspace::onPaint(PaintEvent& ev)
{
ev.getGraphics()->fillRect(getBgColor(), getClientBounds());

View File

@ -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,