diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java index 6bd3eb49d1bd..0ee9c952f9d1 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java @@ -449,6 +449,11 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac return new RelativeRectangle(myTabs.getComponent()); } + @Override + public RelativeRectangle getAcceptAreaFallback() { + return getAcceptArea(); + } + @NotNull @Override public ContentResponse getContentResponse(@NotNull DockableContent content, RelativePoint point) { diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java index 1dd80ac7477e..f97eb9e2a8df 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java @@ -796,6 +796,11 @@ public class FavoritesTreeViewPanel extends JPanel implements DataProvider, Dock return new RelativeRectangle(myTree); } + @Override + public RelativeRectangle getAcceptAreaFallback() { + return getAcceptArea(); + } + @NotNull @Override public ContentResponse getContentResponse(@NotNull DockableContent content, RelativePoint point) { diff --git a/platform/platform-api/src/com/intellij/ui/docking/DockContainer.java b/platform/platform-api/src/com/intellij/ui/docking/DockContainer.java index 5d26e4cebc99..d2201cd08849 100644 --- a/platform/platform-api/src/com/intellij/ui/docking/DockContainer.java +++ b/platform/platform-api/src/com/intellij/ui/docking/DockContainer.java @@ -33,6 +33,11 @@ public interface DockContainer extends Disposable, Activatable { RelativeRectangle getAcceptArea(); + /** + * This area is used when nothing was found with getAcceptArea + */ + RelativeRectangle getAcceptAreaFallback(); + @NotNull ContentResponse getContentResponse(@NotNull DockableContent content, RelativePoint point); diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/DockableEditorTabbedContainer.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/DockableEditorTabbedContainer.java index e48da04150f3..4da325b7f750 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/DockableEditorTabbedContainer.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/DockableEditorTabbedContainer.java @@ -88,6 +88,10 @@ public class DockableEditorTabbedContainer implements DockContainer.Persistent { @Override public RelativeRectangle getAcceptArea() { + return new RelativeRectangle(mySplitters); + } + + public RelativeRectangle getAcceptAreaFallback() { JRootPane root = mySplitters.getRootPane(); return root != null ? new RelativeRectangle(root) : new RelativeRectangle(mySplitters); } diff --git a/platform/platform-impl/src/com/intellij/ui/docking/impl/DockManagerImpl.java b/platform/platform-impl/src/com/intellij/ui/docking/impl/DockManagerImpl.java index 0676031f81d8..73461ddb7fd4 100644 --- a/platform/platform-impl/src/com/intellij/ui/docking/impl/DockManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/docking/impl/DockManagerImpl.java @@ -346,6 +346,13 @@ public class DockManagerImpl extends DockManager implements PersistentStateCompo } } + for (DockContainer each : myContainers) { + RelativeRectangle rec = each.getAcceptAreaFallback(); + if (rec.contains(point) && each.getContentResponse(content, point).canAccept()) { + return each; + } + } + return null; } diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java index b6c39711d8b1..e6ecc58ea9ee 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java @@ -252,27 +252,32 @@ public class TerminalView { */ public class TerminalDockContainer implements DockContainer { private ToolWindow myTerminalToolWindow; - + public TerminalDockContainer(ToolWindow toolWindow) { myTerminalToolWindow = toolWindow; } - + @Override public RelativeRectangle getAcceptArea() { return new RelativeRectangle(myTerminalToolWindow.getComponent()); } - + + @Override + public RelativeRectangle getAcceptAreaFallback() { + return getAcceptArea(); + } + @NotNull @Override public ContentResponse getContentResponse(@NotNull DockableContent content, RelativePoint point) { return ContentResponse.ACCEPT_MOVE; } - + @Override public JComponent getContainerComponent() { return myTerminalToolWindow.getComponent(); } - + @Override public void add(@NotNull DockableContent content, RelativePoint dropTarget) { if (content.getKey() instanceof TerminalSessionVirtualFileImpl) { @@ -280,57 +285,57 @@ public class TerminalView { myTerminalWidget.addTab(terminalFile.getName(), terminalFile.getTerminal()); } } - + @Override public void closeAll() { - + } - + @Override public void addListener(Listener listener, Disposable parent) { - + } - + @Override public boolean isEmpty() { return false; } - + @Nullable @Override public Image startDropOver(@NotNull DockableContent content, RelativePoint point) { return null; } - + @Nullable @Override public Image processDropOver(@NotNull DockableContent content, RelativePoint point) { return null; } - + @Override public void resetDropOver(@NotNull DockableContent content) { - + } - + @Override public boolean isDisposeWhenEmpty() { return false; } - + @Override public void showNotify() { - + } - + @Override public void hideNotify() { - + } - + @Override public void dispose() { - + } } }