mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-16 10:20:50 +00:00
Avoid inconsistent states with Workspace::m_dropPreview* members
This commit is contained in:
parent
ecc2f06492
commit
7ba1138b40
@ -760,7 +760,7 @@ void Tabs::stopDrag(DropTabResult result)
|
||||
m_removedTab.reset();
|
||||
destroyFloatingTab();
|
||||
|
||||
//ASSERT(tab); // TODO check this state
|
||||
ASSERT(tab.get());
|
||||
if (tab)
|
||||
removeTab(tab->view, false);
|
||||
break;
|
||||
|
@ -159,23 +159,29 @@ void Workspace::setDropViewPreview(const gfx::Point& pos,
|
||||
|
||||
void Workspace::removeDropViewPreview()
|
||||
{
|
||||
if (m_dropPreviewPanel)
|
||||
if (m_dropPreviewPanel) {
|
||||
m_dropPreviewPanel->removeDropViewPreview();
|
||||
m_dropPreviewPanel = nullptr;
|
||||
}
|
||||
|
||||
if (m_dropPreviewTabs)
|
||||
if (m_dropPreviewTabs) {
|
||||
m_dropPreviewTabs->removeDropViewPreview();
|
||||
m_dropPreviewTabs = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
bool Workspace::dropViewAt(const gfx::Point& pos, WorkspaceView* view)
|
||||
{
|
||||
if (m_dropPreviewPanel)
|
||||
return m_dropPreviewPanel->dropViewAt(pos, getViewPanel(view), view);
|
||||
else if (m_dropPreviewTabs) {
|
||||
WorkspacePanel* dropPanel = m_dropPreviewTabs->panel();
|
||||
WorkspaceTabs* tabs = getTabsAt(pos);
|
||||
WorkspacePanel* panel = getPanelAt(pos);
|
||||
|
||||
if (panel)
|
||||
return panel->dropViewAt(pos, getViewPanel(view), view);
|
||||
else if (tabs && tabs != getViewPanel(view)->tabs()) {
|
||||
WorkspacePanel* dropPanel = tabs->panel();
|
||||
ASSERT(dropPanel);
|
||||
|
||||
int pos = m_dropPreviewTabs->getDropTabIndex();
|
||||
m_dropPreviewTabs->removeDropViewPreview();
|
||||
int pos = tabs->getDropTabIndex();
|
||||
|
||||
removeView(view);
|
||||
addViewToPanel(dropPanel, view, pos);
|
||||
|
Loading…
x
Reference in New Issue
Block a user