mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
DockableEditorTabbedContainer shouldn't return root pane as accept area as it makes impossible to add any other dockable container. It is better to return root pane in the special fallback method after we checked all containers.
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
+4
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user