Fix scroll issues when we clone a view

This commit is contained in:
David Capello 2015-04-21 10:24:42 -03:00
parent e17804e9ff
commit e4f62942b7
3 changed files with 19 additions and 3 deletions

View File

@ -292,11 +292,16 @@ void MainWindow::onCloseTab(Tabs* tabs, TabView* tabView)
void MainWindow::onCloneTab(Tabs* tabs, TabView* tabView, int pos)
{
EditorView::SetScrollUpdateMethod(EditorView::KeepOrigin);
WorkspaceView* view = dynamic_cast<WorkspaceView*>(tabView);
WorkspaceView* copy = view->cloneWorkspaceView();
ASSERT(copy);
WorkspaceView* clone = view->cloneWorkspaceView();
ASSERT(clone);
m_workspace->addViewToPanel(
static_cast<WorkspaceTabs*>(tabs)->panel(), copy, true, pos);
static_cast<WorkspaceTabs*>(tabs)->panel(), clone, true, pos);
clone->onClonedFrom(view);
}
void MainWindow::onContextMenuTab(Tabs* tabs, TabView* tabView)

View File

@ -215,6 +215,7 @@ DropViewAtResult Workspace::dropViewAt(const gfx::Point& pos, WorkspaceView* vie
int pos = tabs->getDropTabIndex();
DropViewAtResult result;
WorkspaceView* originalView = view;
if (clone) {
view = view->cloneWorkspaceView();
result = DropViewAtResult::CLONED_VIEW;
@ -225,6 +226,10 @@ DropViewAtResult Workspace::dropViewAt(const gfx::Point& pos, WorkspaceView* vie
}
addViewToPanel(dropPanel, view, true, pos);
if (result == DropViewAtResult::CLONED_VIEW)
view->onClonedFrom(originalView);
return result;
}
else
@ -239,6 +244,7 @@ void Workspace::addViewToPanel(WorkspacePanel* panel, WorkspaceView* view, bool
m_views.push_back(view);
setActiveView(view);
layout();
}
WorkspacePanel* Workspace::getViewPanel(WorkspaceView* view)

View File

@ -244,6 +244,7 @@ DropViewAtResult WorkspacePanel::dropViewAt(const gfx::Point& pos, WorkspacePane
ASSERT(from);
DropViewAtResult result;
Workspace* workspace = getWorkspace();
WorkspaceView* originalView = view;
if (clone) {
view = view->cloneWorkspaceView();
result = DropViewAtResult::CLONED_VIEW;
@ -305,6 +306,10 @@ DropViewAtResult WorkspacePanel::dropViewAt(const gfx::Point& pos, WorkspacePane
workspace->addViewToPanel(newPanel, view, true, -1);
parent->layout();
if (result == DropViewAtResult::CLONED_VIEW)
view->onClonedFrom(originalView);
return result;
}