mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
support custom decorated frames
This commit is contained in:
@@ -23,6 +23,7 @@ import com.intellij.ide.actions.ViewToolbarAction;
|
||||
import com.intellij.ide.ui.UISettings;
|
||||
import com.intellij.ide.ui.UISettingsListener;
|
||||
import com.intellij.ide.ui.customization.CustomActionsSchema;
|
||||
import com.intellij.ide.ui.laf.darcula.ui.DarculaRootPaneUI;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.actionSystem.ex.ActionManagerEx;
|
||||
import com.intellij.openapi.application.Application;
|
||||
@@ -31,6 +32,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.wm.*;
|
||||
import com.intellij.openapi.wm.ex.IdeFrameEx;
|
||||
import com.intellij.openapi.wm.impl.status.IdeStatusBarImpl;
|
||||
@@ -88,6 +90,7 @@ public class IdeRootPane extends JRootPane implements UISettingsListener {
|
||||
|
||||
public IdeRootPane(ActionManagerEx actionManager, UISettings uiSettings, DataManager dataManager, Application application, final IdeFrame frame) {
|
||||
if (SystemInfo.isWindows && (UIUtil.isUnderDarcula() || UIUtil.isUnderIntelliJLaF()) && frame instanceof IdeFrameImpl) {
|
||||
//setUI(DarculaRootPaneUI.createUI(this));
|
||||
setWindowDecorationStyle(FRAME);
|
||||
}
|
||||
myActionManager = actionManager;
|
||||
@@ -108,14 +111,16 @@ public class IdeRootPane extends JRootPane implements UISettingsListener {
|
||||
myContentPane.add(myStatusBar, BorderLayout.SOUTH);
|
||||
|
||||
if (WindowManagerImpl.isFloatingMenuBarSupported()) {
|
||||
menuBar = new IdeMenuBar(actionManager, dataManager);
|
||||
getLayeredPane().add(menuBar, new Integer(JLayeredPane.DEFAULT_LAYER - 1));
|
||||
if (frame instanceof IdeFrameEx) {
|
||||
addPropertyChangeListener(WindowManagerImpl.FULL_SCREEN, new PropertyChangeListener() {
|
||||
@Override public void propertyChange(PropertyChangeEvent evt) {
|
||||
myFullScreen = ((IdeFrameEx)frame).isInFullScreen();
|
||||
}
|
||||
});
|
||||
if (!isDecoratedMenu()) {
|
||||
menuBar = new IdeMenuBar(actionManager, dataManager);
|
||||
getLayeredPane().add(menuBar, new Integer(JLayeredPane.DEFAULT_LAYER - 1));
|
||||
if (frame instanceof IdeFrameEx) {
|
||||
addPropertyChangeListener(WindowManagerImpl.FULL_SCREEN, new PropertyChangeListener() {
|
||||
@Override public void propertyChange(PropertyChangeEvent evt) {
|
||||
myFullScreen = ((IdeFrameEx)frame).isInFullScreen();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -353,7 +358,7 @@ public class IdeRootPane extends JRootPane implements UISettingsListener {
|
||||
else {
|
||||
rd = parent.getSize();
|
||||
}
|
||||
if (menuBar != null && menuBar.isVisible() && !myFullScreen) {
|
||||
if (menuBar != null && menuBar.isVisible() && !myFullScreen && !isDecoratedMenu()) {
|
||||
mbd = menuBar.getPreferredSize();
|
||||
}
|
||||
else {
|
||||
@@ -427,4 +432,8 @@ public class IdeRootPane extends JRootPane implements UISettingsListener {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isDecoratedMenu() {
|
||||
return SystemInfo.isWindows && getUI() instanceof DarculaRootPaneUI && Registry.is("ide.win.frame.decoration");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user