MCPcopy Create free account
hub / github.com/LibreSprite/LibreSprite / dropViewAt

Method dropViewAt

src/app/ui/workspace.cpp:218–254  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

216}
217
218DropViewAtResult Workspace::dropViewAt(const gfx::Point& pos, WorkspaceView* view, bool clone)
219{
220 WorkspaceTabs* tabs = getTabsAt(pos);
221 WorkspacePanel* panel = getPanelAt(pos);
222
223 if (panel) {
224 // Create new panel
225 return panel->dropViewAt(pos, getViewPanel(view), view, clone);
226 }
227 else if (tabs && tabs != getViewPanel(view)->tabs()) {
228 // Dock tab in other tabs
229 WorkspacePanel* dropPanel = tabs->panel();
230 ASSERT(dropPanel);
231
232 int pos = tabs->getDropTabIndex();
233 DropViewAtResult result;
234
235 WorkspaceView* originalView = view;
236 if (clone) {
237 view = view->cloneWorkspaceView();
238 result = DropViewAtResult::CLONED_VIEW;
239 }
240 else {
241 removeView(view);
242 result = DropViewAtResult::MOVED_TO_OTHER_PANEL;
243 }
244
245 addViewToPanel(dropPanel, view, true, pos);
246
247 if (result == DropViewAtResult::CLONED_VIEW)
248 view->onClonedFrom(originalView);
249
250 return result;
251 }
252 else
253 return DropViewAtResult::NOTHING;
254}
255
256void Workspace::addViewToPanel(WorkspacePanel* panel, WorkspaceView* view, bool from_drop, int pos)
257{

Callers 1

onDropTabMethod · 0.45

Calls 5

tabsMethod · 0.80
panelMethod · 0.80
getDropTabIndexMethod · 0.80
cloneWorkspaceViewMethod · 0.45
onClonedFromMethod · 0.45

Tested by

no test coverage detected