mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-156004 Mac OS: black stripes appear at the top and thr bottom of IDEA window after restarting in full screen
This commit is contained in:
@@ -32,8 +32,10 @@ import com.intellij.openapi.actionSystem.impl.MouseGestureManager;
|
||||
import com.intellij.openapi.application.Application;
|
||||
import com.intellij.openapi.application.ApplicationInfo;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.openapi.application.ex.ApplicationInfoEx;
|
||||
import com.intellij.openapi.application.ex.ApplicationManagerEx;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.ui.impl.ShadowPainter;
|
||||
@@ -66,12 +68,16 @@ import java.awt.image.BufferedImage;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author Anton Katilin
|
||||
* @author Vladimir Kondratyev
|
||||
*/
|
||||
public class IdeFrameImpl extends JFrame implements IdeFrameEx, AccessibleContextAccessor, DataProvider {
|
||||
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.wm.impl.IdeFrameImpl");
|
||||
|
||||
public static final Key<Boolean> SHOULD_OPEN_IN_FULL_SCREEN = Key.create("should.open.in.full.screen");
|
||||
|
||||
private static final String FULL_SCREEN = "FullScreen";
|
||||
@@ -549,7 +555,7 @@ public class IdeFrameImpl extends JFrame implements IdeFrameEx, AccessibleContex
|
||||
}
|
||||
|
||||
public Rectangle suggestChildFrameBounds() {
|
||||
//todo [kirillk] a dummy implementation
|
||||
//todo [kirillk] a dummy implementation
|
||||
final Rectangle b = getBounds();
|
||||
b.x += 100;
|
||||
b.width -= 200;
|
||||
@@ -570,6 +576,9 @@ public class IdeFrameImpl extends JFrame implements IdeFrameEx, AccessibleContex
|
||||
@NotNull
|
||||
@Override
|
||||
public ActionCallback toggleFullScreen(boolean state) {
|
||||
|
||||
if (temporaryFixForIdea156004(state)) return ActionCallback.DONE;
|
||||
|
||||
if (myFrameDecorator != null) {
|
||||
return myFrameDecorator.toggleFullScreen(state);
|
||||
}
|
||||
@@ -581,6 +590,29 @@ public class IdeFrameImpl extends JFrame implements IdeFrameEx, AccessibleContex
|
||||
return ActionCallback.DONE;
|
||||
}
|
||||
|
||||
private boolean temporaryFixForIdea156004(final boolean state) {
|
||||
if (SystemInfo.isMac) {
|
||||
try {
|
||||
Field modalBlockerField = Window.class.getDeclaredField("modalBlocker");
|
||||
modalBlockerField.setAccessible(true);
|
||||
final Window modalBlocker = (Window)modalBlockerField.get(this);
|
||||
if (modalBlocker != null) {
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
toggleFullScreen(state);
|
||||
}, ModalityState.NON_MODAL);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (NoSuchFieldException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
catch (IllegalAccessException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AccessibleContext getAccessibleContext() {
|
||||
if (accessibleContext == null) {
|
||||
|
||||
Reference in New Issue
Block a user