skin: keep window region while host OS theme changing 88/15988/1
authorGiWoong Kim <giwoong.kim@samsung.com>
Mon, 3 Feb 2014 08:24:04 +0000 (17:24 +0900)
committerGiWoong Kim <giwoong.kim@samsung.com>
Tue, 4 Feb 2014 08:44:18 +0000 (17:44 +0900)
Change-Id: I56e0309075cee9f4b3e1558bdf5c068090ae6188
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java
tizen/src/skin/client/src/org/tizen/emulator/skin/layout/GeneralPurposeSkinComposer.java
tizen/src/skin/client/src/org/tizen/emulator/skin/layout/ProfileSpecificSkinComposer.java
tizen/src/skin/client/src/org/tizen/emulator/skin/menu/GeneralKeyWindow.java
tizen/src/skin/client/src/org/tizen/emulator/skin/menu/SpecialKeyWindow.java
tizen/src/skin/client/src/org/tizen/emulator/skin/util/SkinUtil.java

index 9ad8b4d0868b636f06fd013bc7d97e520a6bda82..39cd19aa516ab2611ae9e4c7aa27f11710597cd1 100755 (executable)
@@ -62,6 +62,8 @@ import org.eclipse.swt.graphics.RGB;
 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;
@@ -587,6 +589,16 @@ public class EmulatorSkin {
                };
 
                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() {
@@ -1216,6 +1228,12 @@ public class EmulatorSkin {
                }
        }
 
+       protected void rearrangeSkin() {
+               skinComposer.arrangeSkin(
+                               currentState.getCurrentScale(),
+                               currentState.getCurrentRotationId());
+       }
+
        public void updateSkin() {
                skinComposer.updateSkin();
        }
index a9921d83c1c60f685ec1551b4e3ced1903b07d9c..0443ccf2999bf232e2c16b9dac942baef60168a7 100644 (file)
@@ -245,8 +245,8 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
 
                /* 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);
@@ -338,7 +338,7 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                return displayBounds;
        }
 
-       private static Region getTrimmingRegion(Display display, Image image) {
+       private static Region getTrimmedRegion(Display display, Image image) {
                if (null == image) {
                        return null;
                }
index 34e5b246e154dbc60f4f9a851b6c1246d1f606a1..3d387bfaea934a60d6b14efa74df547970875cf7 100644 (file)
@@ -212,7 +212,7 @@ public class ProfileSpecificSkinComposer implements ISkinComposer {
                                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);
index c8b517425cb31ad6498f8aed2fff853ebdf9328c..2680b4a851f62fd649ee5fc9d61376e2bcab1837 100644 (file)
@@ -50,6 +50,8 @@ import org.eclipse.swt.layout.GridData;
 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;
@@ -165,14 +167,7 @@ public class GeneralKeyWindow extends SkinWindow {
 
                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();
 
@@ -306,7 +301,7 @@ public class GeneralKeyWindow extends SkinWindow {
                }
        }
 
-       private static Region getTrimmingRegion(Display display, Image image) {
+       private static Region getTrimmedRegion(Display display, Image image) {
                if (null == image) {
                        return null;
                }
@@ -342,6 +337,18 @@ public class GeneralKeyWindow extends SkinWindow {
                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
@@ -511,6 +518,14 @@ public class GeneralKeyWindow extends SkinWindow {
                };
 
                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() {
index d53430c860170663a30ffe98bd93d50aa83ab9a7..57fded00c0bbebafbaad2a71371335c5e9bdddaa 100644 (file)
@@ -49,6 +49,8 @@ import org.eclipse.swt.graphics.ImageData;
 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;
@@ -138,10 +140,7 @@ public class SpecialKeyWindow extends SkinWindow {
                }
 
                /* custom window shape */
-               Region region = SkinUtil.getTrimmingRegion(keyWindowImage);
-               if (region != null) {
-                       shell.setRegion(region);
-               }
+               trimWindow();
 
                addKeyWindowListener();
        }
@@ -203,6 +202,13 @@ public class SpecialKeyWindow extends SkinWindow {
                return null;
        }
 
+       protected void trimWindow() {
+               Region region = SkinUtil.getTrimmedRegion(keyWindowImage);
+               if (region != null) {
+                       shell.setRegion(region);
+               }
+       }
+
        private void addKeyWindowListener() {
                shellPaintListener = new PaintListener() {
                        @Override
@@ -484,6 +490,14 @@ public class SpecialKeyWindow extends SkinWindow {
                };
 
                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() {
index 40bcffba09bd4d283cdd9c2bf4a32860209f2ab9..5c7a0c46065504daf6106f373050fba85e75f885 100644 (file)
@@ -197,7 +197,7 @@ public class SkinUtil {
                return false;
        }
 
-       public static Region getTrimmingRegion(Image image) {
+       public static Region getTrimmedRegion(Image image) {
                if (null == image) {
                        return null;
                }