skin: Command+Q handling on MacOS
authorGiWoong Kim <giwoong.kim@samsung.com>
Mon, 9 Mar 2015 10:36:13 +0000 (19:36 +0900)
committerGiWoong Kim <giwoong.kim@samsung.com>
Tue, 2 Jun 2015 06:12:38 +0000 (15:12 +0900)
Change-Id: If229ed37e5336602ec84e060fa9ad14d42264382
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorShmSkin.java
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.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

index f2acba792cfb6e7c10510cba4901c836fb55dc56..ca327cead891ea507ec434e95be7014d4d7541d6 100644 (file)
@@ -195,13 +195,15 @@ public class EmulatorShmSkin extends EmulatorSkin {
                        dataFramebuffer.setPixels(0, 0,
                                        sizeFramebuffer, arrayFramebuffer, 0);
 
-                       display.asyncExec(new Runnable() {
-                               @Override
-                               public void run() {
-                                       imageFramebuffer.dispose();
-                                       imageFramebuffer = new Image(display, dataFramebuffer);
-                               }
-                       });
+                       if (display.isDisposed() == false) {
+                               display.asyncExec(new Runnable() {
+                                       @Override
+                                       public void run() {
+                                               imageFramebuffer.dispose();
+                                               imageFramebuffer = new Image(display, dataFramebuffer);
+                                       }
+                               });
+                       }
                }
 
                public void stopRequest() {
index 914730b8d0c4b1d86c38fb8af9346d1d07f3cdaa..cb245dfa6b15c7b0706519a7d4c1ddec2fa0b14d 100644 (file)
@@ -227,6 +227,21 @@ public class EmulatorSkin {
                setColorVM(); /* generate a identity color */
 
                this.keyWindowKeeper = new KeyWindowKeeper(this);
+
+               if (SwtUtil.isMacPlatform() == true) {
+                       shell.getDisplay().addListener(SWT.Close, new Listener() {
+                               @Override
+                               public void handleEvent(Event e) {
+                                       if (pressedKeyEventList.size() == 1) {
+                                               KeyEventData data = pressedKeyEventList.get(0);
+                                               if (data.keycode == SWT.COMMAND && data.stateMask == 0) {
+                                                       logger.info("COMMAND terminated!");
+                                                       EmulatorSkinMain.terminateImmediately(-1);
+                                               }
+                                       }
+                               }
+                       });
+               }
        }
 
        public void setCommunicator(SocketCommunicator communicator) {
index 8857421703e851ef555842278770f2258ffc01f1..85266e695afc328d42c23e311d8b4c31e9cbd5d9 100644 (file)
@@ -380,7 +380,9 @@ public class GeneralKeyWindow extends SkinWindow {
                                logger.info("activate");
 
                                if (SwtUtil.isMacPlatform() == true) {
-                                       parent.moveAbove(shell);
+                                       if (parent.isDisposed() == false) {
+                                               parent.moveAbove(shell);
+                                       }
                                } else {
                                        shell.getDisplay().asyncExec(new Runnable() {
                                                @Override
index ad68a27157082a326541c996990a791b05769639..c8f73677956a722a4ea57f14f9535fb1abc97506 100644 (file)
@@ -231,7 +231,9 @@ public class SpecialKeyWindow extends SkinWindow {
                                logger.info("activate");
 
                                if (SwtUtil.isMacPlatform() == true) {
-                                       parent.moveAbove(shell);
+                                       if (parent.isDisposed() == false) {
+                                               parent.moveAbove(shell);
+                                       }
                                } else {
                                        shell.getDisplay().asyncExec(new Runnable() {
                                                @Override