mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-16 10:20:50 +00:00
Fix scroll issues when we clone a view
This commit is contained in:
parent
e17804e9ff
commit
e4f62942b7
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user