| 216 | } |
| 217 | |
| 218 | DropViewAtResult 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 | |
| 256 | void Workspace::addViewToPanel(WorkspacePanel* panel, WorkspaceView* view, bool from_drop, int pos) |
| 257 | { |
no test coverage detected