import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
};
shell.addMenuDetectListener(shellMenuDetectListener);
+
+ /* keep window region while OS theme changing */
+ shell.getDisplay().addListener(SWT.Settings, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ logger.info("operating system property has been changed");
+
+ rearrangeSkin();
+ }
+ });
}
private void removeShellListeners() {
}
}
+ protected void rearrangeSkin() {
+ skinComposer.arrangeSkin(
+ currentState.getCurrentScale(),
+ currentState.getCurrentRotationId());
+ }
+
public void updateSkin() {
skinComposer.updateSkin();
}
/* make window region */
Region region = (SwtUtil.isLinuxPlatform() == false) ?
- getTrimmingRegion(shell.getDisplay(), generalSkin) : /* color key */
- SkinUtil.getTrimmingRegion(generalSkin);
+ getTrimmedRegion(shell.getDisplay(), generalSkin) : /* color key */
+ SkinUtil.getTrimmedRegion(generalSkin);
/* update the skin state information */
currentState.setCurrentScale(scale);
return displayBounds;
}
- private static Region getTrimmingRegion(Display display, Image image) {
+ private static Region getTrimmedRegion(Display display, Image image) {
if (null == image) {
return null;
}
shell.getDisplay(), originSkinKeyPressed, rotationId, scale);
/* make window region */
- Region region = SkinUtil.getTrimmingRegion(profileSkin);
+ Region region = SkinUtil.getTrimmedRegion(profileSkin);
/* update the skin state information */
currentState.setCurrentScale(scale);
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.tizen.emulator.skin.EmulatorSkin;
import org.tizen.emulator.skin.comm.ICommunicator.KeyEventType;
createContents();
- /* make window region */
- Region region = (SwtUtil.isLinuxPlatform() == false) ?
- getTrimmingRegion(shell.getDisplay(), imageFrame) : /* color key */
- SkinUtil.getTrimmingRegion(imageFrame);
- /* custom window shape */
- if (region != null) {
- shell.setRegion(region);
- }
+ trimWindow();
addKeyWindowListener();
}
}
- private static Region getTrimmingRegion(Display display, Image image) {
+ private static Region getTrimmedRegion(Display display, Image image) {
if (null == image) {
return null;
}
return region;
}
+ protected void trimWindow() {
+ /* make window region */
+ Region region = (SwtUtil.isLinuxPlatform() == false) ?
+ getTrimmedRegion(shell.getDisplay(), imageFrame) : /* color key */
+ SkinUtil.getTrimmedRegion(imageFrame);
+
+ /* custom window shape */
+ if (region != null) {
+ shell.setRegion(region);
+ }
+ }
+
private void addKeyWindowListener() {
shellPaintListener = new PaintListener() {
@Override
};
shell.addMouseListener(shellMouseListener);
+
+ /* keep window region while OS theme changing */
+ shell.getDisplay().addListener(SWT.Settings, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ trimWindow();
+ }
+ });
}
private void dispose() {
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.graphics.Region;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.tizen.emulator.skin.EmulatorSkin;
import org.tizen.emulator.skin.comm.ICommunicator.KeyEventType;
}
/* custom window shape */
- Region region = SkinUtil.getTrimmingRegion(keyWindowImage);
- if (region != null) {
- shell.setRegion(region);
- }
+ trimWindow();
addKeyWindowListener();
}
return null;
}
+ protected void trimWindow() {
+ Region region = SkinUtil.getTrimmedRegion(keyWindowImage);
+ if (region != null) {
+ shell.setRegion(region);
+ }
+ }
+
private void addKeyWindowListener() {
shellPaintListener = new PaintListener() {
@Override
};
shell.addMouseListener(shellMouseListener);
+
+ /* keep window region while OS theme changing */
+ shell.getDisplay().addListener(SWT.Settings, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ trimWindow();
+ }
+ });
}
private void dispose() {
return false;
}
- public static Region getTrimmingRegion(Image image) {
+ public static Region getTrimmedRegion(Image image) {
if (null == image) {
return null;
}