Merge with e17-extra-modules devel.
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 4 Jun 2013 14:47:04 +0000 (23:47 +0900)
committerMun, Gwan-gyeong <kk.moon@samsung.com>
Wed, 5 Jun 2013 06:09:08 +0000 (15:09 +0900)
77 files changed:
accessibility/src/e_mod_main.c
comp-tizen/data/group/dialog_without_dim.edc [new file with mode: 0644]
comp-tizen/data/group/fake_effect_fade.edc
comp-tizen/data/group/home_screen.edc
comp-tizen/data/group/keyboard.edc
comp-tizen/data/group/shadow_fade.edc
comp-tizen/data/group/wnd_rot_prev_pixmap.edc [deleted file]
comp-tizen/data/shadow.edc
comp-tizen/src/Makefile.am
comp-tizen/src/e_mod_comp.c
comp-tizen/src/e_mod_comp_animation.c [deleted file]
comp-tizen/src/e_mod_comp_animation.h [deleted file]
comp-tizen/src/e_mod_comp_canvas.c
comp-tizen/src/e_mod_comp_cfdata.c
comp-tizen/src/e_mod_comp_cfdata.h
comp-tizen/src/e_mod_comp_debug.c
comp-tizen/src/e_mod_comp_effect.c
comp-tizen/src/e_mod_comp_effect.h
comp-tizen/src/e_mod_comp_effect_image_launch.c
comp-tizen/src/e_mod_comp_effect_screen_capture.c [deleted file]
comp-tizen/src/e_mod_comp_effect_screen_capture.h [deleted file]
comp-tizen/src/e_mod_comp_effect_tm.c [deleted file]
comp-tizen/src/e_mod_comp_effect_tm.h [deleted file]
comp-tizen/src/e_mod_comp_effect_win_rotation.c
comp-tizen/src/e_mod_comp_object.c
comp-tizen/src/e_mod_comp_policy.c
comp-tizen/src/e_mod_comp_shared_types.h
comp-tizen/src/e_mod_comp_util.c
comp-tizen/src/e_mod_comp_win_shape_input.c
comp-tizen/src/e_mod_comp_win_shape_input.h
comp-tizen/src/e_mod_comp_win_type.c
comp-tizen/src/e_mod_comp_win_type.h
devicemgr/src/e_devicemgr_privates.h
devicemgr/src/e_mod_config.c
devicemgr/src/e_mod_scrnconf.c
devicemgr/src/scrnconf_devicemgr.h [changed mode: 0644->0755]
devicemgr/src/sf_rotation_devicemgr.c
illume2-tizen/src/e_illume.h
illume2-tizen/src/e_illume_private.h
illume2-tizen/src/e_mod_floating_window.c
illume2-tizen/src/e_mod_floating_window.h
illume2-tizen/src/e_mod_quickpanel.c
illume2-tizen/src/policies/illume/policy.c
illume2-tizen/src/policies/illume/policy.h
move-tizen/src/Makefile.am
move-tizen/src/e_mod_move.c
move-tizen/src/e_mod_move_apptray.c
move-tizen/src/e_mod_move_atoms.c
move-tizen/src/e_mod_move_atoms.h
move-tizen/src/e_mod_move_border_type.h
move-tizen/src/e_mod_move_cfdata.c
move-tizen/src/e_mod_move_cfdata.h
move-tizen/src/e_mod_move_control_object.c
move-tizen/src/e_mod_move_control_object.h
move-tizen/src/e_mod_move_debug.c
move-tizen/src/e_mod_move_event.c
move-tizen/src/e_mod_move_event.h
move-tizen/src/e_mod_move_flick.c
move-tizen/src/e_mod_move_flick.h
move-tizen/src/e_mod_move_indicator.c
move-tizen/src/e_mod_move_indicator_controller.c [deleted file]
move-tizen/src/e_mod_move_indicator_controller.h [deleted file]
move-tizen/src/e_mod_move_indicator_widget.c
move-tizen/src/e_mod_move_indicator_widget.h
move-tizen/src/e_mod_move_mini_apptray.c
move-tizen/src/e_mod_move_mini_apptray.h
move-tizen/src/e_mod_move_mini_apptray_widget.c
move-tizen/src/e_mod_move_mini_apptray_widget.h
move-tizen/src/e_mod_move_object.c
move-tizen/src/e_mod_move_object.h
move-tizen/src/e_mod_move_quickpanel.c
move-tizen/src/e_mod_move_shared_types.h
move-tizen/src/e_mod_move_util.c
move-tizen/src/e_mod_move_util.h
move-tizen/src/e_mod_move_widget_object.c
move-tizen/src/e_mod_move_widget_object.h
packaging/e17-extra-modules.spec

index cab9995..6cebe8f 100755 (executable)
@@ -915,8 +915,12 @@ static void _e_accessibility_update_input_transform_matrix(void)
 
    if( e_accessibility.ZoomUI.status == ZOOM_OUT )
      {
-        XIChangeProperty(e_accessibility.disp, e_accessibility.touch_deviceid[0], e_accessibility.atomInputTransform,
-                         e_accessibility.atomFloat, 32, PropModeReplace, (unsigned char*)&identity_matrix, 9);
+        for( i = 0 ; i < 3 ; i++ )
+          {
+             XIChangeProperty(e_accessibility.disp, e_accessibility.touch_deviceid[i], e_accessibility.atomInputTransform,
+                              e_accessibility.atomFloat, 32, PropModeReplace, (unsigned char*)&identity_matrix, 9);
+          }
+        XSync(e_accessibility.disp, False);
      }
    else
      {
@@ -925,6 +929,7 @@ static void _e_accessibility_update_input_transform_matrix(void)
              XIChangeProperty(e_accessibility.disp, e_accessibility.touch_deviceid[i], e_accessibility.atomInputTransform,
                               e_accessibility.atomFloat, 32, PropModeReplace, (unsigned char*)&e_accessibility.tmatrix[0], 9);
           }
+        XSync(e_accessibility.disp, False);
      }
 }
 
diff --git a/comp-tizen/data/group/dialog_without_dim.edc b/comp-tizen/data/group/dialog_without_dim.edc
new file mode 100644 (file)
index 0000000..ccf3684
--- /dev/null
@@ -0,0 +1,464 @@
+/*-----------------------------------------------------*/
+/* group "dialog_without_dim"                          */
+/*-----------------------------------------------------*/
+group { name: "dialog_without_dim";
+   images {
+      image: "comp-sh1.png" COMP;
+      image: "bt_glow.png" COMP;
+   }
+   parts {
+      part { name: "clipper";
+         type: RECT;
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            visible: 0;
+            color: 0 0 0 0;
+            rel1 {
+               relative: -1.0  -1.0;
+               offset: -9999 -9999;
+            }
+            rel2 {
+               relative: 2.0   2.0;
+               offset: 9999  9999;
+            }
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: 255 255 255 255;
+         }
+         description { state: "visible" 1.0;
+            inherit: "visible" 0.0;
+         }
+         description { state: "switcher" 0.0;
+            inherit: "visible" 0.0;
+            visible: 1;
+            color: 255 255 255 255;
+         }
+         description { state: "default" 1.0;
+            inherit: "default" 0.0;
+            visible: 1;
+            color: 255 255 255 255;
+         }
+         description { state: "default" 0.5;
+            inherit: "default" 0.0;
+            visible: 0;
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "shower";
+         type: RECT;
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            visible: 0;
+            rel1 {
+               relative: 0.35  0.35;
+            }
+            rel2 {
+               relative: 0.65  0.65;
+            }
+         }
+         description { state: "visible" 0.0;
+            inherit: "default" 0.0;
+            rel1 {
+               relative: 0.0  0.0;
+               offset: 0    0;
+            }
+            rel2 {
+               relative: 1.0  1.0;
+            }
+         }
+         description { state: "visible" 1.0;
+            inherit: "visible" 0.0;
+         }
+         description { state: "switcher" 0.0;
+            inherit: "default" 0.0;
+            rel1 {
+               relative: 0.0  0.0;
+               offset: 0    0;
+            }
+            rel2 {
+               relative: 1.0  1.0;
+            }
+         }
+         description { state: "indicator_raise_above" 0.0;
+            inherit : "default" 0.0;
+            rel1 {
+               relative: 0.0  0.0;
+               offset: 0    0;
+            }
+            rel2 {
+               relative: 1.0  1.0;
+            }
+         }
+         description { state: "indicator_raise_above" 0.1;
+            inherit : "default" 0.0;
+            rel1 {
+               relative: 0.0  -1.0;
+               offset: 0  0;
+            }
+            rel2 {
+               relative: 1.0  0.0;
+            }
+         }
+      }
+       part { name: "persp";
+         type: RECT;
+         description { state: "default" 0.0;
+            min: 10 10;
+            max: 10 10;
+            visible: 0;
+            perspective.zplane: 0;
+            perspective.focal: 1000;
+         }
+         description { state: "visible" 1.0;
+            inherit: "default" 0.0;
+            perspective.zplane: 0;
+            perspective.focal: 1000;
+         }
+         description { state: "switcher" 0.0;
+            inherit: "default" 0.0;
+            perspective.zplane: -500;
+            perspective.focal: 1000;
+         }
+         description { state: "switcher2" 0.0;
+            inherit: "default" 0.0;
+            perspective.zplane: -500;
+            perspective.focal: 1000;
+         }
+      }
+      part { name: "e.swallow.content";
+         type: SWALLOW;
+         clip_to: "clipper";
+         mouse_events: 0;
+         description { state: "default" 0.0;
+            rel1 {
+               to: "shower";
+            }
+            rel2 {
+               to: "shower";
+            }
+         }
+         description { state: "default" 1.0;
+            inherit: "default" 0.0;
+            rel1.relative: 0 0;
+            rel2.relative: 1.0 1.0;
+         }
+         description { state: "default" 0.5;
+            inherit: "default" 0.0;
+            rel1.relative: 0 0;
+            rel2.relative: 1.0 1.0;
+         }
+         description { state: "visible" 1.0;
+            rel1 {
+               to: "shower";
+            }
+            rel2 {
+               to: "shower";
+            }
+            map {
+               on: 1;
+               smooth: 1;
+               backface_cull: 0;
+               perspective_on: 1;
+               alpha: 0;
+               perspective: "persp";
+               rotation {
+                  x: 0;
+                  y: 0;
+                  z: 0;
+               }
+            }
+         }
+         description { state: "switcher" 0.0;
+            rel1 {
+               to: "shower";
+            }
+            rel2 {
+               to: "shower";
+            }
+            map {
+               on: 1;
+               smooth: 1;
+               backface_cull: 0;
+               perspective_on: 1;
+               alpha: 1;
+               perspective: "persp";
+               rotation {
+                  x: 0;
+                  y: 75;
+                  z: 0;
+              }
+            }
+         }
+         description { state: "switcher2" 0.0;
+            rel1 {
+               to: "shower";
+            }
+            rel2 {
+               to: "shower";
+            }
+            map {
+               on: 1;
+               smooth: 1;
+               backface_cull: 0;
+               perspective_on: 1;
+               alpha: 1;
+               perspective: "persp";
+               rotation {
+                  x: 0;
+                  y: 45;
+                  z: 0;
+              }
+            }
+         }
+      }
+   }
+   programs {
+      program { name: "show1";
+         signal: "e,state,visible,on";
+         source: "e";
+         action: STATE_SET "default" 0.0;
+         target: "clipper";
+         target: "shower";
+         target: "e.swallow.content";
+         after: "show2";
+      }
+      program { name: "show2";
+         action: STATE_SET "visible" 0.0;
+         transition: DECELERATE 0.2;
+         target: "clipper";
+         target: "shower";
+         after  : "show3";
+      }
+      program { name: "show3";
+         action: SIGNAL_EMIT "e,action,show,done" "e";
+      }
+      program { name: "hide1";
+         signal: "e,state,visible,off";
+         source: "e";
+         action: STATE_SET "visible" 0.0;
+         target: "clipper";
+         target: "shower";
+         after: "hide2";
+      }
+      program { name: "hide2";
+         action: STATE_SET "default" 0.0;
+         transition: DECELERATE 0.2;
+         target: "clipper";
+         target: "shower";
+         after: "hide3";
+      }
+      program { name: "hide3";
+         action: SIGNAL_EMIT "e,action,hide,done" "e";
+      }
+      program { name: "raise_above_hide1";
+         signal: "e,state,raise_above,off";
+         source: "e";
+         action: STATE_SET "visible" 0.0;
+         target: "clipper";
+         target: "shower";
+         after: "raise_above_hide2";
+      }
+      program { name: "raise_above_hide2";
+         action: STATE_SET "default" 0.0;
+         transition: DECELERATE 0.2;
+         target: "clipper";
+         target: "shower";
+         after: "raise_above_hide3";
+      }
+      program { name: "raise_above_hide3";
+         action: SIGNAL_EMIT "e,action,raise_above_hide,done" "e";
+      }
+      program { name: "raise_above_hide_post_work";
+         signal: "e,state,raise_above_post,on";
+         source: "e";
+         action: STATE_SET "visible" 0.0;
+         target: "clipper";
+         target: "shower";
+      }
+      program { name: "switcher_on";
+         signal: "e,state,switcher,on";
+         source: "e";
+         action: STATE_SET "visible" 1.0;
+         target: "clipper";
+         target: "shower";
+         target: "persp";
+         target: "e.swallow.content";
+         after: "switcher_on2";
+      }
+      program { name: "switcher_on2";
+         action: STATE_SET "switcher" 0.0;
+         target: "clipper";
+         target: "shower";
+         target: "persp";
+         target: "e.swallow.content";
+         after: "switcher_on3";
+      }
+       program { name: "switcher_on3";
+         action: STATE_SET "switcher2" 0.0;
+         target: "e.swallow.content";
+         transition: LINEAR 0.3;
+         after: "switcher_on4";
+      }
+      program { name: "switcher_on4";
+         action: STATE_SET "visible" 1.0;
+         target: "clipper";
+         target: "shower";
+         target: "persp";
+         target: "e.swallow.content";
+         after: "switcher_on5";
+      }
+      program { name: "switcher_on5";
+         action: SIGNAL_EMIT "e,action,show,done" "e";
+      }
+      program { name: "switcher_on_top";
+         signal: "e,state,switcher_top,on";
+         source: "e";
+         action: STATE_SET "visible" 1.0;
+         target: "clipper";
+         target: "shower";
+         target: "persp";
+         target: "e.swallow.content";
+         after: "switcher_on_top2";
+         after: "switcher_on_top2_2";
+      }
+      program { name: "switcher_on_top2";
+         action: STATE_SET "switcher" 0.0;
+         target: "clipper";
+         target: "shower";
+         target: "persp";
+         transition: LINEAR 0.3;
+         after: "switcher_on_top3";
+                        }
+       program { name: "switcher_on_top2_2";
+         action: STATE_SET "switcher2" 0.0;
+         target: "e.swallow.content";
+         transition: ACCELERATE 0.3;
+      }
+      program { name: "switcher_on_top3";
+         action: STATE_SET "visible" 1.0;
+         target: "clipper";
+         target: "shower";
+         target: "persp";
+         target: "e.swallow.content";
+         after: "switcher_on_top4";
+      }
+      program { name: "switcher_on_top4";
+         action: SIGNAL_EMIT "e,action,show,done" "e";
+      }
+      program { name: "raise_above3";
+         signal: "e,state,raise_above3,on";
+         source: "e";
+         action: STATE_SET "indicator_raise_above" 0.0;
+         target: "shower";
+         after: "raise_above3_2";
+      }
+      program { name: "raise_above3_2";
+         action : STATE_SET "indicator_raise_above" 0.1;
+         transition: SINUSOIDAL 0.2;
+         target: "shower";
+         after : "raise_above3_3";
+      }
+      program { name: "raise_above3_3";
+         action : STATE_SET "indicator_raise_above" 0.1;
+         transition: LINEAR 0.16;
+         target: "shower";
+         after : "raise_above3_4";
+      }
+      program { name: "raise_above3_4";
+         action : STATE_SET "indicator_raise_above" 0.0;
+         transition: SINUSOIDAL 0.2;
+         target: "shower";
+         after : "raise_above3_done";
+      }
+      program { name: "raise_above3_done";
+         action: SIGNAL_EMIT "e,action,raise_above3,done" "e";
+      }
+      program { name: "show1_noeffect";
+         signal: "e,state,visible,on,noeffect";
+         source: "e";
+         action: STATE_SET "default" 0.0;
+         target: "clipper";
+         target: "shower";
+         target: "e.swallow.content";
+         after: "show2_noeffect";
+      }
+      program { name: "show2_noeffect";
+         action: STATE_SET "visible" 0.0;
+         target: "clipper";
+         target: "shower";
+         after: "show3";
+      }
+      program { name: "hide1_noeffect";
+         signal: "e,state,visible,off,noeffect";
+         source: "e";
+         action: STATE_SET "default" 0.0;
+         target: "clipper";
+         target: "shower";
+         after: "hide3";
+      }
+      program { name: "show_background1";
+         signal: "e,state,background,visible,on";
+         source: "e";
+         after: "show_background2";
+      }
+      program { name: "show_background2";
+         action: SIGNAL_EMIT "e,action,background,show,done" "e";
+      }
+      program { name: "hide_background1";
+         signal: "e,state,background,visible,off";
+         source: "e";
+         after: "hide_background2";
+      }
+      program { name: "hide_background2";
+         action: SIGNAL_EMIT "e,action,background,hide,done" "e";
+      }
+      program { name: "show1_custom0";
+         signal: "e,state,visible,on,custom0";
+         source: "e";
+         action: STATE_SET "default" 0.0;
+         target: "clipper";
+         target: "shower";
+         target: "e.swallow.content";
+         after: "show2_custom0";
+      }
+      program { name: "show2_custom0";
+         action: STATE_SET "visible" 0.0;
+         target: "clipper";
+         target: "shower";
+         after: "show3";
+      }
+      program { name: "hide1_custom0";
+         signal: "e,state,visible,off,custom0";
+         source: "e";
+         action: STATE_SET "default" 0.0;
+         target: "clipper";
+         target: "shower";
+         after: "hide2";
+      }
+      program { name: "show1_custom1";
+         signal: "e,state,visible,on,custom1";
+         source: "e";
+         action: STATE_SET "default" 0.0;
+         target: "clipper";
+         target: "shower";
+         target: "e.swallow.content";
+         after: "show2_custom1";
+      }
+      program { name: "show2_custom1";
+         action: STATE_SET "visible" 0.0;
+         target: "clipper";
+         target: "shower";
+         after: "show3";
+      }
+      program { name: "hide1_custom1";
+         signal: "e,state,visible,off,custom1";
+         source: "e";
+         action: STATE_SET "default" 0.0;
+         target: "clipper";
+         target: "shower";
+         after: "hide2";
+      }
+   }
+} /* end of group "dialog" */
index 7d6656d..cb11d2d 100644 (file)
@@ -12,7 +12,7 @@ group { name: "fake_effect_fade";
         mouse_events: 1;\r
         description { state: "default" 0.0;\r
            visible: 0;\r
-           color: 255 255 255 255;\r
+           color: 255 255 255 1;\r
            rel1 {\r
               relative: -1.0  -1.0;\r
               offset: -9999 -9999;\r
@@ -29,7 +29,7 @@ group { name: "fake_effect_fade";
         }\r
         description { state: "default-180" 0.0;\r
            visible: 0;\r
-           color: 255 255 255 255;\r
+           color: 255 255 255 1;\r
            rel1 {\r
               relative: -1.0  -1.0;\r
               offset: -9999 -9999;\r
@@ -46,7 +46,7 @@ group { name: "fake_effect_fade";
         }\r
         description { state: "default-90" 0.0;\r
            visible: 0;\r
-           color: 255 255 255 255;\r
+           color: 255 255 255 1;\r
            rel1 {\r
               relative: -1.0  -1.0;\r
               offset: -9999 -9999;\r
@@ -63,7 +63,7 @@ group { name: "fake_effect_fade";
         }\r
         description { state: "default-270" 0.0;\r
            visible: 0;\r
-           color: 255 255 255 255;\r
+           color: 255 255 255 1;\r
            rel1 {\r
               relative: -1.0  -1.0;\r
               offset: -9999 -9999;\r
@@ -137,10 +137,10 @@ group { name: "fake_effect_fade";
         description { state: "default" 0.0;\r
            visible: 0;\r
            rel1 {\r
-              relative: 0.45  0.45; // fake effect start size\r
+              relative: 0.2  0.2; // fake effect start size\r
            }\r
            rel2 {\r
-              relative: 0.55  0.55; // fake effect start size\r
+              relative: 0.8  0.8; // fake effect start size\r
            }\r
         }\r
         description { state: "visible" 0.0;\r
@@ -155,10 +155,10 @@ group { name: "fake_effect_fade";
         description { state: "default-180" 0.0;\r
            visible: 0;\r
            rel1 {\r
-              relative: 0.45  0.45; // fake effect start size\r
+              relative: 0.2  0.2; // fake effect start size\r
            }\r
            rel2 {\r
-              relative: 0.55  0.55; // fake effect start size\r
+              relative: 0.8  0.8; // fake effect start size\r
            }\r
         }\r
         description { state: "visible-180" 0.0;\r
@@ -173,10 +173,10 @@ group { name: "fake_effect_fade";
         description { state: "default-90" 0.0;\r
            visible: 0;\r
            rel1 {\r
-              relative: 0.45  0.45; // fake effect start size\r
+              relative: 0.2  0.2; // fake effect start size\r
            }\r
            rel2 {\r
-              relative: 0.55  0.55; // fake effect start size\r
+              relative: 0.8  0.8; // fake effect start size\r
            }\r
         }\r
         description { state: "visible-90" 0.0;\r
@@ -191,10 +191,10 @@ group { name: "fake_effect_fade";
         description { state: "default-270" 0.0;\r
            visible: 0;\r
            rel1 {\r
-              relative: 0.45  0.45; // fake effect start size\r
+              relative: 0.2  0.2; // fake effect start size\r
            }\r
            rel2 {\r
-              relative: 0.55  0.55; // fake effect start size\r
+              relative: 0.8  0.8; // fake effect start size\r
            }\r
         }\r
         description { state: "visible-270" 0.0;\r
@@ -223,7 +223,7 @@ group { name: "fake_effect_fade";
               smooth: 0;\r
               backface_cull: 0;\r
               perspective_on: 1;\r
-              alpha: 0;\r
+              alpha: 1;\r
               perspective: "persp";\r
               rotation {\r
                  x: 0;\r
@@ -244,7 +244,7 @@ group { name: "fake_effect_fade";
               smooth: 0;\r
               backface_cull: 0;\r
               perspective_on: 1;\r
-              alpha: 0;\r
+              alpha: 1;\r
               perspective: "persp";\r
               rotation {\r
                  x: 0;\r
@@ -265,7 +265,7 @@ group { name: "fake_effect_fade";
               smooth: 0;\r
               backface_cull: 0;\r
               perspective_on: 1;\r
-              alpha: 0;\r
+              alpha: 1;\r
               perspective: "persp";\r
               rotation {\r
                  x: 0;\r
@@ -286,7 +286,7 @@ group { name: "fake_effect_fade";
               smooth: 0;\r
               backface_cull: 0;\r
               perspective_on: 1;\r
-              alpha: 0;\r
+              alpha: 1;\r
               perspective: "persp";\r
               rotation {\r
                  x: 0;\r
@@ -307,7 +307,7 @@ group { name: "fake_effect_fade";
               smooth: 1;\r
               backface_cull: 0;\r
               perspective_on: 1;\r
-              alpha: 0;\r
+              alpha: 1;\r
               perspective: "persp";\r
               rotation {\r
                  x: 0;\r
@@ -328,7 +328,7 @@ group { name: "fake_effect_fade";
               smooth: 1;\r
               backface_cull: 0;\r
               perspective_on: 1;\r
-              alpha: 0;\r
+              alpha: 1;\r
               perspective: "persp";\r
               rotation {\r
                  x: 0;\r
@@ -349,7 +349,7 @@ group { name: "fake_effect_fade";
               smooth: 1;\r
               backface_cull: 0;\r
               perspective_on: 1;\r
-              alpha: 0;\r
+              alpha: 1;\r
               perspective: "persp";\r
               rotation {\r
                  x: 0;\r
@@ -370,7 +370,7 @@ group { name: "fake_effect_fade";
               smooth: 1;\r
               backface_cull: 0;\r
               perspective_on: 1;\r
-              alpha: 0;\r
+              alpha: 1;\r
               perspective: "persp";\r
               rotation {\r
                  x: 0;\r
@@ -577,7 +577,7 @@ group { name: "fake_effect_fade";
         target: "shower";\r
         target: "fake.swallow.content";\r
         target: "fake.swallow.indicator";\r
-        transition: DECELERATE 0.3;\r
+        transition: DECELERATE 0.2;\r
         after: "show3";\r
      }\r
      program { name: "show3";\r
@@ -599,7 +599,7 @@ group { name: "fake_effect_fade";
         target: "shower";\r
         target: "fake.swallow.content";\r
         target: "fake.swallow.indicator";\r
-        transition: DECELERATE 0.3;\r
+        transition: DECELERATE 0.2;\r
         after: "show3";\r
      }\r
      program { name: "rotation-right1";\r
@@ -618,7 +618,7 @@ group { name: "fake_effect_fade";
         target: "shower";\r
         target: "fake.swallow.content";\r
         target: "fake.swallow.indicator";\r
-        transition: DECELERATE 0.3;\r
+        transition: DECELERATE 0.2;\r
         after: "show3";\r
      }\r
      program { name: "rotation-left1";\r
@@ -637,7 +637,7 @@ group { name: "fake_effect_fade";
         target: "shower";\r
         target: "fake.swallow.content";\r
         target: "fake.swallow.indicator";\r
-        transition: DECELERATE 0.3;\r
+        transition: DECELERATE 0.2;\r
         after: "show3";\r
      }\r
      program { name: "hide1";\r
@@ -648,7 +648,7 @@ group { name: "fake_effect_fade";
         target: "shower";\r
         target: "fake.swallow.indicator";\r
         target: "fake.swallow.content";\r
-        transition: DECELERATE 0.4;\r
+        transition: DECELERATE 0.3;\r
         after: "hide2";\r
      }\r
      program { name: "hide2";\r
@@ -662,7 +662,7 @@ group { name: "fake_effect_fade";
         target: "shower";\r
         target: "fake.swallow.indicator";\r
         target: "fake.swallow.content";\r
-        transition: DECELERATE 0.4;\r
+        transition: DECELERATE 0.3;\r
         after: "hide2";\r
      }\r
      program { name: "hide-rotate-right1";\r
@@ -673,7 +673,7 @@ group { name: "fake_effect_fade";
         target: "shower";\r
         target: "fake.swallow.indicator";\r
         target: "fake.swallow.content";\r
-        transition: DECELERATE 0.4;\r
+        transition: DECELERATE 0.3;\r
         after: "hide2";\r
      }\r
      program { name: "hide-rotate-left1";\r
@@ -684,7 +684,7 @@ group { name: "fake_effect_fade";
         target: "shower";\r
         target: "fake.swallow.indicator";\r
         target: "fake.swallow.content";\r
-        transition: DECELERATE 0.4;\r
+        transition: DECELERATE 0.3;\r
         after: "hide2";\r
      }\r
      program { name: "show_noeffect1";\r
index 3d36fd4..f344123 100644 (file)
@@ -349,84 +349,6 @@ group { name: "home_screen";
         target: "shower";
         after: "hide3";
      }
-     program { name: "show_background1";
-        signal: "e,state,background,visible,on";
-        source: "e";
-        action: STATE_SET "visible" 0.0;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_background2";
-     }
-     program { name: "show_background2";
-        action: STATE_SET "background" 0.0;
-        transition: LINEAR 0.2656;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_background3";
-     }
-     program { name: "show_background3";
-        action: STATE_SET "background" 0.0;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_background4";
-     }
-     program { name: "show_background4";
-        action: STATE_SET "visible" 0.0;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_background5";
-     }
-     program { name: "show_background5";
-        action: SIGNAL_EMIT "e,action,background,show,done" "e";
-     }
-     program { name: "hide_background1";
-        signal: "e,state,background,visible,off";
-        source: "e";
-        action: STATE_SET "background" 0.0;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "hide_background2";
-     }
-     program { name: "hide_background2";
-        action: STATE_SET "background" 0.0;
-        target: "shower";
-        target: "clipper";
-        target: "e.swallow.content";
-        after: "hide_background3";
-     }
-     program { name: "hide_background3";
-        action: STATE_SET "visible" 0.0;
-        transition: DECELERATE 0.35;
-        target: "shower";
-        target: "clipper";
-        target: "e.swallow.content";
-        after: "hide_background4";
-     }
-     program { name: "hide_background4";
-        action: SIGNAL_EMIT "e,action,background,hide,done" "e";
-     }
-     program { name: "show_fake_background1";
-        signal: "e,state,fake,background,visible,on";
-        source: "e";
-        action: STATE_SET "visible" 0.0;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_fake_background2";
-     }
-     program { name: "show_fake_background2";
-        action: STATE_SET "background" 0.0;
-        transition: LINEAR 0.4565;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_background3";
-     }
      program { name: "show1_custom0";
         signal: "e,state,visible,on,custom0";
         source: "e";
index 0e2c192..d193294 100644 (file)
           after: "show-done";
         }
         program { name: "show-done";
-          action: SIGNAL_EMIT "e,action,rotation,done" "e";
+          action: SIGNAL_EMIT "e,action,show,done" "e";
         }
         program { name: "show_noeffect";
           signal: "e,state,visible,on,noeffect";
index 866013e..af7e6b9 100644 (file)
@@ -51,9 +51,9 @@ group { name: "shadow_fade";
         mouse_events: 0;
         description { state: "default" 0.0;
            visible: 0;
-           rel1.relative: 0.25 0.25;
+           rel1.relative: 0.2 0.2;
            rel1.offset:   0    0;
-           rel2.relative: 0.75 0.75;
+           rel2.relative: 0.8 0.8;
         }
         description { state: "visible" 0.0;
            inherit: "default" 0.0;
@@ -185,7 +185,7 @@ group { name: "shadow_fade";
      // app launching effect
      program { name: "show2";
         action: STATE_SET "visible" 0.0;
-        transition: DECELERATE 0.3;
+        transition: DECELERATE 0.2;
         target: "clipper";
         target: "shower";
         target: "e.swallow.content";
@@ -205,7 +205,7 @@ group { name: "shadow_fade";
      }
      program { name: "hide2";
         action: STATE_SET "hide" 0.0;
-        transition: DECELERATE 0.4;
+        transition: DECELERATE 0.3;
         target: "clipper";
         target: "shower";
         after: "hide3";
@@ -219,6 +219,31 @@ group { name: "shadow_fade";
      program { name: "hide4";
         action: SIGNAL_EMIT "e,action,hide,done" "e";
      }
+     program { name: "mirror_hide1";
+        signal: "e,state,mirror,visible,off";
+        source: "e";
+        action: STATE_SET "visible" 0.0;
+        target: "clipper";
+        target: "shower";
+        target: "e.swallow.content";
+        after: "mirror_hide2";
+     }
+     program { name: "mirror_hide2";
+        action: STATE_SET "hide" 0.0;
+        transition: DECELERATE 0.3;
+        target: "clipper";
+        target: "shower";
+        after: "mirror_hide3";
+     }
+     program { name: "mirror_hide3";
+        action: STATE_SET "default" 0.0;
+        target: "clipper";
+        target: "shower";
+        after: "mirror_hide4";
+     }
+     program { name: "mirror_hide4";
+        action: SIGNAL_EMIT "e,action,mirror,hide,done" "e";
+     }
      program { name: "raise_above_show1";
         signal: "e,state,raise_above,on";;
         source: "e";
@@ -231,7 +256,7 @@ group { name: "shadow_fade";
      // app launching effect
      program { name: "raise_above_show2";
         action: STATE_SET "visible" 0.0;
-        transition: DECELERATE 0.3;
+        transition: DECELERATE 0.2;
         target: "clipper";
         target: "shower";
         target: "e.swallow.content";
@@ -251,14 +276,7 @@ group { name: "shadow_fade";
      }
      program { name: "raise_above_hide2";
         action: STATE_SET "default" 0.0;
-        transition: DECELERATE 0.32;
-        target: "clipper";
-        target: "shower";
-        after: "raise_above_hide3";
-     }
-     program { name: "raise_above_hide3";
-        action: STATE_SET "default" 0.0;
-        transition: LINEAR 0.2;
+        transition: DECELERATE 0.3;
         target: "clipper";
         target: "shower";
         after: "raise_above_hide4";
@@ -331,85 +349,6 @@ group { name: "shadow_fade";
         target: "shower";
         after: "hide3";
      }
-     program { name: "show_background1";
-        signal: "e,state,background,visible,on";
-        source: "e";
-        action: STATE_SET "visible" 0.0;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_background2";
-     }
-     program { name: "show_background2";
-        action: STATE_SET "background" 0.0;
-        transition: LINEAR 0.2656;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_background3";
-     }
-     program { name: "show_background3";
-        action: STATE_SET "background" 0.0;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_background4";
-     }
-     program { name: "show_background4";
-        action: STATE_SET "visible" 0.0;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_background5";
-     }
-     program { name: "show_background5";
-        action: SIGNAL_EMIT "e,action,background,show,done" "e";
-     }
-     program { name: "hide_background1";
-        signal: "e,state,background,visible,off";
-        source: "e";
-        action: STATE_SET "background" 0.0;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "hide_background2";
-     }
-     program { name: "hide_background2";
-        action: STATE_SET "background" 0.0;
-        transition: LINEAR 0.0415;
-        target: "shower";
-        target: "clipper";
-        target: "e.swallow.content";
-        after: "hide_background3";
-     }
-     program { name: "hide_background3";
-        action: STATE_SET "visible" 0.0;
-        transition: DECELERATE 0.2075;
-        target: "shower";
-        target: "clipper";
-        target: "e.swallow.content";
-        after: "hide_background4";
-     }
-     program { name: "hide_background4";
-        action: SIGNAL_EMIT "e,action,background,hide,done" "e";
-     }
-     program { name: "show_fake_background1";
-        signal: "e,state,fake,background,visible,on";
-        source: "e";
-        action: STATE_SET "visible" 0.0;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_fake_background2";
-     }
-     program { name: "show_fake_background2";
-        action: STATE_SET "background" 0.0;
-        transition: LINEAR 0.4565;
-        target: "clipper";
-        target: "shower";
-        target: "e.swallow.content";
-        after: "show_background3";
-     }
      program { name: "show1_custom0";
         signal: "e,state,visible,on,custom0";
         source: "e";
diff --git a/comp-tizen/data/group/wnd_rot_prev_pixmap.edc b/comp-tizen/data/group/wnd_rot_prev_pixmap.edc
deleted file mode 100644 (file)
index 79a4509..0000000
+++ /dev/null
@@ -1,290 +0,0 @@
-/*-----------------------------------------------------*/\r
-/* group "wnd_rot_prev_pixmap"                         */\r
-/*-----------------------------------------------------*/\r
-group { name: "wnd_rot_prev_pixmap";\r
-  #include "../common/comp-script.edc"\r
-  parts {\r
-     part { name: "clipper";\r
-        type: RECT;\r
-        mouse_events: 0;\r
-        description { state: "default" 0.0;\r
-           visible: 0;\r
-           color: 0 0 0 0;\r
-           rel1.relative: -1.0  -1.0;\r
-           rel1.offset:  -9999 -9999;\r
-           rel2.relative:  2.0   2.0;\r
-           rel2.offset:   9999  9999;\r
-        }\r
-        description { state: "visible" 0.0;\r
-           inherit: "default" 0.0;\r
-           visible: 0;\r
-           color: 255 255 255 255;\r
-        }\r
-        description { state: "hide" 0.0;\r
-           inherit: "default" 0.0;\r
-           visible: 0;\r
-           color: 255 255 255 128;\r
-        }\r
-     } /* end of part "clipper" */\r
-     part { name: "persp";\r
-        type: RECT;\r
-        description { state: "default" 0.0;\r
-           min: 1 1;\r
-           max: 1 1;\r
-           visible: 0;\r
-           perspective.zplane: 0;\r
-           perspective.focal: 1000;\r
-        }\r
-        description { state: "visible" 0.0;\r
-           inherit: "default" 0.0;\r
-           perspective.zplane: 0;\r
-        }\r
-        description { state: "hide" 0.0;\r
-           inherit: "default" 0.0;\r
-           perspective.zplane: 0;\r
-        }\r
-     } /* end of part "persp" */\r
-     part { name: "shower";\r
-        type: RECT;\r
-        mouse_events: 0;\r
-        description { state: "default" 0.0;\r
-           visible: 0;\r
-           rel1.relative: 0.0 0.0;\r
-           rel2.relative: 1.0 1.0;\r
-        }\r
-     } /* end of part "shower" */\r
-     part { name: "e.swallow.content";\r
-        type: SWALLOW;\r
-        clip_to: "clipper";\r
-        mouse_events: 0;\r
-        description { state: "default" 0.0;\r
-           rel1.to: "shower";\r
-           rel2.to: "shower";\r
-           map {\r
-              on: 1;\r
-              smooth: 1;\r
-              backface_cull: 0;\r
-              perspective_on: 1;\r
-              alpha: 1;\r
-              perspective: "persp";\r
-              rotation.x: 0.0;\r
-              rotation.y: 0.0;\r
-              rotation.z: 0.0;\r
-           }\r
-        }\r
-        description { state: "visible" 0.0;\r
-           inherit: "default" 0.0;\r
-           map.rotation.z: 0.0;\r
-        }\r
-        description { state: "visible-rot--270" 0.0;\r
-           inherit: "default" 0.0;\r
-           map.perspective: "persp";\r
-           map.rotation.z: -270.0;\r
-        }\r
-        description { state: "visible-rot--180" 0.0;\r
-           inherit: "default" 0.0;\r
-           map.perspective: "persp";\r
-#if USE_ORI\r
-           map.rotation.z: -180.0;\r
-#else\r
-           map.rotation.z: -45.0;\r
-#endif\r
-        }\r
-        description { state: "visible-rot--90" 0.0;\r
-           inherit: "default" 0.0;\r
-           map.perspective: "persp";\r
-#if USE_ORI\r
-           map.rotation.z: -90.0;\r
-#else\r
-           map.rotation.z: -22.0;\r
-#endif\r
-           rel1.offset: 160 -160;\r
-           rel2.offset: 160 -160;\r
-        }\r
-        description { state: "visible-rot-0" 0.0;\r
-           inherit: "default" 0.0;\r
-           map.perspective: "persp";\r
-           map.rotation.z: 0.0;\r
-        }\r
-        description { state: "visible-rot-90" 0.0;\r
-           inherit: "default" 0.0;\r
-           map.perspective: "persp";\r
-#if USE_ORI\r
-           map.rotation.z: 90.0;\r
-#else\r
-           map.rotation.z: 22.0;\r
-#endif\r
-           rel1.offset: -160 -160;\r
-           rel2.offset: -160 -160;\r
-        }\r
-        description { state: "visible-rot-180" 0.0;\r
-           inherit: "default" 0.0;\r
-           map.perspective: "persp";\r
-#if USE_ORI\r
-           map.rotation.z: 180.0;\r
-#else\r
-           map.rotation.z: 45.0;\r
-#endif\r
-        }\r
-        description { state: "visible-rot-270" 0.0;\r
-           inherit: "default" 0.0;\r
-           map.perspective: "persp";\r
-           map.rotation.z: 270.0;\r
-        }\r
-     } /* end of part "swallow" */\r
-     #include "../common/comp-part-logger.edc"\r
-  } /* end of parts */\r
-  programs {\r
-     // ------------------------------------------------\r
-     program { name: "prog-clipper-show";\r
-        signal: "e,state,visible,on";\r
-        source: "e";\r
-        action: STATE_SET "default" 0.0;\r
-        target: "clipper";\r
-        after: "prog-clipper-show-done";\r
-     }\r
-     program { name: "prog-clipper-show-done";\r
-        action: STATE_SET "visible" 0.0;\r
-        target: "clipper";\r
-     }\r
-     program { name: "prog-clipper-hide";\r
-        signal: "e,state,visible,off";\r
-        source: "*";\r
-        action: STATE_SET "visible" 0.0;\r
-        target: "clipper";\r
-        target: "persp";\r
-        after: "prog-clipper-hide-done";\r
-     }\r
-     program { name: "prog-clipper-hide-done";\r
-        action: STATE_SET "hide" 0.0;\r
-        transition: DURATION_WND_ROT_PREV_PIXMAP_CLIPPER_HIDE;\r
-        target: "clipper";\r
-        target: "persp";\r
-     }\r
-     // ------------------------------------------------\r
-     program { name: "prog-emit-show-done";\r
-        action: SIGNAL_EMIT "e,action,show,done" "e";\r
-     }\r
-     program { name: "prog-emit-window-rotation-done";\r
-        action: SIGNAL_EMIT "e,action,window,rotation,done" "e";\r
-     }\r
-     program { name: "prog-swallow-show";\r
-        signal: "e,state,visible,on";\r
-        source: "e";\r
-        action: STATE_SET "default" 0.0;\r
-        target: "e.swallow.content";\r
-        after: "prog-swallow-show-done";\r
-     }\r
-     program { name: "prog-swallow-show-done";\r
-        action: STATE_SET "visible" 0.0;\r
-        target: "e.swallow.content";\r
-        after: "prog-emit-show-done";\r
-     }\r
-     program { name: "prog-swallow-show-rotation-180";\r
-        signal: "e,state,visible,on";\r
-        source: "e.rot.180";\r
-        action: STATE_SET "default" 0.0;\r
-        target: "e.swallow.content";\r
-        after: "prog-swallow-show-rotation-180-done";\r
-     }\r
-     program { name: "prog-swallow-show-rotation-180-done";\r
-        action: STATE_SET "visible-rot-180" 0.0;\r
-        target: "e.swallow.content";\r
-        after: "prog-emit-show-done";\r
-     }\r
-     // ------------------------------------------------\r
-     program { name: "prog-swallow-hide-rotation--270";\r
-        signal: "e,state,visible,off";\r
-        source: "e.rot.-270";\r
-        action: STATE_SET "visible" 0.0;\r
-        target: "e.swallow.content";\r
-        after: "prog-swallow-hide-rotation--270-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation--270-done";\r
-        action: STATE_SET "visible-rot--270" 0.0;\r
-        transition: DURATION_WND_ROT_PREV_PIXMAP_SWALLOW_HIDE;\r
-        target: "e.swallow.content";\r
-        after: "prog-emit-window-rotation-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation--180";\r
-        signal: "e,state,visible,off";\r
-        source: "e.rot.-180";\r
-        action: STATE_SET "visible" 0.0;\r
-        target: "e.swallow.content";\r
-        after: "prog-swallow-hide-rotation--180-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation--180-done";\r
-        action: STATE_SET "visible-rot--180" 0.0;\r
-        transition: DURATION_WND_ROT_PREV_PIXMAP_SWALLOW_HIDE;\r
-        target: "e.swallow.content";\r
-        after: "prog-emit-window-rotation-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation--90";\r
-        signal: "e,state,visible,off";\r
-        source: "e.rot.-90";\r
-        action: STATE_SET "visible" 0.0;\r
-        target: "e.swallow.content";\r
-        after: "prog-swallow-hide-rotation--90-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation--90-done";\r
-        action: STATE_SET "visible-rot--90" 0.0;\r
-        transition: DURATION_WND_ROT_PREV_PIXMAP_SWALLOW_HIDE;\r
-        target: "e.swallow.content";\r
-        after: "prog-emit-window-rotation-done";\r
-     }\r
-\r
-     program { name: "prog-swallow-hide-rotation-0";\r
-        signal: "e,state,visible,off";\r
-        source: "e.rot.0";\r
-        action: STATE_SET "visible" 0.0;\r
-        target: "e.swallow.content";\r
-        after: "prog-swallow-hide-rotation-0-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation-0-done";\r
-        action: STATE_SET "visible-rot-0" 0.0;\r
-        transition: DURATION_WND_ROT_PREV_PIXMAP_SWALLOW_HIDE;\r
-        target: "e.swallow.content";\r
-        after: "prog-emit-window-rotation-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation-90";\r
-        signal: "e,state,visible,off";\r
-        source: "e.rot.90";\r
-        action: STATE_SET "visible" 0.0;\r
-        target: "e.swallow.content";\r
-        after: "prog-swallow-hide-rotation-90-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation-90-done";\r
-        action: STATE_SET "visible-rot-90" 0.0;\r
-        transition: DURATION_WND_ROT_PREV_PIXMAP_SWALLOW_HIDE;\r
-        target: "e.swallow.content";\r
-        after: "prog-emit-window-rotation-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation-180";\r
-        signal: "e,state,visible,off";\r
-        source: "e.rot.180";\r
-        action: STATE_SET "visible" 0.0;\r
-        target: "e.swallow.content";\r
-        after: "prog-swallow-hide-rotation-180-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation-180-done";\r
-        action: STATE_SET "visible-rot-180" 0.0;\r
-        transition: DURATION_WND_ROT_PREV_PIXMAP_SWALLOW_HIDE;\r
-        target: "e.swallow.content";\r
-        after: "prog-emit-window-rotation-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation-270";\r
-        signal: "e,state,visible,off";\r
-        source: "e.rot.270";\r
-        action: STATE_SET "visible" 0.0;\r
-        target: "e.swallow.content";\r
-        after: "prog-swallow-hide-rotation-270-done";\r
-     }\r
-     program { name: "prog-swallow-hide-rotation-270-done";\r
-        action: STATE_SET "visible-rot-270" 0.0;\r
-        transition: DURATION_WND_ROT_PREV_PIXMAP_SWALLOW_HIDE;\r
-        target: "e.swallow.content";\r
-        after: "prog-emit-window-rotation-done";\r
-     }\r
-     // ------------------------------------------------\r
-  } /* end of programs */\r
-} /* end of group "wnd_rot_prev_pixmap" */\r
index 89b8757..1ea7612 100644 (file)
@@ -13,11 +13,6 @@ collections {
    #include "group/shadow_twist.edc"
 
    /*-----------------------------------------------------*/
-   /* group "wnd_rot_prev_pixmap"                         */
-   /*-----------------------------------------------------*/
-   #include "group/wnd_rot_prev_pixmap.edc"
-
-   /*-----------------------------------------------------*/
    /* group "shadow_fade"                                 */
    /*-----------------------------------------------------*/
    #include "group/shadow_fade.edc"
@@ -48,6 +43,11 @@ collections {
    #include "group/dialog.edc"
 
    /*-----------------------------------------------------*/
+   /* group "dialog_without_dim"                          */
+   /*-----------------------------------------------------*/
+   #include "group/dialog_without_dim.edc"
+
+   /*-----------------------------------------------------*/
    /* group "indicator"                                   */
    /*-----------------------------------------------------*/
    #include "group/indicator.edc"
index c8162de..e05648d 100644 (file)
@@ -18,9 +18,7 @@ INCLUDES               = -I. \
                         
 pkgdir                 = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
 pkg_LTLIBRARIES        = module.la
-module_la_SOURCES      = e_mod_comp_animation.c \
-                         e_mod_comp_animation.h \
-                         e_mod_comp_atoms.c \
+module_la_SOURCES      = e_mod_comp_atoms.c \
                          e_mod_comp_atoms.h \
                          e_mod_comp_bg_win.c \
                          e_mod_comp_bg_win.h \
@@ -36,8 +34,6 @@ module_la_SOURCES      = e_mod_comp_animation.c \
                          e_mod_comp_effect.h \
                          e_mod_comp_effect_image_launch.c \
                          e_mod_comp_effect_image_launch.h \
-                         e_mod_comp_effect_tm.c \
-                         e_mod_comp_effect_tm.h \
                          e_mod_comp_effect_win_rotation.c \
                          e_mod_comp_effect_win_rotation.h \
                          e_mod_comp_hw_ov_win.c \
index 31ec0ce..5730304 100644 (file)
@@ -45,6 +45,7 @@ static void         _e_mod_comp_win_lower(E_Comp_Win *cw);
 static E_Comp_Win  *_e_mod_comp_win_find(Ecore_X_Window win);
 static E_Comp_Win  *_e_mod_comp_border_client_find(Ecore_X_Window win);
 static Eina_Bool    _e_mod_comp_cb_update(E_Comp *c);
+static Evas_Object *_e_mod_comp_mirror_handler_add(E_Comp *c);
 static Eina_Bool    _e_mod_comp_win_is_border(E_Comp_Win *cw);
 static void         _e_mod_comp_cb_pending_after(void *data, E_Manager *man, E_Manager_Comp_Source *src);
 static E_Comp      *_e_mod_comp_find(Ecore_X_Window root);
@@ -430,23 +431,11 @@ _e_mod_comp_win_update(E_Comp_Win *cw)
         return;
      }
 
-   // update obj geometry when task switcher is not open
-   // or task switcher is open and new window is added
-   cw->defer_move_resize = EINA_FALSE;
-   if ((!cw->c->switcher) ||
-       ((cw->c->switcher) && (!cw->first_show_worked)) ||
-       ((cw->c->switcher) && TYPE_INDICATOR_CHECK(cw)))
-     {
-        if (!cw->move_lock)
-          e_mod_comp_win_comp_objs_move(cw, cw->x, cw->y);
-        e_mod_comp_win_comp_objs_resize(cw,
-                                  cw->pw + (cw->border * 2),
-                                  cw->ph + (cw->border * 2));
-     }
-   else
-     {
-        cw->defer_move_resize = EINA_TRUE;
-     }
+   if (!cw->move_lock)
+     e_mod_comp_win_comp_objs_move(cw, cw->x, cw->y);
+   e_mod_comp_win_comp_objs_resize(cw,
+                                   cw->pw + (cw->border * 2),
+                                   cw->ph + (cw->border * 2));
 
    if ((cw->c->gl)
        && (_comp_mod->conf->texture_from_pixmap)
@@ -600,11 +589,11 @@ _e_mod_comp_cb_update(E_Comp *c)
              if ((!cw) || (cw != canvas->nocomp.cw) ||
                  (canvas->nocomp.force_composite))
                {
-                  L(LT_EVENT_X,
-                    "COMP|%31s|new_w:0x%08x|nocomp.cw:0x%08x canvas:%d\n",
-                    "NOCOMP_END", cw ? e_mod_comp_util_client_xid_get(cw) : 0,
-                    e_mod_comp_util_client_xid_get(canvas->nocomp.cw),
-                    canvas->num);
+                  ELBF(ELBT_COMP, 0,
+                       cw ? e_mod_comp_util_client_xid_get(cw) : 0,
+                       "NOCOMP_END nocomp.cw:0x%08x canvas:%d",
+                       e_mod_comp_util_client_xid_get(canvas->nocomp.cw),
+                       canvas->num);
 
                   e_mod_comp_canvas_nocomp_end(canvas);
                }
@@ -869,12 +858,17 @@ _e_mod_comp_object_del(void *data,
 
    if (obj == cw->bd)
      {
+        ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+             "%15.15s|", "OBJECT_DEL");
+
         if (cw->counter)
           {
              Ecore_X_Window _w = e_mod_comp_util_client_xid_get(cw);
              ecore_x_e_comp_sync_cancel_send(_w);
              ecore_x_sync_counter_inc(cw->counter, 1);
              cw->sync_info.val++;
+
+             ELBF(ELBT_COMP, 1, _w, "%15.15s", "SYNC_CANCEL");
           }
         if (cw->bd) eina_hash_del(borders, e_util_winid_str_get(cw->bd->client.win), cw);
         cw->bd = NULL;
@@ -906,10 +900,10 @@ e_mod_comp_done_defer(E_Comp_Win *cw)
 
    if (cw->defer_raise)
      {
-        L(LT_EFFECT,
-          "[COMP] w:0x%08x force win to raise. bd:%s\n",
-          e_mod_comp_util_client_xid_get(cw),
-          cw->bd ? "O" : "X");
+        ELBF(ELBT_COMP, 0,
+             e_mod_comp_util_client_xid_get(cw),
+             "EDJ_DONE Force win to raise bd:%d",
+             cw->bd);
 
         E_Comp_Win *_cw;
         EINA_INLIST_FOREACH(cw->c->wins, _cw)
@@ -944,20 +938,20 @@ e_mod_comp_done_defer(E_Comp_Win *cw)
    cw->force = 1;
    if (cw->defer_hide)
      {
-        L(LT_EVENT_X,
-          "COMP|%31s|w:0x%08x|force win to hide. bd:%s\n",
-          "EDJ_DONE", e_mod_comp_util_client_xid_get(cw),
-          cw->bd ? "O" : "X");
+        ELBF(ELBT_COMP, 0,
+             e_mod_comp_util_client_xid_get(cw),
+             "EDJ_DONE Force win to hide bd:%d",
+             cw->bd);
 
         _e_mod_comp_win_hide(cw);
      }
    cw->force = 1;
    if (cw->delete_me)
      {
-        L(LT_EVENT_X,
-          "COMP|%31s|w:0x%08x|force win to delete. bd:%s\n",
-          "EDJ_DONE", e_mod_comp_util_client_xid_get(cw),
-          cw->bd ? "O" : "X");
+        ELBF(ELBT_COMP, 0,
+             e_mod_comp_util_client_xid_get(cw),
+             "EDJ_DONE Force win to del bd:%d",
+             cw->bd);
 
         _e_mod_comp_win_del(cw);
      }
@@ -982,13 +976,12 @@ _e_mod_comp_show_done(void        *data,
        cw->bd ? cw->bd->client.netwm.name : NULL);
 #endif
 
-   L(LT_EFFECT,
-     "[COMP] %18.18s w:0x%08x %s\n", "SIGNAL",
-     e_mod_comp_util_client_xid_get(cw),
-     "SHOW_DONE");
+   ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+        "%15.15s|SHOW_DONE", "SIGNAL");
 
    e_mod_comp_effect_signal_del(cw, obj, "show,done");
 
+   cw->launched = EINA_TRUE;
    cw->show_done = EINA_TRUE;
    e_mod_comp_done_defer(cw);
 }
@@ -1002,10 +995,8 @@ _e_mod_comp_hide_done(void        *data,
    E_Comp_Win *cw = (E_Comp_Win *)data;
    E_CHECK(cw);
 
-   L(LT_EFFECT,
-     "[COMP] %18.18s w:0x%08x %s\n", "SIGNAL",
-     e_mod_comp_util_client_xid_get(cw),
-     "HIDE_DONE");
+   ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+        "%15.15s|HIDE_DONE", "SIGNAL");
 
    e_mod_comp_effect_signal_del(cw, obj, "hide,done");
 
@@ -1022,10 +1013,8 @@ _e_mod_comp_raise_above_show_done(void        *data,
    E_Comp_Win *cw = data;
    E_CHECK(cw);
 
-   L(LT_EFFECT,
-     "[COMP] %18.18s w:0x%08x %s\n", "SIGNAL",
-     e_mod_comp_util_client_xid_get(cw),
-     "RAISE_SHOW_DONE");
+   ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+        "%15.15s|RAISE_SHOW_DONE", "SIGNAL");
 
    e_mod_comp_effect_signal_del(cw, obj, "raise,show,done");
 
@@ -1041,10 +1030,8 @@ _e_mod_comp_raise_above_hide_done(void        *data,
    E_Comp_Win *cw = data;
    E_CHECK(cw);
 
-   L(LT_EFFECT,
-     "[COMP] %18.18s w:0x%08x %s\n", "SIGNAL",
-     e_mod_comp_util_client_xid_get(cw),
-     "RAISE_HIDE_DONE");
+   ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+        "%15.15s|RAISE_HIDE_DONE", "SIGNAL");
 
    e_mod_comp_effect_signal_del(cw, obj, "raise,hide,done");
 
@@ -1060,10 +1047,8 @@ _e_mod_comp_background_show_done(void        *data,
    E_Comp_Win *cw = data;
    E_CHECK(cw);
 
-   L(LT_EFFECT,
-     "[COMP] %18.18s w:0x%08x %s\n", "SIGNAL",
-     e_mod_comp_util_client_xid_get(cw),
-     "BG_SHOW_DONE");
+   ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+        "%15.15s|BG_SHOW_DONE", "SIGNAL");
 
    e_mod_comp_effect_signal_del(cw, obj, "bg,show,done");
 
@@ -1079,16 +1064,33 @@ _e_mod_comp_background_hide_done(void        *data,
    E_Comp_Win *cw = data;
    E_CHECK(cw);
 
-   L(LT_EFFECT,
-     "[COMP] %18.18s w:0x%08x %s\n", "SIGNAL",
-     e_mod_comp_util_client_xid_get(cw),
-     "BG_HIDE_DONE");
+   ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+        "%15.15s|BG_HIDE_DONE", "SIGNAL");
 
    e_mod_comp_effect_signal_del(cw, obj, "bg,hide,done");
 
    e_mod_comp_done_defer(cw);
 }
 
+
+static void
+_e_mod_comp_mirror_hide_done(void        *data,
+                                  Evas_Object *obj,
+                                  const char  *emission __UNUSED__,
+                                  const char  *source   __UNUSED__)
+{
+   E_Comp *c = data;
+   E_CHECK(c);
+
+   ELBF(ELBT_COMP, 0, 0,
+        "%15.15s|MIRROR_HIDE_DONE", "SIGNAL");
+   edje_object_part_unswallow(c->mirror_handler, c->mirror_obj);
+
+   evas_object_hide(c->mirror_handler);
+   evas_object_hide(c->mirror_obj);
+   evas_object_del(c->mirror_obj);
+}
+
 static void
 _e_mod_comp_win_sync_setup(E_Comp_Win *cw,
                            Ecore_X_Window win)
@@ -1130,6 +1132,29 @@ _e_mod_comp_win_sync_setup(E_Comp_Win *cw,
      }
 }
 
+static void
+_e_mod_comp_win_shadow_setup_error_get(E_Comp_Win  *cw,
+                                       Evas_Object *o,
+                                       const char  *msg,
+                                       const char  *file)
+{
+   Ecore_X_Window win = e_mod_comp_util_client_xid_get(cw);
+
+   fprintf(stdout,
+           "[E17-comp] EDC file ERROR win:0x%08x o:%p %s FILE:%s\n",
+           win, o, msg, file);
+
+   ELBF(ELBT_COMP, 0, win,
+        "%15.15s|ERROR o:%p %s",
+        "EDC", o, msg);
+
+   ELBF(ELBT_COMP, 0, win,
+        "%15.15s|ERROR FILE:%s",
+        "EDC", file);
+
+   e_mod_comp_debug_edje_error_get(o, win);
+}
+
 EINTERN void
 e_mod_comp_win_shadow_setup(E_Comp_Win    *cw,
                             E_Comp_Object *co)
@@ -1146,27 +1171,38 @@ e_mod_comp_win_shadow_setup(E_Comp_Win    *cw,
      }
 
    if (_comp_mod->conf->shadow_file)
-     ok = edje_object_file_set
-        (co->shadow, _comp_mod->conf->shadow_file,
-        e_mod_comp_policy_win_shadow_group_get(cw));
+     {
+        ok = edje_object_file_set
+          (co->shadow, _comp_mod->conf->shadow_file,
+          e_mod_comp_policy_win_shadow_group_get(cw));
+
+        ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+             "%15.15s|FILE:%s GROUP:%s", "EDC",
+             _comp_mod->conf->shadow_file,
+             e_mod_comp_policy_win_shadow_group_get(cw));
+     }
 
    if (!ok)
      {
-        fprintf(stdout, "[E17-comp] EDC file ERROR win:0x%08x %s(%d) f:%s\n",
-                cw->win, __func__, __LINE__, _comp_mod->conf->shadow_file);
-        e_mod_comp_debug_edje_error_get
-           (co->shadow, e_mod_comp_util_client_xid_get(cw));
+        _e_mod_comp_win_shadow_setup_error_get
+          (cw, co->shadow, "SHADOW_FILE",
+          _comp_mod->conf->shadow_file);
 
         if (_comp_mod->conf->shadow_style)
           {
              snprintf(buf, sizeof(buf), "e/comp/%s",
                       _comp_mod->conf->shadow_style);
+
              ok = e_theme_edje_object_set(co->shadow,
                                           "base/theme/borders",
                                           buf);
           }
         if (!ok)
           {
+             _e_mod_comp_win_shadow_setup_error_get
+               (cw, co->shadow, "STYLE",
+               _comp_mod->conf->shadow_style);
+
              ok = e_theme_edje_object_set(co->shadow,
                                           "base/theme/borders",
                                           "e/comp/default");
@@ -1175,20 +1211,31 @@ e_mod_comp_win_shadow_setup(E_Comp_Win    *cw,
    // fallback to local shadow.edj - will go when default theme supports this
    if (!ok)
      {
-        fprintf(stdout, "[E17-comp] EDC file ERROR win:0x%08x %s(%d)\n",
-                cw->win, __func__, __LINE__);
-        e_mod_comp_debug_edje_error_get
-           (co->shadow, e_mod_comp_util_client_xid_get(cw));
+        _e_mod_comp_win_shadow_setup_error_get
+          (cw, co->shadow, "STYLE_DEFAULT",
+          "e/comp/default");
+
         snprintf(buf, sizeof(buf), "%s/shadow.edj",
                  e_module_dir_get(_comp_mod->module));
         ok = edje_object_file_set(co->shadow, buf, "shadow");
+
+        if (!ok)
+          {
+             _e_mod_comp_win_shadow_setup_error_get
+               (cw, co->shadow, "LOCAL", buf);
+          }
      }
    if (!edje_object_part_swallow(co->shadow,
                                  "e.swallow.content",
                                  co->img))
      {
-        fprintf(stdout, "[E17-comp] EDC swallow ERROR win:0x%08x %s(%d)\n",
-                cw->win, __func__, __LINE__);
+        fprintf(stdout,
+                "[E17-comp] EDC swallow ERROR win:0x%08x %s(%d) o:%p img:%p\n",
+                cw->win, __func__, __LINE__, co->shadow, co->img);
+
+        ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+             "%15.15s|SWALLOW_ERROR o:%p img:%p",
+             "EDC", co->shadow, co->img);
      }
 
    e_mod_comp_debug_edje_error_get
@@ -1397,6 +1444,8 @@ _e_mod_comp_win_add(E_Comp        *c,
           {
              free(cw);
              e_mod_comp_x_grab_set(c, EINA_FALSE);
+             ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+                  "%15.15s|ERROR", "OBJECT_ADD");
              return NULL;
           }
              
@@ -1481,6 +1530,7 @@ _e_mod_comp_win_add(E_Comp        *c,
      }
 
    e_mod_comp_x_grab_set(c, EINA_FALSE);
+   cw->launched = EINA_FALSE;
    return cw;
 }
 
@@ -1721,18 +1771,7 @@ _e_mod_comp_win_show(E_Comp_Win *cw)
           {
              cw->defer_hide = 0;
              if (!cw->hidden_override)
-               {
-                  if (cw->defer_move_resize)
-                    {
-                       if (!cw->move_lock)
-                         e_mod_comp_win_comp_objs_move(cw, cw->x, cw->y);
-                       e_mod_comp_win_comp_objs_resize(cw,
-                                                 cw->pw + (cw->border * 2),
-                                                 cw->ph + (cw->border * 2));
-                       cw->defer_move_resize = EINA_FALSE;
-                    }
-                  e_mod_comp_win_comp_objs_force_show(cw);
-               }
+               e_mod_comp_win_comp_objs_force_show(cw);
           }
      }
    e_mod_comp_bg_win_handler_show(cw);
@@ -1849,7 +1888,9 @@ _e_mod_comp_win_raise_above(E_Comp_Win *cw,
                                              EINA_INLIST_GET(cw2));
    v2 = e_mod_comp_util_win_visible_get(cw);
 
-   if ((v1) && (!v2))
+   if ((cw2) == (cw->c->lower_win))
+     lower = e_mod_comp_policy_win_lower_check(cw, below);
+   else if ((v1) && (!v2))
      lower = e_mod_comp_policy_win_lower_check(cw, below);
    else if ((!v1) && (v2))
      raise = e_mod_comp_policy_win_restack_check(cw, cw2);
@@ -2082,9 +2123,7 @@ _e_mod_comp_create(void *data __UNUSED__,
      {
         if (canvas->ee_win == ev->win) return ECORE_CALLBACK_PASS_ON;
      }
-   L(LT_EVENT_X,
-     "COMP|ev:%15.15s|w:0x%08x\n",
-     "X_CREATE", ev->win);
+   ELBF(ELBT_COMP, 0, ev->win, "%15.15s|", "X_CREATE");
    cw = _e_mod_comp_win_add(c, ev->win);
    if (cw)
      _e_mod_comp_win_configure(cw,
@@ -2102,10 +2141,9 @@ _e_mod_comp_destroy(void *data __UNUSED__,
    Ecore_X_Event_Window_Destroy *ev = event;
    E_Comp_Win *cw = _e_mod_comp_win_find(ev->win);
    if (!cw) return ECORE_CALLBACK_PASS_ON;
-   L(LT_EVENT_X,
-     "COMP|ev:%15.15s|w:0x%08x|bd:%d c:0x%08x cw:%p\n",
-     "X_DESTROY", ev->win, _e_mod_comp_win_is_border(cw),
-     e_mod_comp_util_client_xid_get(cw), cw);
+   ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+        "%15.15s|w:0x%08x|bd:%d cw:%p", "X_DESTROY",
+        ev->win, _e_mod_comp_win_is_border(cw), cw);
    if (!cw->c->nocomp && cw->animating) cw->delete_me = 1;
    else _e_mod_comp_win_del(cw);
    return ECORE_CALLBACK_PASS_ON;
@@ -2121,10 +2159,9 @@ _e_mod_comp_show(void *data __UNUSED__,
    if (!cw) return ECORE_CALLBACK_PASS_ON;
    if (cw->visible) return ECORE_CALLBACK_PASS_ON;
    if (_e_mod_comp_win_is_border(cw)) return ECORE_CALLBACK_PASS_ON;
-   L(LT_EVENT_X,
-     "COMP|ev:%15.15s|w:0x%08x|bd:%d c:0x%08x cw:%p\n",
-     "X_SHOW", ev->win, _e_mod_comp_win_is_border(cw),
-     e_mod_comp_util_client_xid_get(cw), cw);
+   ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+        "%15.15s|w:0x%08x|bd:%d cw:%p", "X_SHOW",
+        ev->win, _e_mod_comp_win_is_border(cw), cw);
    _e_mod_comp_win_show(cw);
    return ECORE_CALLBACK_PASS_ON;
 }
@@ -2139,10 +2176,9 @@ _e_mod_comp_hide(void *data __UNUSED__,
    if (!cw) return ECORE_CALLBACK_PASS_ON;
    if (!cw->visible) return ECORE_CALLBACK_PASS_ON;
    if (_e_mod_comp_win_is_border(cw)) return ECORE_CALLBACK_PASS_ON;
-   L(LT_EVENT_X,
-     "COMP|ev:%15.15s|w:0x%08x|bd:%d c:0x%08x cw:%p\n",
-     "X_HIDE", ev->win, _e_mod_comp_win_is_border(cw),
-     e_mod_comp_util_client_xid_get(cw), cw);
+   ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+        "%15.15s|w:0x%08x|bd:%d cw:%p", "X_HIDE",
+        ev->win, _e_mod_comp_win_is_border(cw), cw);
    _e_mod_comp_win_real_hide(cw);
    return ECORE_CALLBACK_PASS_ON;
 }
@@ -2155,13 +2191,13 @@ _e_mod_comp_reparent(void *data __UNUSED__,
    Ecore_X_Event_Window_Reparent *ev = event;
    E_Comp_Win *cw = _e_mod_comp_win_find(ev->win);
    if (!cw) return ECORE_CALLBACK_PASS_ON;
-   L(LT_EVENT_X,
-     "COMP|ev:%15.15s|w:0x%08x|bd:%d c:0x%08x cw:%p TO rw:0x%08x\n",
-     "X_REPARENT", ev->win, _e_mod_comp_win_is_border(cw),
-     e_mod_comp_util_client_xid_get(cw), cw, ev->parent);
+   ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+        "%15.15s|w:0x%08x|bd:%d cw:%p TO parent:0x%08x", "X_REPARENT",
+        ev->win, _e_mod_comp_win_is_border(cw), cw, ev->parent);
    if (ev->parent != cw->c->man->root)
      {
-        L(LT_EVENT_X, "COMP|%31s|w:0x%08x\n", "DEL", ev->win);
+        ELBF(ELBT_COMP, 1, e_mod_comp_util_client_xid_get(cw),
+             "DEL 0x%08x", ev->win);
         _e_mod_comp_win_del(cw);
      }
    return ECORE_CALLBACK_PASS_ON;
@@ -2269,6 +2305,7 @@ _e_mod_comp_prop_effect_state(Ecore_X_Event_Window_Property *ev __UNUSED__)
    if (val != 0)
      {
         c->animatable = EINA_TRUE;
+        c->keyboard_effect = EINA_TRUE;
         if (_comp_mod->conf->default_window_effect != 1)
           {
              _comp_mod->conf->default_window_effect = 1;
@@ -2281,6 +2318,7 @@ _e_mod_comp_prop_effect_state(Ecore_X_Event_Window_Property *ev __UNUSED__)
    else
      {
         c->animatable = EINA_FALSE;
+        c->keyboard_effect = EINA_FALSE;
         if (_comp_mod->conf->default_window_effect != 0)
           {
              _comp_mod->conf->default_window_effect = 0;
@@ -2779,9 +2817,8 @@ _e_mod_comp_bd_add(void *data __UNUSED__,
    E_Comp_Canvas *canvas;
    E_Comp* c = _e_mod_comp_find(ev->border->zone->container->manager->root);
 
-   L(LT_EVENT_X,
-     "COMP|ev:%15.15s|w:0x%08x|c:0x%08x\n", "BD_ADD",
-     ev->border->win, ev->border->client.win);
+   ELBF(ELBT_COMP, 0, ev->border->client.win,
+        "%15.15s|bd:0x%08x", "BD_ADD", ev->border->win);
 
    if (!c) return ECORE_CALLBACK_PASS_ON;
    if (_e_mod_comp_win_find(ev->border->win)) return ECORE_CALLBACK_PASS_ON;
@@ -2815,9 +2852,8 @@ _e_mod_comp_bd_del(void *data __UNUSED__,
    E_Event_Border_Remove *ev = event;
    E_Comp_Win *cw = _e_mod_comp_win_find(ev->border->win);
 
-   L(LT_EVENT_X,
-     "COMP|ev:%15.15s|w:0x%08x|c:0x%08x\n", "BD_DEL",
-     ev->border->win, ev->border->client.win);
+   ELBF(ELBT_COMP, 0, ev->border->client.win,
+        "%15.15s|bd:0x%08x cw:%p", "BD_DEL", ev->border->win, cw);
 
    if (!cw) return ECORE_CALLBACK_PASS_ON;
    if (cw->bd == ev->border)
@@ -2825,6 +2861,9 @@ _e_mod_comp_bd_del(void *data __UNUSED__,
         if (!ev->border->borderless)
           e_mod_comp_effect_signal_add(cw, NULL, "e,state,shadow,off", "e");
 
+        if (e_mod_comp_policy_app_close_check(cw))
+          e_mod_comp_effect_signal_add(cw, NULL, "e,state,visible,off", "e");
+
         _e_mod_comp_object_del(cw, ev->border);
      }
    return ECORE_CALLBACK_PASS_ON;
@@ -2838,9 +2877,8 @@ _e_mod_comp_bd_show(void *data __UNUSED__,
    E_Event_Border_Show *ev = event;
    E_Comp_Win *cw = _e_mod_comp_win_find(ev->border->win);
 
-   L(LT_EVENT_X,
-     "COMP|ev:%15.15s|w:0x%08x|c:0x%08x\n", "BD_SHOW",
-     ev->border->win, ev->border->client.win);
+   ELBF(ELBT_COMP, 0, ev->border->client.win,
+        "%15.15s|bd:0x%08x cw:%p", "BD_SHOW", ev->border->win, cw);
 
    if (!cw) return ECORE_CALLBACK_PASS_ON;
    if (cw->visible) return ECORE_CALLBACK_PASS_ON;
@@ -2856,9 +2894,8 @@ _e_mod_comp_bd_hide(void *data __UNUSED__,
    E_Event_Border_Hide *ev = event;
    E_Comp_Win *cw = _e_mod_comp_win_find(ev->border->win);
 
-   L(LT_EVENT_X,
-     "COMP|ev:%15.15s|w:0x%08x|c:0x%08x\n", "BD_HIDE",
-     ev->border->win, ev->border->client.win);
+   ELBF(ELBT_COMP, 0, ev->border->client.win,
+        "%15.15s|bd:0x%08x cw:%p", "BD_HIDE", ev->border->win, cw);
 
    if (!cw) return ECORE_CALLBACK_PASS_ON;
    if (!cw->visible) return ECORE_CALLBACK_PASS_ON;
@@ -2931,9 +2968,8 @@ _e_mod_comp_bd_iconify(void *data __UNUSED__,
    E_Event_Border_Iconify *ev = event;
    E_Comp_Win *cw = _e_mod_comp_win_find(ev->border->win);
 
-   L(LT_EVENT_X,
-     "COMP|ev:%15.15s|w:0x%08x|c:0x%08x\n", "BD_ICONIFY",
-     ev->border->win, ev->border->client.win);
+   ELBF(ELBT_COMP, 0, ev->border->client.win,
+        "%15.15s|bd:0x%08x", "BD_ICONIFY", ev->border->win);
 
    if (!cw) return ECORE_CALLBACK_PASS_ON;
    // fimxe: special iconfiy anim
@@ -2948,9 +2984,8 @@ _e_mod_comp_bd_uniconify(void *data __UNUSED__,
    E_Event_Border_Uniconify *ev = event;
    E_Comp_Win *cw = _e_mod_comp_win_find(ev->border->win);
 
-   L(LT_EVENT_X,
-     "COMP|ev:%15.15s|w:0x%08x|c:0x%08x\n", "BD_UNICONIFY",
-     ev->border->win, ev->border->client.win);
+   ELBF(ELBT_COMP, 0, ev->border->client.win,
+        "%15.15s|bd:0x%08x", "BD_UNICONIFY", ev->border->win);
 
    if (!cw) return ECORE_CALLBACK_PASS_ON;
    // fimxe: special uniconfiy anim
@@ -3312,10 +3347,10 @@ static Eina_Bool
 _e_mod_comp_src_input_region_set_func(void *data             __UNUSED__,
                                       E_Manager *man         __UNUSED__,
                                       E_Manager_Comp_Source *src,
-                                      int x,
-                                      int y,
-                                      int w,
-                                      int h)
+                                      int                    x,
+                                      int                    y,
+                                      int                    w,
+                                      int                    h)
 {
    E_Comp_Win *cw = (E_Comp_Win *)src;
    Eina_Bool res = EINA_FALSE;
@@ -3334,28 +3369,59 @@ _e_mod_comp_src_input_region_set_func(void *data             __UNUSED__,
    return EINA_TRUE;
 }
 
+static int
+_e_mod_comp_input_region_new_func(void *data     __UNUSED__,
+                                  E_Manager *man __UNUSED__)
+{
+   E_Comp *c = e_mod_comp_util_get();
+   E_CHECK_RETURN(c, 0);
+
+   return e_mod_comp_shape_input_new(c);
+}
+
 static Eina_Bool
-_e_mod_comp_input_region_set_func(void *data             __UNUSED__,
-                                  E_Manager *man         __UNUSED__,
-                                  int x,
-                                  int y,
-                                  int w,
-                                  int h)
+_e_mod_comp_input_region_set_func(void *data     __UNUSED__,
+                                  E_Manager *man __UNUSED__,
+                                  int            id,
+                                  int            x,
+                                  int            y,
+                                  int            w,
+                                  int            h)
 {
    E_Comp *c = e_mod_comp_util_get();
    Eina_Bool res = EINA_FALSE;
-   E_CHECK_RETURN(c, 0);
+   E_CHECK_RETURN(c, EINA_FALSE);
 
-   if (!c->shape_input)
-     c->shape_input = e_mod_comp_shape_input_new();
-   E_CHECK_RETURN(c->shape_input, 0);
+   if (id <= 0) return EINA_FALSE;
 
-   res = e_mod_comp_win_shape_input_rect_set(c->shape_input, x, y, w, h);
-   E_CHECK_RETURN(res, 0);
+   res = e_mod_comp_shape_input_set(c, id, x, y, w, h);
+   if (res)
+     {
+        e_mod_comp_win_shape_input_invalid_set(c, 1);
+        _e_mod_comp_render_queue(c);
+     }
 
-   e_mod_comp_win_shape_input_invalid_set(c, 1);
-   _e_mod_comp_render_queue(c);
-   return EINA_TRUE;
+   return res;
+}
+
+static Eina_Bool
+_e_mod_comp_input_region_del_func(void *data     __UNUSED__,
+                                  E_Manager *man __UNUSED__,
+                                  int id)
+{
+   E_Comp *c = e_mod_comp_util_get();
+   Eina_Bool res = EINA_FALSE;
+   E_CHECK_RETURN(c, 0);
+
+   if (id <= 0) return EINA_FALSE;
+
+   res = e_mod_comp_shape_input_del(c, id);
+   if (res)
+     {
+        e_mod_comp_win_shape_input_invalid_set(c, 1);
+        _e_mod_comp_render_queue(c);
+     }
+   return res;
 }
 
 static Eina_Bool
@@ -3507,6 +3573,29 @@ _e_mod_comp_src_shadow_hide_func(void                  *data,
    _e_mod_comp_win_hide(cw);
 }
 
+static Evas_Object *
+_e_mod_comp_mirror_handler_add(E_Comp *c)
+{
+   Evas_Object *shobj;
+   int ok = 0;
+   int w, h;
+   E_CHECK_RETURN(c, NULL);
+
+   shobj = edje_object_add(_e_mod_comp_evas_get_func(c, c->man));
+   E_CHECK_RETURN(shobj, NULL);
+
+   ok = edje_object_file_set (shobj, _comp_mod->conf->shadow_file, "shadow_fade");
+   E_CHECK_RETURN(ok, NULL);
+
+   edje_object_signal_callback_add(shobj, "e,action,mirror,hide,done","e", _e_mod_comp_mirror_hide_done, c);
+   evas_object_move(shobj, 0, 0);
+
+   ecore_x_window_size_get(c->win, &w, &h);
+   evas_object_resize(shobj, w, h);
+
+   return shobj;
+}
+
 static E_Comp *
 _e_mod_comp_add(E_Manager *man)
 {
@@ -3638,6 +3727,8 @@ _e_mod_comp_add(E_Manager *man)
              wname = wclass = NULL;
              cw = _e_mod_comp_win_add(c, wins[i]);
              if (!cw) continue;
+             if (i == _comp_mod->conf->lower_layer)
+               c->lower_win = cw;
              ecore_x_window_geometry_get(cw->win, &x, &y, &w, &h);
              border = ecore_x_window_border_width_get(cw->win);
              if (wins[i] == c->win) continue;
@@ -3676,7 +3767,9 @@ _e_mod_comp_add(E_Manager *man)
    c->comp.func.screen_lock          = e_mod_comp_screen_lock_func;
    c->comp.func.screen_unlock        = e_mod_comp_screen_unlock_func;
    c->comp.func.src_input_region_set = _e_mod_comp_src_input_region_set_func;
+   c->comp.func.input_region_new     = _e_mod_comp_input_region_new_func;
    c->comp.func.input_region_set     = _e_mod_comp_input_region_set_func;
+   c->comp.func.input_region_del     = _e_mod_comp_input_region_del_func;
    c->comp.func.src_move_lock        = _e_mod_comp_src_move_lock_func;
    c->comp.func.src_move_unlock      = _e_mod_comp_src_move_unlock_func;
    c->comp.func.composite_mode_set   = _e_mod_comp_composite_mode_set;
@@ -3738,11 +3831,13 @@ _e_mod_comp_del(E_Comp *c)
    if (c->new_up_timer) ecore_timer_del(c->new_up_timer);
    if (c->update_job) ecore_job_del(c->update_job);
    if (c->wins_list) eina_list_free(c->wins_list);
+   if (c->mirror_handler) evas_object_del(c->mirror_handler);
 
    ecore_x_window_free(c->cm_selection);
    ecore_x_e_comp_sync_supported_set(c->man->root, 0);
    ecore_x_screen_is_composited_set(c->man->num, 0);
-   e_mod_comp_win_shape_input_free(c->shape_input);
+
+   if (c->shape_inputs) eina_list_free(c->shape_inputs);
 
    free(c);
 }
@@ -4072,6 +4167,9 @@ e_mod_comp_init(void)
                   ecore_x_window_size_get(c->win, &w, &h);
                   c->eff_img = e_mod_comp_effect_image_launch_new(c->evas, w, h);
                }
+
+             c->mirror_handler = _e_mod_comp_mirror_handler_add(c);
+
              compositors = eina_list_append(compositors, c);
              e_mod_comp_util_set(c, man);
              ecore_animator_frametime_set(1.0f/60.0f);
diff --git a/comp-tizen/src/e_mod_comp_animation.c b/comp-tizen/src/e_mod_comp_animation.c
deleted file mode 100644 (file)
index fa24261..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-#include "e_mod_comp_shared_types.h"
-#include "e_mod_comp_debug.h"
-#include "e_mod_comp.h"
-
-/* local subsystem functions */
-static void _e_mod_comp_animation_done(void *data);
-
-/* local subsystem globals */
-static Eina_List *transfers = NULL;
-
-/* externally accessible functions */
-EINTERN E_Comp_Transfer *
-e_mod_comp_animation_transfer_new(void)
-{
-   E_Comp_Transfer *tr;
-   tr = E_NEW(E_Comp_Transfer, 1);
-   transfers = eina_list_append(transfers, tr);
-   return tr;
-}
-
-EINTERN void
-e_mod_comp_animation_transfer_free(E_Comp_Transfer *tr)
-{
-   E_Comp_Win *cw = NULL;
-   E_CHECK(tr);
-   transfers = eina_list_remove(transfers, tr);
-   if (tr->animator)
-     ecore_animator_del(tr->animator);
-   tr->animator = NULL;
-   if (tr->obj)
-     {
-        cw = evas_object_data_get(tr->obj, "src");
-        if (cw) cw->transfer = NULL;
-     }
-   tr->obj = NULL;
-   E_FREE(tr);
-}
-
-EINTERN Eina_Bool
-e_mod_comp_animation_on_rotate_top(void *data)
-{
-   E_Comp_Transfer *transfer;
-   double elapsed_time;
-
-   E_Comp_Win *cw = data;
-   E_CHECK_RETURN(cw, 0);
-   if (!(transfer = cw->transfer)) return EINA_FALSE;
-   elapsed_time = ecore_loop_time_get() - transfer->begin_time ;
-   if (elapsed_time > transfer->duration) elapsed_time = transfer->duration;
-
-   float frame = elapsed_time / transfer->duration;
-   evas_object_move(transfer->obj, transfer->from + (transfer->len * frame) , 0);
-
-   Evas_Coord x, y, w, h;
-   Evas_Map* map;
-   float half_w, half_h;
-   float degree;
-
-   map = evas_map_new(4);
-   E_CHECK_RETURN(map, 0);
-   evas_map_smooth_set(map, EINA_TRUE);
-   evas_map_util_points_populate_from_object_full(map, transfer->obj, 0);
-   evas_object_geometry_get(transfer->obj, &x, &y, &w, &h);
-   half_w = (float) w * 0.5;
-   half_h = (float) h * 0.5;
-   degree = ROTATE_ANGLE_BEGIN + (ROTATE_ANGLE_TOP * frame);
-   evas_map_util_3d_rotate(map, 0, degree, 0, x + half_w, y + half_h, 0);
-   evas_map_util_3d_perspective(map, x + half_w, y + half_h, (-500) + 500 * frame, 1000);
-   evas_object_map_enable_set(transfer->obj, EINA_TRUE);
-   evas_object_map_set(transfer->obj, map);
-   evas_map_free(map);
-
-   if (elapsed_time == transfer->duration)
-     {
-        if (cw->animating == 1)
-          {
-             cw->animating = 0;
-          }
-        _e_mod_comp_animation_done(cw);
-        return EINA_FALSE;
-     }
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_comp_animation_on_rotate_left(void *data)
-{
-   E_Comp_Transfer *transfer;
-   double elapsed_time;
-
-   E_Comp_Win *cw = data;
-   if (!cw) return EINA_FALSE;
-   if (!(transfer = cw->transfer)) return EINA_FALSE;
-   elapsed_time = ecore_loop_time_get() - transfer->begin_time ;
-   if (elapsed_time > transfer->duration) elapsed_time = transfer->duration;
-
-   float frame = elapsed_time / transfer->duration;
-   evas_object_move(transfer->obj, transfer->from , 0);
-
-   Evas_Coord x, y, w, h;
-   Evas_Map* map;
-   float half_w, half_h;
-   float degree;
-
-   map = evas_map_new(4);
-   E_CHECK_RETURN(map, 0);
-   evas_map_smooth_set(map, EINA_TRUE);
-   evas_map_util_points_populate_from_object_full(map, transfer->obj, 0);
-   evas_object_geometry_get(transfer->obj, &x, &y, &w, &h);
-   half_w = (float) w * 0.5;
-   half_h = (float) h * 0.5;
-   degree = ROTATE_ANGLE_BEGIN + (ROTATE_ANGLE_LEFT * frame);
-   evas_map_util_3d_rotate(map, 0, degree, 0, x + half_w, y + half_h, 0);
-   evas_map_util_3d_perspective(map, x + half_w, y + half_h, -500, 1000);
-   evas_object_map_enable_set(transfer->obj, EINA_TRUE);
-   evas_object_map_set(transfer->obj, map);
-   evas_map_free(map);
-
-   if (elapsed_time == transfer->duration)
-     {
-        cw->animating = 0;
-        _e_mod_comp_animation_done(cw);
-        return EINA_FALSE;
-     }
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_comp_animation_on_translate(void *data)
-{
-   E_Comp_Win *cw;
-   E_Comp_Transfer *transfer, *rotate;
-   Evas_Coord x, y, w, h;
-   Evas_Map* map;
-   float half_w, half_h;
-   float degree, frame, translate_x;
-   double elapsed_time;
-
-   cw = (E_Comp_Win *)data;
-   E_CHECK_RETURN(cw, 0);
-
-   transfer = cw->transfer;
-   E_CHECK_RETURN(transfer, 0);
-
-   elapsed_time = ecore_loop_time_get() - transfer->begin_time;
-   if (elapsed_time > transfer->duration) elapsed_time = transfer->duration;
-
-   frame = elapsed_time / transfer->duration;
-   translate_x = transfer->from + (transfer->len * frame);
-   evas_object_move(transfer->obj, translate_x , 0);
-
-   map = evas_map_new(4);
-   E_CHECK_RETURN(map, 0);
-
-   evas_map_smooth_set(map, EINA_TRUE);
-   evas_map_util_points_populate_from_object_full(map, transfer->obj, 0);
-   evas_object_geometry_get(transfer->obj, &x, &y, &w, &h);
-   half_w = (float) w * 0.5;
-   half_h = (float) h * 0.5;
-   degree = 70.0f;
-   evas_map_util_3d_rotate(map, 0, degree, 0, x + half_w, y + half_h, 0);
-   evas_map_util_3d_perspective(map, x + half_w, y + half_h, -500, 1000);
-   evas_object_map_enable_set(transfer->obj, EINA_TRUE);
-   evas_object_map_set(transfer->obj, map);
-   evas_map_free(map);
-
-   if (elapsed_time != transfer->duration) return EINA_TRUE;
-
-   rotate = e_mod_comp_animation_transfer_new();
-   E_CHECK_RETURN(rotate, 0);
-
-   rotate->obj = transfer->obj;
-   rotate->duration = SWITCHER_DURATION_ROTATE;
-   rotate->begin_time = ecore_loop_time_get();
-   rotate->from = transfer->from + transfer->len;
-   if (transfer->selected)
-     {
-        rotate->len = -(rotate->from);
-        rotate->animator = ecore_animator_add(e_mod_comp_animation_on_rotate_top, cw);
-     }
-   else
-     {
-        rotate->len = 0;
-        rotate->animator = ecore_animator_add(e_mod_comp_animation_on_rotate_left, cw);
-     }
-   if (transfer->animator) ecore_animator_del(transfer->animator);
-   transfer->animator = NULL;
-
-   e_mod_comp_animation_transfer_free(cw->transfer);
-   cw->transfer = rotate;
-   return EINA_FALSE;
-}
-
-EINTERN Eina_Bool
-e_mod_comp_animation_transfer_list_clear(void)
-{
-   E_Comp_Transfer *tr;
-   E_CHECK_RETURN(transfers, 0);
-   EINA_LIST_FREE(transfers, tr)
-     {
-        if (!tr) continue;
-        e_mod_comp_animation_transfer_free(tr);
-     }
-   transfers = NULL;
-   return EINA_TRUE;
-}
-
-/* local subsystem functions */
-static void
-_e_mod_comp_animation_done(void *data)
-{
-   E_Comp_Win *cw = (E_Comp_Win *)data;
-   E_CHECK(cw);
-
-   L(LT_EFFECT, "[COMP] %18.18s w:0x%08x %s cw->transfer:%p\n",
-     "EFF", e_mod_comp_util_client_xid_get(cw),
-     "ANIMATE_DONE", cw->transfer);
-
-   E_CHECK_GOTO(cw->transfer, postjob);
-
-   evas_object_map_enable_set(cw->transfer->obj, EINA_FALSE);
-   evas_object_move(cw->transfer->obj, 0,0);
-
-   e_mod_comp_animation_transfer_free(cw->transfer);
-   cw->transfer = NULL;
-
-postjob:
-   e_mod_comp_done_defer(cw);
-}
diff --git a/comp-tizen/src/e_mod_comp_animation.h b/comp-tizen/src/e_mod_comp_animation.h
deleted file mode 100644 (file)
index 815c4ed..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifdef E_TYPEDEFS
-#else
-#ifndef E_MOD_COMP_ANIMATION_H
-#define E_MOD_COMP_ANIMATION_H
-
-#define SWITCHER_DURATION_TRANSLATE (0.33)
-#define SWITCHER_DURATION_ROTATE    (0.33)
-#define SWITCHER_DURATION_TOP       ((SWITCHER_DURATION_TRANSLATE) + (SWITCHER_DURATION_ROTATE))
-#define WINDOW_SPACE                (100)
-#define ROTATE_ANGLE_BEGIN          (70)
-#define ROTATE_ANGLE_TOP            (-70)
-#define ROTATE_ANGLE_LEFT           (-30)
-
-typedef struct _E_Comp_Transfer E_Comp_Transfer;
-
-struct _E_Comp_Transfer
-{
-   Evas_Object    *obj;
-   float           from;
-   float           len;
-   double          begin_time;
-   double          duration;
-   Ecore_Animator *animator;
-   Eina_Bool       selected;
-};
-
-/* transfer functions */
-EINTERN E_Comp_Transfer *e_mod_comp_animation_transfer_new(void);
-EINTERN void             e_mod_comp_animation_transfer_free(E_Comp_Transfer *tr);
-EINTERN Eina_Bool        e_mod_comp_animation_transfer_list_clear(void);
-
-/* animation functions */
-EINTERN Eina_Bool        e_mod_comp_animation_on_rotate_top(void *data);
-EINTERN Eina_Bool        e_mod_comp_animation_on_rotate_left(void *data);
-EINTERN Eina_Bool        e_mod_comp_animation_on_translate(void *data);
-
-#endif
-#endif
index 3ee07cf..43e213b 100644 (file)
@@ -248,10 +248,10 @@ e_mod_comp_canvas_nocomp_begin(E_Comp_Canvas *canvas)
    cw = canvas->nocomp.prepare.cw;
    E_CHECK_RETURN(cw, EINA_FALSE);
 
-   L(LT_EVENT_X,
-     "COMP|%31s|w:0x%08x|canvas:%d dmg:%d\n",
-     "NOCOMP_BEGIN", e_mod_comp_util_client_xid_get(cw),
-     canvas->num, cw->dmg_updates);
+   ELBF(ELBT_COMP, 0,
+        e_mod_comp_util_client_xid_get(cw),
+        "NOCOMP_BEGIN canvas:%d dmg:%d",
+        canvas->num, cw->dmg_updates);
 
    e_mod_comp_hw_ov_win_msg_show
      (E_COMP_LOG_TYPE_NOCOMP,
@@ -339,10 +339,10 @@ e_mod_comp_canvas_nocomp_end(E_Comp_Canvas *canvas)
    cw = canvas->nocomp.cw;
    E_CHECK_RETURN(cw, EINA_FALSE);
 
-   L(LT_EVENT_X,
-     "COMP|%31s|nocomp.cw:0x%08x canvas:%d\n",
-     "NOCOMP_END", e_mod_comp_util_client_xid_get(cw),
-     canvas->num);
+   ELBF(ELBT_COMP, 0,
+        e_mod_comp_util_client_xid_get(cw),
+        "NOCOMP_END canvas:%d",
+        canvas->num, cw->dmg_updates);
 
    e_mod_comp_hw_ov_win_msg_show
      (E_COMP_LOG_TYPE_NOCOMP,
index ad170d8..cff1790 100644 (file)
@@ -59,6 +59,7 @@ e_mod_comp_cfdata_edd_init(E_Config_DD **conf_edd, E_Config_DD **match_edd)
    E_CONFIG_VAL(D, T, keyboard_effect, UCHAR);
    E_CONFIG_VAL(D, T, fake_image_launch, UCHAR);
    E_CONFIG_VAL(D, T, fake_launch_layer, INT);
+   E_CONFIG_VAL(D, T, lower_layer, INT);
    E_CONFIG_VAL(D, T, defer_raise_effect, UCHAR);
    E_CONFIG_VAL(D, T, max_lock_screen_time, DOUBLE);
    E_CONFIG_VAL(D, T, damage_timeout, DOUBLE);
@@ -123,6 +124,7 @@ e_mod_comp_cfdata_config_new(void)
    cfg->keyboard_effect = 0;
    cfg->fake_image_launch = 0;
    cfg->fake_launch_layer = 0;
+   cfg->lower_layer = 5;
    cfg->defer_raise_effect = 0;
    cfg->max_lock_screen_time = 2.0;
    cfg->damage_timeout = 10.0;
index 2331c09..b9f3425 100644 (file)
@@ -35,6 +35,7 @@ struct _Config
    unsigned char keyboard_effect;
    unsigned char fake_image_launch;
    int           fake_launch_layer;
+   int            lower_layer;
    unsigned char defer_raise_effect;
    double        max_lock_screen_time;
    double        damage_timeout;
index 57a18a4..f33d0c5 100644 (file)
@@ -200,28 +200,34 @@ EINTERN Eina_Bool
 e_mod_comp_debug_edje_error_get(Evas_Object *o,
                                 Ecore_X_Window win)
 {
-   int err = EDJE_LOAD_ERROR_NONE;
-   E_CHECK_RETURN(o, 0);
+   Edje_Load_Error err = edje_object_load_error_get(o);
+   char *_err_msg = NULL;
+   Eina_Bool res = EINA_TRUE;
 
-   if ((err = edje_object_load_error_get(o)) != EDJE_LOAD_ERROR_NONE)
+   if (err != EDJE_LOAD_ERROR_NONE)
      {
         switch (err)
           {
-           case EDJE_LOAD_ERROR_GENERIC:                    fprintf(stderr, "[E17-comp] EDJE_LOAD_ERROR_GENERIC! win:0x%08x\n",                    win); break;
-           case EDJE_LOAD_ERROR_DOES_NOT_EXIST:             fprintf(stderr, "[E17-comp] EDJE_LOAD_ERROR_DOES_NOT_EXIST! win:0x%08x\n",             win); break;
-           case EDJE_LOAD_ERROR_PERMISSION_DENIED:          fprintf(stderr, "[E17-comp] EDJE_LOAD_ERROR_PERMISSION_DENIED! win:0x%08x\n",          win); break;
-           case EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED: fprintf(stderr, "[E17-comp] EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED! win:0x%08x\n", win); break;
-           case EDJE_LOAD_ERROR_CORRUPT_FILE:               fprintf(stderr, "[E17-comp] EDJE_LOAD_ERROR_CORRUPT_FILE! win:0x%08x\n",               win); break;
-           case EDJE_LOAD_ERROR_UNKNOWN_FORMAT:             fprintf(stderr, "[E17-comp] EDJE_LOAD_ERROR_UNKNOWN_FORMAT! win:0x%08x\n",             win); break;
-           case EDJE_LOAD_ERROR_INCOMPATIBLE_FILE:          fprintf(stderr, "[E17-comp] EDJE_LOAD_ERROR_INCOMPATIBLE_FILE! win:0x%08x\n",          win); break;
-           case EDJE_LOAD_ERROR_UNKNOWN_COLLECTION:         fprintf(stderr, "[E17-comp] EDJE_LOAD_ERROR_UNKNOWN_COLLECTION! win:0x%08x\n",         win); break;
-           case EDJE_LOAD_ERROR_RECURSIVE_REFERENCE:        fprintf(stderr, "[E17-comp] EDJE_LOAD_ERROR_RECURSIVE_REFERENCE! win:0x%08x\n",        win); break;
-           default:
-              break;
+           case EDJE_LOAD_ERROR_GENERIC:                    _err_msg = strdup("ERR_GENERIC");                    break;
+           case EDJE_LOAD_ERROR_DOES_NOT_EXIST:             _err_msg = strdup("ERR_DOES_NOT_EXIST");             break;
+           case EDJE_LOAD_ERROR_PERMISSION_DENIED:          _err_msg = strdup("ERR_PERMISSION_DENIED");          break;
+           case EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED: _err_msg = strdup("ERR_RESOURCE_ALLOCATION_FAILED"); break;
+           case EDJE_LOAD_ERROR_CORRUPT_FILE:               _err_msg = strdup("ERR_CORRUPT_FILE");               break;
+           case EDJE_LOAD_ERROR_UNKNOWN_FORMAT:             _err_msg = strdup("ERR_UNKNOWN_FORMAT");             break;
+           case EDJE_LOAD_ERROR_INCOMPATIBLE_FILE:          _err_msg = strdup("ERR_INCOMPATIBLE_FILE");          break;
+           case EDJE_LOAD_ERROR_UNKNOWN_COLLECTION:         _err_msg = strdup("ERR_UNKNOWN_COLLECTION");         break;
+           case EDJE_LOAD_ERROR_RECURSIVE_REFERENCE:        _err_msg = strdup("ERR_RECURSIVE_REFERENCE");        break;
+           default:                                         _err_msg = strdup("ERR_UNKNOWN_ERROR");              break;
           }
-        return EINA_FALSE;
+        res = EINA_FALSE;
      }
-   return EINA_TRUE;
+
+   if (res) _err_msg = strdup("SUCCESS");
+   fprintf(stderr, "[E17-comp] %s win:0x%08x o:%p\n", _err_msg, win, o);
+   ELBF(ELBT_COMP, 0, win, "%15.15s|o:%p %s", "EDC", o, _err_msg);
+   free(_err_msg);
+
+   return res;
 }
 
 EINTERN Eina_Bool
index d72857f..c95b37d 100644 (file)
@@ -2,7 +2,6 @@
 #include "e_mod_comp.h"
 #include "e_mod_comp_atoms.h"
 #include "e_mod_comp_debug.h"
-#include "e_mod_comp_effect_tm.h"
 #include <X11/Xlib.h>
 
 struct _E_Comp_Effect_Type
@@ -31,8 +30,6 @@ static Eina_List   *effect_jobs = NULL;
 
 /* local subsystem functions */
 static E_Comp_Effect_Style _effect_style_get(Ecore_X_Atom a);
-static void                _bg_show(E_Comp_Win *cw);
-static void                _bg_hide(E_Comp_Win *cw);
 static void                _effect_stage_enable(E_Comp_Win *cw, E_Comp_Win *cw2);
 static Eina_Bool           _state_send(E_Comp_Win *cw, Eina_Bool state);
 static Eina_Bool           _effect_animating_check(const char *emission);
@@ -83,6 +80,11 @@ e_mod_comp_effect_signal_flush(void)
                          {
                             // special contonl this signal
                             edje_object_signal_emit(job->o, job->emission, job->src);
+
+                            ELBF(ELBT_COMP, 0, job->win,
+                                 "%15.15s|EMIT %s", "SIGNAL",
+                                 job->emission);
+
                             effect_jobs = eina_list_remove(effect_jobs, job);
                             E_FREE(job);
                          }
@@ -104,16 +106,12 @@ e_mod_comp_effect_signal_flush(void)
                                    {
                                       // do effect signal emit
                                       edje_object_signal_emit(job->o, job->emission, job->src);
+
+                                      ELBF(ELBT_COMP, 0, job->win,
+                                           "%15.15s|EMIT %s", "SIGNAL",
+                                           job->emission);
                                    }
-                                 else if (strncmp(job->emission, "e,state,background,visible,off", sizeof("e,state,background,visible,off")) == 0)
-                                   {
-                                      e_mod_comp_explicit_background_hide_done(cw);
-                                   }
-                                 else if (strncmp(job->emission, "e,state,background,visible,on", sizeof("e,state,background,visible,on")) == 0)
-                                   {
-                                      e_mod_comp_explicit_background_show_done(cw);
-                                   }
-                                 else if (strncmp(job->emission, "e,state,window,rotation,", sizeof("e,state,window,rotation,")) == 0)
+                                 else if (strncmp(job->emission, "e,state,window,rotation,", sizeof("e,state,window,rotation")) == 0)
                                    {
                                       e_mod_comp_explicit_win_rotation_done(cw);
                                    }
@@ -129,6 +127,10 @@ e_mod_comp_effect_signal_flush(void)
                             else
                               {
                                  edje_object_signal_emit(job->o, job->emission, job->src);
+
+                                 ELBF(ELBT_COMP, 0, job->win,
+                                      "%15.15s|EMIT %s", "SIGNAL",
+                                      job->emission);
                               }
                          }
                     }
@@ -143,6 +145,11 @@ e_mod_comp_effect_signal_flush(void)
         else
           { // effect for not window ex) capture. etc...
              edje_object_signal_emit(job->o, job->emission, job->src);
+
+             ELBF(ELBT_COMP, 0, job->win,
+                  "%15.15s|EMIT %s", "SIGNAL",
+                  job->emission);
+
              effect_jobs = eina_list_remove(effect_jobs, job);
              E_FREE(job);
           }
@@ -279,6 +286,7 @@ e_mod_comp_effect_win_show(E_Comp_Win *cw)
 {
    E_Comp_Effect_Style st;
    Eina_Bool animatable, launch;
+   E_Comp_Win *bg_cw = NULL;
    char emission[64];
    E_CHECK(cw);
    E_CHECK(cw->c);
@@ -319,7 +327,20 @@ e_mod_comp_effect_win_show(E_Comp_Win *cw)
      {
       case E_COMP_EFFECT_STYLE_DEFAULT:
         launch = e_mod_comp_policy_app_launch_check(cw);
-        if (launch) _bg_show(cw);
+        if (launch)
+          {
+             if (!(cw->launched))
+               {
+                  e_mod_comp_effect_signal_add
+                    (cw, NULL, "e,state,visible,on", "e");
+               }
+             else
+               {
+                 e_mod_comp_effect_signal_add
+                    (cw, NULL, "e,state,visible,on,noeffect", "e");
+               }
+             goto postjob;
+          }
 
         if (TYPE_KEYBOARD_CHECK(cw))
           {
@@ -341,7 +362,7 @@ e_mod_comp_effect_win_show(E_Comp_Win *cw)
           }
         else
           e_mod_comp_effect_signal_add
-            (cw, NULL, "e,state,visible,on", "e");
+            (cw, NULL, "e,state,visible,on,noeffect", "e");
         break;
       case E_COMP_EFFECT_STYLE_NONE:
         e_mod_comp_effect_signal_add
@@ -395,7 +416,8 @@ EINTERN Eina_Bool
 e_mod_comp_effect_win_hide(E_Comp_Win *cw)
 {
    E_Comp_Effect_Style st;
-   Eina_Bool animatable, close;
+   Eina_Bool animatable;
+   Eina_Bool close = EINA_FALSE;
    char emission[64];
    E_CHECK_RETURN(cw, 0);
    E_CHECK_RETURN(cw->c, 0);
@@ -418,9 +440,6 @@ e_mod_comp_effect_win_hide(E_Comp_Win *cw)
    switch (st)
      {
       case E_COMP_EFFECT_STYLE_DEFAULT:
-        close = e_mod_comp_policy_app_close_check(cw);
-        if (!cw->animating && close)
-          _bg_hide(cw);
         if (TYPE_KEYBOARD_CHECK(cw))
           {
              if (cw->c->keyboard_effect)
@@ -439,8 +458,7 @@ e_mod_comp_effect_win_hide(E_Comp_Win *cw)
                    (cw, NULL, "e,state,visible,off,noeffect", "e");
           }
         else
-          e_mod_comp_effect_signal_add
-            (cw, NULL, "e,state,visible,off", "e");
+          ;
         break;
       case E_COMP_EFFECT_STYLE_NONE:
         e_mod_comp_effect_signal_add
@@ -502,10 +520,9 @@ e_mod_comp_effect_win_restack(E_Comp_Win *cw,
    E_CHECK(cw2);
 
    L(LT_EFFECT,
-     "[COMP] %18.18s w:0x%08x %s tm:%d tm->obscured:%d\n",
+     "[COMP] %18.18s w:0x%08x %s\n",
      "EFF", e_mod_comp_util_client_xid_get(cw),
-     "RAISE_ABOVE", cw->c->switcher,
-     cw->c->switcher_obscured);
+     "RAISE_ABOVE");
 
    while (_cw->defer_hide || !(REGION_EQUAL_TO_ROOT(_cw)) ||
           _cw->input_only || _cw->invalid ||
@@ -522,13 +539,9 @@ e_mod_comp_effect_win_restack(E_Comp_Win *cw,
    if (e_mod_comp_policy_app_launch_check(cw))
      {
         e_mod_comp_win_comp_objs_stack_above(cw, cw2);
-        _effect_stage_enable(_cw, cw);
-        e_mod_comp_effect_signal_add
-          (_cw, NULL,
-          "e,state,background,visible,on", "e");
-        e_mod_comp_effect_signal_add
-          (cw, NULL, "e,state,raise_above,on", "e");
-     }
+        if (cw->launched)
+           e_mod_comp_effect_signal_add
+             (cw, NULL, "e,state,raise_above,on", "e");     }
    else if (e_mod_comp_policy_app_close_check(_cw))
      {
         if (cw->c->defer_raise_effect)
@@ -539,11 +552,7 @@ e_mod_comp_effect_win_restack(E_Comp_Win *cw,
         else
           e_mod_comp_win_comp_objs_stack_above(cw, cw2);
 
-        _effect_stage_enable(cw, _cw);
-        e_mod_comp_effect_signal_add
-          (_cw, NULL, "e,state,raise_above,off", "e");
-        e_mod_comp_effect_signal_add
-          (cw, NULL, "e,state,background,visible,off", "e");
+        e_mod_comp_effect_mirror_handler_hide(cw, _cw);
      }
    else
      {
@@ -557,24 +566,55 @@ EINTERN void
 e_mod_comp_effect_win_lower(E_Comp_Win *cw,
                             E_Comp_Win *cw2)
 {
-   Eina_Bool close = EINA_FALSE;
    E_CHECK(cw);
    E_CHECK(cw2);
 
    cw->defer_raise = EINA_TRUE;
 
-   close = e_mod_comp_policy_app_close_check(cw);
-   if (close)
+   if (e_mod_comp_policy_app_close_check(cw))
+     e_mod_comp_effect_signal_add
+       (cw, NULL, "e,state,raise_above,off", "e");
+}
+
+EINTERN void
+e_mod_comp_effect_mirror_handler_hide(E_Comp_Win *cw,
+                            E_Comp_Win *cw2)
+{
+   E_Manager_Comp_Source *src = NULL;
+   E_Comp_Object *co;
+   E_Comp *c;
+   Eina_Bool res;
+   Eina_Inlist *l;
+
+   E_CHECK(cw);
+   E_CHECK(cw2);
+
+   c = cw->c;
+   E_CHECK(c);
+   E_CHECK(c->mirror_handler);
+
+   src = e_manager_comp_src_get(c->man, cw2->win);
+   c->mirror_obj = e_manager_comp_src_image_mirror_add(c->man, src);
+
+   res = edje_object_part_swallow(c->mirror_handler, "e.swallow.content", c->mirror_obj);
+   E_CHECK(res);
+
+   evas_object_show(c->mirror_obj);
+   evas_object_show(c->mirror_handler);
+
+   EINA_LIST_FOREACH(cw->objs, l, co)
      {
-        _effect_stage_enable(cw2, cw);
-        e_mod_comp_effect_signal_add
-          (cw2, NULL, "e,state,background,visible,off", "e");
+        if (!co) continue;
+        if (!co->shadow) continue ;
+          evas_object_stack_above(c->mirror_handler, co->shadow);
      }
 
-     e_mod_comp_effect_signal_add
-        (cw, NULL, "e,state,raise_above,off", "e");
+   e_mod_comp_effect_signal_add
+     (NULL, c->mirror_handler, "e,state,mirror,visible,off", "e");
+
 }
 
+
 EINTERN void
 e_mod_comp_effect_disable_stage(E_Comp *c,
                                 E_Comp_Win *cw)
@@ -626,15 +666,13 @@ e_mod_comp_effect_disable_stage(E_Comp *c,
      }
 }
 
-#define _CHECK(c, s, e) {                    \
-   if (!strncmp(s, e, strlen(s)))            \
-     {                                       \
-        L(LT_EFFECT,                         \
-          "[COMP] %18.18s w:0x%08x %s\n",    \
-          "SIGNAL",                          \
-          e_mod_comp_util_client_xid_get(c), \
-          e);                                \
-     }                                       \
+#define _CHECK(c, s, e) {                       \
+   if (!strncmp(s, e, strlen(s)))               \
+     {                                          \
+        ELBF(ELBT_COMP, 0,                      \
+             e_mod_comp_util_client_xid_get(c), \
+             "%15.15s|%s", "SIGNAL", e);        \
+     }                                          \
 }
 
 EINTERN Eina_Bool
@@ -730,8 +768,6 @@ finish:
    _CHECK(cw, "e,state,visible,off,custom0,180",emission);
    _CHECK(cw, "e,state,visible,off,custom0,270",emission);
    _CHECK(cw, "e,state,visible,off,custom1",    emission);
-   _CHECK(cw, "e,state,background,visible,on",  emission);
-   _CHECK(cw, "e,state,background,visible,off", emission);
    _CHECK(cw, "e,state,raise_above,off",        emission);
    _CHECK(cw, "e,state,raise_above_post,on",    emission);
    _CHECK(cw, "e,state,switcher_top,on",        emission);
@@ -815,105 +851,6 @@ _effect_style_get(Ecore_X_Atom a)
    return E_COMP_EFFECT_STYLE_NONE;
 }
 
-static void
-_bg_show(E_Comp_Win *cw)
-{
-   E_Comp_Win *bg_cw = NULL;
-   bg_cw = e_mod_comp_util_win_below_get(cw, 0);
-   E_CHECK(bg_cw);
-
-   _effect_stage_enable(cw, bg_cw);
-   e_mod_comp_effect_signal_add
-     (bg_cw, NULL,
-     "e,state,background,visible,on", "e");
-}
-
-static void
-_bg_hide(E_Comp_Win *cw)
-{
-   E_Comp_Win *bg_cw = NULL;
-   bg_cw = e_mod_comp_util_win_below_get(cw, 0);
-   E_CHECK(bg_cw);
-
-   _effect_stage_enable(cw, bg_cw);
-   e_mod_comp_effect_signal_add
-     (bg_cw, NULL,
-     "e,state,background,visible,off", "e");
-}
-
-static void
-_effect_stage_enable(E_Comp_Win *cw,
-                     E_Comp_Win *cw2)
-{
-   E_Comp_Win *_cw = cw;
-   Eina_Inlist *l;
-   E_Comp_Canvas *canvas;
-   Eina_List *ll;
-   E_Comp_Object *co;
-   Eina_Bool visible = 0;
-   E_CHECK(cw);
-   E_CHECK(cw2);
-
-   // do hide window which is not related window animation effect.
-   while ((l = EINA_INLIST_GET(_cw)->prev) != NULL)
-     {
-        visible = 0;
-        _cw = _EINA_INLIST_CONTAINER(_cw, l);
-        E_CHECK(_cw);
-        if ((_cw->invalid) || (_cw->input_only) ||
-            (_cw->win == cw->win) ||
-            (_cw->win == cw2->win) ||
-            TYPE_INDICATOR_CHECK(_cw))
-          {
-             continue;
-          }
-
-        EINA_LIST_FOREACH(_cw->objs, ll, co)
-          {
-             if (!co) continue;
-             if (evas_object_visible_get(co->shadow))
-               {
-                  visible = 1;
-                  break;
-               }
-          }
-        if (!visible) continue;
-
-        _cw->animate_hide = EINA_TRUE;
-
-        EINA_LIST_FOREACH(_cw->objs, ll, co)
-          {
-             if (!co) continue;
-             evas_object_hide(co->shadow);
-          }
-     }
-
-   EINA_LIST_FOREACH(cw->c->canvases, ll, canvas)
-     {
-        if (!canvas) continue;
-        if (canvas->use_bg_img) continue;
-        evas_object_lower(canvas->bg_img);
-     }
-
-   EINA_LIST_FOREACH(cw->objs, ll, co)
-     {
-        if (!co) continue;
-        if (!cw->hidden_override && cw->show_done)
-          evas_object_show(co->shadow);
-     }
-   EINA_LIST_FOREACH(cw2->objs, ll, co)
-     {
-        if (!co) continue;
-        if (!cw2->hidden_override && cw2->show_done)
-          evas_object_show(co->shadow);
-     }
-
-   cw->animate_hide = EINA_FALSE;
-   cw2->animate_hide = EINA_FALSE;
-   cw->effect_stage = EINA_TRUE;
-   cw->c->effect_stage = EINA_TRUE;
-}
-
 static Eina_Bool
 _state_send(E_Comp_Win *cw,
             Eina_Bool state)
index b076403..9797180 100644 (file)
@@ -48,6 +48,7 @@ EINTERN void                e_mod_comp_effect_win_show(E_Comp_Win *cw);
 EINTERN Eina_Bool           e_mod_comp_effect_win_hide(E_Comp_Win *cw);
 EINTERN void                e_mod_comp_effect_win_restack(E_Comp_Win *cw, E_Comp_Win *cw2);
 EINTERN void                e_mod_comp_effect_win_lower(E_Comp_Win *cw, E_Comp_Win *cw2);
+EINTERN void                e_mod_comp_effect_mirror_handler_hide(E_Comp_Win *cw, E_Comp_Win *cw2);
 EINTERN void                e_mod_comp_effect_disable_stage(E_Comp *c, E_Comp_Win *cw);
 EINTERN Eina_Bool           e_mod_comp_effect_signal_add(E_Comp_Win *cw, Evas_Object *o, const char *emission, const char *src);
 EINTERN Eina_Bool           e_mod_comp_effect_signal_del(E_Comp_Win *cw, Evas_Object *obj, const char *name);
index 4a134e8..7c1de56 100644 (file)
@@ -23,8 +23,6 @@ struct _E_Comp_Effect_Image_Launch
 static void      _show_done(void *data, Evas_Object *obj, const char *emission, const char *source);
 static void      _hide_done(void *data, Evas_Object *obj, const char *emission, const char *source);
 static Eina_Bool _launch_timeout(void *data);
-static void      _invisible_win_hide(E_Comp_Win *cw, Eina_Bool show);
-static E_Comp_Win *_bg_win_get(void);
 static E_Comp_Win *_appinapp_bottom_win_get(E_Comp_Win *normal_top);
 
 /* local subsystem globals */
@@ -220,16 +218,6 @@ e_mod_comp_effect_image_launch_show(E_Comp_Effect_Image_Launch *eff,
         E_CHECK_GOTO(res, error);
      }
 
-   // background hide effect
-   if(c->animatable)
-     {
-        bg_cw = _bg_win_get();
-   if (bg_cw)
-     {
-        _invisible_win_hide(bg_cw, EINA_TRUE);
-     }
-     }
-
    // set position of fake launch image
    if (eff->layer_obj)
      {
@@ -322,7 +310,6 @@ EINTERN Eina_Bool
 e_mod_comp_effect_image_launch_hide(E_Comp_Effect_Image_Launch *eff)
 {
    E_Comp *c = e_mod_comp_util_get();
-   E_Comp_Win *bg_cw = NULL;
    E_CHECK_RETURN(c, 0);
    E_CHECK_RETURN(eff, 0);
 
@@ -330,16 +317,6 @@ e_mod_comp_effect_image_launch_hide(E_Comp_Effect_Image_Launch *eff)
      ecore_timer_del(eff->timeout);
    eff->timeout = NULL;
 
-   // background hide effect
-   if(c->animatable)
-     {
-        bg_cw = _bg_win_get();
-   if (bg_cw)
-     {
-        _invisible_win_hide(bg_cw, EINA_FALSE);
-     }
-     }
-
    if (c->animatable)
      {
         switch (eff->rot)
@@ -469,30 +446,6 @@ _appinapp_bottom_win_get(E_Comp_Win *normal_top)
    return _cw;
 }
 
-
-static E_Comp_Win *
-_bg_win_get(void)
-{
-   E_Comp *c = e_mod_comp_util_get();
-   E_Comp_Win *cw = NULL;
-   E_CHECK_RETURN(c, 0);
-
-   EINA_INLIST_REVERSE_FOREACH(c->wins, cw)
-     {
-        if ((cw->visible) &&
-            (REGION_EQUAL_TO_ROOT(cw)) &&
-            (!cw->invalid) && (!cw->input_only) &&
-            (TYPE_NORMAL_CHECK(cw)))
-          {
-             return cw;
-          }
-        if(TYPE_HOME_CHECK(cw))
-          return cw;
-     }
-   return NULL;
-}
-
-
 static void
 _show_done(void *data,
            Evas_Object *obj __UNUSED__,
@@ -547,7 +500,6 @@ _launch_timeout(void *data)
 {
    E_Comp_Effect_Image_Launch *eff;
    E_Comp *c = e_mod_comp_util_get();
-   E_Comp_Win *bg_cw = NULL;
    eff = (E_Comp_Effect_Image_Launch *)data;
 
    E_CHECK_RETURN(c, 0);
@@ -561,13 +513,6 @@ _launch_timeout(void *data)
    eff->win = 0;
    eff->fake_image_show_done = EINA_FALSE;
 
-   // background hide effect
-   bg_cw = _bg_win_get();
-   if (bg_cw)
-     {
-        _invisible_win_hide(bg_cw, EINA_FALSE);
-     }
-
    if (c->animatable)
      {
         switch (eff->rot)
@@ -603,93 +548,3 @@ _launch_timeout(void *data)
 
    return EINA_FALSE;
 }
-
-static void
-_invisible_win_hide(E_Comp_Win *cw,
-                    Eina_Bool show)
-{
-   E_Comp *c = e_mod_comp_util_get();
-   Eina_List *ll;
-   E_Comp_Object *co;
-   Eina_Bool visible = 0;
-   E_Comp_Canvas *canvas;
-   E_Comp_Win *_cw = cw;
-   Eina_Inlist *l;
-
-   E_CHECK(cw);
-   E_CHECK(c);
-
-   while ((l = EINA_INLIST_GET(_cw)->prev) != NULL)
-     {
-        visible = 0;
-        _cw = _EINA_INLIST_CONTAINER(_cw, l);
-        E_CHECK(_cw);
-        if ((!_cw) ||
-            (_cw->invalid) ||
-            (_cw->input_only) ||
-            (_cw->win == cw->win) ||
-            TYPE_INDICATOR_CHECK(_cw))
-          {
-             continue;
-          }
-
-        EINA_LIST_FOREACH(_cw->objs, ll, co)
-          {
-             if (!co) continue;
-             if (evas_object_visible_get(co->shadow))
-               {
-                  visible = 1;
-                  break;
-               }
-          }
-        if (!visible) continue;
-
-        // do hide window which is not related window animation effect.
-        _cw->animate_hide = EINA_TRUE;
-        EINA_LIST_FOREACH(_cw->objs, ll, co)
-          {
-             if (!co) continue;
-             evas_object_hide(co->shadow);
-          }
-     }
-
-   EINA_LIST_FOREACH(cw->c->canvases, ll, canvas)
-     {
-        if (!canvas) continue;
-        if (canvas->use_bg_img) continue;
-        evas_object_lower(canvas->bg_img);
-     }
-
-   EINA_LIST_FOREACH(cw->objs, ll, co)
-     {
-        if (!co) continue;
-        if (!cw->hidden_override && cw->show_done)
-          evas_object_show(co->shadow);
-     }
-
-   cw->animate_hide = EINA_FALSE;
-   cw->c->effect_stage = EINA_TRUE;
-
-   if (show)
-     {
-        if (c->animatable)
-          e_mod_comp_effect_signal_add
-            (cw, NULL,
-            "e,state,background,visible,on", "e");
-        else
-          e_mod_comp_effect_signal_add
-            (cw, NULL,
-            "e,state,background,visible,on,noeffect", "e");
-     }
-   else
-     {
-        if (c->animatable)
-          e_mod_comp_effect_signal_add
-            (cw, NULL,
-            "e,state,background,visible,off", "e");
-        else
-          e_mod_comp_effect_signal_add
-            (cw, NULL,
-            "e,state,background,visible,off,noeffect", "e");
-     }
-}
diff --git a/comp-tizen/src/e_mod_comp_effect_screen_capture.c b/comp-tizen/src/e_mod_comp_effect_screen_capture.c
deleted file mode 100644 (file)
index 4852b24..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-#include "e_mod_comp_shared_types.h"
-#include "e_mod_comp.h"
-#include "e_mod_comp_debug.h"
-#include "e_mod_comp_effect_screen_capture.h"
-
-struct _E_Comp_Effect_Screen_Capture
-{
-   Evas_Object *obj;
-   struct {
-      int x, y, w, h;
-   } geom;
-};
-
-/* local subsystem functions */
-static void _show_done(void *data, Evas_Object *obj, const char *emission, const char *source);
-
-/* screen capture effect functions */
-EINTERN E_Comp_Effect_Screen_Capture *
-e_mod_comp_effect_screen_capture_new(Evas *evas,
-                                     int w, int h)
-{
-   E_Comp_Effect_Screen_Capture *cap;
-   int ok;
-
-   E_CHECK_RETURN(evas, 0);
-   E_CHECK_RETURN((w <= 0), 0);
-   E_CHECK_RETURN((h <= 0), 0);
-   E_CHECK_RETURN(_comp_mod, 0);
-   E_CHECK_RETURN(_comp_mod->conf, 0);
-
-   cap = E_NEW(E_Comp_Effect_Screen_Capture, 1);
-   E_CHECK_RETURN(cap, 0);
-
-   cap->geom.x = 0;
-   cap->geom.y = 0;
-   cap->geom.w = w;
-   cap->geom.h = h;
-
-   cap->obj = edje_object_add(evas);
-   E_CHECK_GOTO(cap->obj, error);
-
-   ok = edje_object_file_set(cap->obj,
-                             _comp_mod->conf->shadow_file,
-                             "capture_effect");
-   E_CHECK_GOTO(ok, error);
-
-   evas_object_move(cap->obj, 0, 0);
-   evas_object_resize(cap->obj, w, h);
-
-   edje_object_signal_callback_add
-     (cap->obj, "img,capture,show,done", "img", _show_done, cap);
-
-   return cap;
-
-error:
-   if (cap)
-     {
-        if (cap->obj)
-          {
-             e_mod_comp_debug_edje_error_get(cap->obj, 0);
-             evas_object_del(cap->obj);
-             cap->obj = NULL;
-          }
-        E_FREE(cap);
-     }
-   return NULL;
-}
-
-EINTERN void
-e_mod_comp_effect_screen_capture_free(E_Comp_Effect_Screen_Capture *cap)
-{
-   E_CHECK(cap);
-   if (evas_object_visible_get(cap->obj))
-     evas_object_hide(cap->obj);
-   E_FREE(cap);
-}
-
-EINTERN Eina_Bool
-e_mod_comp_effect_screen_capture_handler_message(Ecore_X_Event_Client_Message *ev)
-{
-   E_Comp *c;
-   Evas_Object *o;
-   E_CHECK_RETURN(ev, 0);
-
-   c = e_mod_comp_find(ev->win);
-   E_CHECK_RETURN(c, 0);
-   E_CHECK_RETURN(c->animatable, 0);
-   E_CHECK_RETURN(c->eff_cap, 0);
-
-   o = c->eff_cap->obj;
-   E_CHECK_RETURN(o, 0);
-
-   evas_object_show(o);
-   evas_object_raise(o);
-   e_mod_comp_effect_signal_add
-     (NULL, o, "img,state,capture,on", "img");
-
-   return EINA_TRUE;
-}
-
-/* local subsystem functions */
-static void
-_show_done(void        *data,
-           Evas_Object *obj      __UNUSED__,
-           const char  *emission __UNUSED__,
-           const char  *source   __UNUSED__)
-{
-   E_Comp_Effect_Screen_Capture *cap;
-   cap = (E_Comp_Effect_Screen_Capture *)data;
-   E_CHECK(cap);
-
-   e_mod_comp_effect_animating_set(NULL, NULL, EINA_FALSE);
-
-   if (evas_object_visible_get(cap->obj))
-     evas_object_hide(cap->obj);
-}
diff --git a/comp-tizen/src/e_mod_comp_effect_screen_capture.h b/comp-tizen/src/e_mod_comp_effect_screen_capture.h
deleted file mode 100644 (file)
index 5128e0d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef E_TYPEDEFS
-#else
-#ifndef E_MOD_COMP_EFFECT_SCREEN_CAPTURE_H
-#define E_MOD_COMP_EFFECT_SCREEN_CAPTURE_H
-
-typedef struct _E_Comp_Effect_Screen_Capture E_Comp_Effect_Screen_Capture;
-
-/* screen capture effect functions */
-EINTERN E_Comp_Effect_Screen_Capture *e_mod_comp_effect_screen_capture_new(Evas *evas, int w, int h);
-EINTERN void                          e_mod_comp_effect_screen_capture_free(E_Comp_Effect_Screen_Capture *cap);
-EINTERN Eina_Bool                     e_mod_comp_effect_screen_capture_handler_message(Ecore_X_Event_Client_Message *ev);
-
-#endif
-#endif
diff --git a/comp-tizen/src/e_mod_comp_effect_tm.c b/comp-tizen/src/e_mod_comp_effect_tm.c
deleted file mode 100644 (file)
index 326fbb1..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-#include "e_mod_comp_shared_types.h"
-#include "e_mod_comp.h"
-#include "e_mod_comp_debug.h"
-#include "e_mod_comp_effect_tm.h"
-
-/* local subsystem functions */
-static void      _defer_raise_clear(void);
-static Eina_Bool _valid_win_check(E_Comp_Win *cw);
-static Eina_Bool _win_size_check(E_Comp_Win *cw);
-static Eina_Bool _win_bg_item_init(E_Comp *c);
-
-/* local subsystem globals */
-
-/* externally accessible functions */
-EINTERN Eina_Bool
-e_mod_comp_effect_tm_bg_show(E_Comp_Win *cw)
-{
-   E_Comp_Win *_cw;
-   E_Comp_Object *co;
-   int i = 0, _x = 0;
-
-   E_CHECK_RETURN(cw, 0);
-   E_CHECK_RETURN(cw->c, 0);
-   E_CHECK_RETURN(cw->c->animatable, 0);
-
-   _defer_raise_clear();
-   e_mod_comp_animation_transfer_list_clear();
-   cw->c->switcher_animating = EINA_TRUE;
-   cw->c->selected_pos = 0;
-
-   L(LT_EFFECT, "[COMP] %18.18s w:0x%08x %s\n", "EFF",
-     e_mod_comp_util_client_xid_get(cw), "BG_SHOW_TM");
-
-   EINA_INLIST_REVERSE_FOREACH(cw->c->wins, _cw)
-     {
-        if (!_cw) continue;
-        if (!_win_size_check(_cw)) continue;
-        if (!_valid_win_check(_cw)) continue;
-
-        i++;
-
-        L(LT_EFFECT, "[COMP] %18.18s w:0x%08x %s [%d]\n", "EFF",
-          e_mod_comp_util_client_xid_get(_cw), "BG_SHOW_TM", i);
-
-        // move all windows to each stack position
-        _x = (i + 1) * (-WINDOW_SPACE) + (_cw->c->man->w);
-        co = eina_list_data_get(cw->objs);
-        if (!co) continue;
-        evas_object_move(co->shadow, _x, 0);
-
-        if (i == 1)
-          {
-             // top window
-             e_mod_comp_effect_signal_add
-               (_cw, NULL, "e,state,switcher_top,on", "e");
-          }
-        else
-          {
-             // left of top window
-             e_mod_comp_effect_signal_add
-               (_cw, NULL, "e,state,switcher,on", "e");
-          }
-     }
-
-   cw->c->switcher = EINA_TRUE;
-   cw->c->switcher_obscured = !(e_mod_comp_util_win_visible_get(cw));
-
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_comp_effect_tm_bg_hide(E_Comp_Win *cw)
-{
-   E_CHECK_RETURN(cw, 0);
-   E_CHECK_RETURN(cw->c, 0);
-   E_CHECK_RETURN(cw->c->animatable, 0);
-
-   if (cw->c->switcher_obscured) return EINA_TRUE;
-
-   e_mod_comp_animation_transfer_list_clear();
-   cw->c->switcher_animating = EINA_TRUE;
-
-   L(LT_EFFECT, "[COMP] %18.18s w:0x%08x %s\n", "EFF",
-     e_mod_comp_util_client_xid_get(cw), "BG_HIDE_TM");
-
-   _win_bg_item_init(cw->c);
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_comp_effect_tm_state_update(E_Comp *c)
-{
-   E_Comp_Win *_cw;
-   E_CHECK_RETURN(c->switcher, 0);
-   Eina_Bool res = EINA_FALSE;
-
-   // if task switcher is open, just set defer_raise
-   // and do jump effect in _e_mod_comp_window_hide_effect
-   EINA_INLIST_REVERSE_FOREACH(c->wins, _cw)
-     {
-        if (!_cw) continue;
-        if (TYPE_TASKMANAGER_CHECK(_cw))
-          {
-             // just return without visibility update
-             // while task switcher is closing
-             if (_cw->defer_hide) break;
-             if (_cw->c->switcher_animating) break;
-
-             c->switcher_obscured = !(e_mod_comp_util_win_visible_get(_cw));
-             res = EINA_TRUE;
-             break;
-          }
-     }
-
-   L(LT_EFFECT, "[COMP] %18.18s tm:%d obscured:%d\n",
-     "EFF", c->switcher, c->switcher_obscured);
-
-   return res;
-}
-
-EINTERN Eina_Bool
-e_mod_comp_effect_tm_raise_above(E_Comp_Win *cw,
-                                 E_Comp_Win *cw2)
-{
-   Eina_Bool raise;
-   E_CHECK_RETURN(cw, 0);
-   E_CHECK_RETURN(cw->c, 0);
-
-   cw->defer_raise = EINA_TRUE;
-   raise = e_mod_comp_policy_win_restack_check(cw, cw2);
-   E_CHECK_RETURN(raise, 0);
-
-   cw->c->switcher_animating = EINA_TRUE;
-
-   e_mod_comp_animation_transfer_list_clear();
-
-   L(LT_EFFECT, "[COMP] %18.18s w:0x%08x %s sel:%d defer_raise:1\n",
-     "EFF", e_mod_comp_util_client_xid_get(cw), "RAISE_ABOVE_TM",
-     cw->c->selected_pos);
-
-   _win_bg_item_init(cw->c);
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_comp_effect_tm_handler_show_done(E_Comp_Win *cw)
-{
-   E_CHECK_RETURN(cw, 0);
-   E_Comp_Win *_cw;
-
-   cw->c->switcher_animating = EINA_FALSE;
-
-   EINA_INLIST_REVERSE_FOREACH(cw->c->wins, _cw)
-     {
-        if (!_cw) continue;
-        if (!_cw->visible) continue;
-        e_mod_comp_win_comp_objs_move(_cw, _cw->x, _cw->y);
-        e_mod_comp_win_comp_objs_resize(_cw,
-                                        _cw->pw + (_cw->border * 2),
-                                        _cw->ph + (_cw->border * 2));
-        _cw->defer_move_resize = EINA_FALSE;
-     }
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_comp_effect_tm_handler_hide_done(E_Comp_Win *cw)
-{
-   E_CHECK_RETURN(cw, 0);
-   E_Comp_Win *_cw;
-   if (cw->c->selected_pos > 0) cw->c->selected_pos = 0;
-
-   // task switcher is closed
-   cw->c->switcher = EINA_FALSE;
-   cw->c->switcher_obscured = EINA_TRUE;
-   cw->c->switcher_animating = EINA_FALSE;
-
-   EINA_INLIST_FOREACH(cw->c->wins, _cw)
-     {
-        if (!_cw) continue;
-        if (!_cw->visible) continue;
-        if (!_cw->defer_move_resize) continue;
-        e_mod_comp_win_comp_objs_move(_cw, _cw->x, _cw->y);
-        e_mod_comp_win_comp_objs_resize(_cw,
-                                        _cw->pw + (_cw->border * 2),
-                                        _cw->ph + (_cw->border * 2));
-        _cw->defer_move_resize = EINA_FALSE;
-        L(LT_EFFECT, "[COMP] %18.18s w:0x%08x %s\n", "EFF",
-          e_mod_comp_util_client_xid_get(_cw), "HIDE_DONE_BG_ITEM");
-     }
-
-   _defer_raise_clear();
-
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_comp_effect_tm_handler_raise_above_pre(E_Comp_Win *cw,
-                                             E_Comp_Win *cw2)
-{
-   E_CHECK_RETURN(cw, 0);
-   int i = 0;
-   E_Comp_Win *_cw;
-
-   E_CHECK_RETURN(cw, 0);
-   E_CHECK_RETURN(cw->c, 0);
-   E_CHECK_RETURN(cw->c->man, 0);
-   E_CHECK_RETURN(cw->c->switcher, 0);
-
-   e_mod_comp_effect_tm_state_update(cw->c);
-   E_CHECK_RETURN((!cw->c->switcher_obscured), 0);
-
-   EINA_INLIST_REVERSE_FOREACH(cw->c->wins, _cw)
-     {
-        if ((_cw->visible) &&
-            (!TYPE_INDICATOR_CHECK(cw)) &&
-            (!TYPE_TASKMANAGER_CHECK(cw)) &&
-            SIZE_EQUAL_TO_ROOT(_cw))
-          {
-             i++;
-             if (_cw == cw)
-               {
-                  cw->c->selected_pos = i;
-                  break;
-               }
-          }
-     }
-
-   L(LT_EFFECT, "[COMP] %18.18s w:0x%08x sel:%d\n", "EFF",
-     e_mod_comp_util_client_xid_get(cw), cw->c->selected_pos);
-
-   cw->c->wins_invalid = 1;
-   cw->c->wins = eina_inlist_remove(cw->c->wins, EINA_INLIST_GET(cw));
-   cw->c->wins = eina_inlist_append_relative(cw->c->wins,
-                                             EINA_INLIST_GET(cw),
-                                             EINA_INLIST_GET(cw2));
-   return EINA_TRUE;
-}
-
-/* local subsystem functions */
-static void
-_defer_raise_clear(void)
-{
-   E_Comp *c = e_mod_comp_util_get();
-   E_Comp_Win *cw;
-   E_CHECK(c);
-
-   EINA_INLIST_FOREACH(c->wins, cw)
-     {
-        if (!cw) continue;
-        if (cw->defer_raise)
-          {
-             L(LT_EFFECT, "[COMP] %18.18s w:0x%08x %s\n",
-               "EFF", e_mod_comp_util_client_xid_get(cw),
-               "TM_DEFER_RAISE_CLEAR");
-             e_mod_comp_done_defer(cw);
-          }
-     }
-   e_mod_comp_effect_disable_stage(c, NULL);
-}
-
-static Eina_Bool
-_valid_win_check(E_Comp_Win *cw)
-{
-   E_Comp_Object *co = eina_list_data_get(cw->objs);
-   E_CHECK_RETURN(co, 0);
-   if (cw->visible &&
-       evas_object_visible_get(co->shadow) &&
-       evas_object_visible_get(co->img) &&
-       !(TYPE_INDICATOR_CHECK(cw)) &&
-       !(TYPE_QUICKPANEL_CHECK(cw)) &&
-       !(TYPE_TASKMANAGER_CHECK(cw)) &&
-       !(STATE_INSET_CHECK(cw)))
-     {
-        return EINA_TRUE;
-     }
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_win_size_check(E_Comp_Win *cw)
-{
-   if (SIZE_EQUAL_TO_ROOT(cw))
-     return EINA_TRUE;
-
-   if (!TYPE_NORMAL_CHECK(cw))
-     return EINA_FALSE;
-
-   cw->animate_hide = EINA_TRUE;
-   e_mod_comp_win_comp_objs_hide(cw);
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_win_bg_item_init(E_Comp *c)
-{
-   E_Comp_Win *_cw;
-   E_Comp_Transfer *tr;
-   E_Comp_Object *co;
-   int i = 0;
-
-   EINA_INLIST_REVERSE_FOREACH(c->wins, _cw)
-     {
-        if (!_cw) continue;
-        if (!_win_size_check(_cw)) continue;
-        if (!_valid_win_check(_cw)) continue;
-
-        i++;
-
-        L(LT_EFFECT, "[COMP] %18.18s w:0x%08x %s [%d/%d]\n", "EFF",
-          e_mod_comp_util_client_xid_get(_cw), "ADD_TM_BG_ITEM",
-          i, c->selected_pos);
-
-        e_mod_comp_effect_animating_set(c, _cw, EINA_TRUE);
-
-        tr = e_mod_comp_animation_transfer_new();
-        E_CHECK_GOTO(tr, error);
-
-        _cw->transfer = tr;
-        co = eina_list_data_get(_cw->objs);
-        if (!co) continue;
-        tr->obj = co->shadow;
-
-        if ((c->selected_pos == 0) ||
-            (c->selected_pos == 1))
-          {
-             // if window is not selected, skip translation stage
-             // and do rotation stage
-             tr->from = i * (- WINDOW_SPACE) + (c->man->w -100);
-             tr->duration = SWITCHER_DURATION_TOP;
-             tr->begin_time = ecore_loop_time_get();
-             if (i == 1)
-               {
-                  // top window
-                  tr->len = -(tr->from);
-                  tr->animator = ecore_animator_add
-                    (e_mod_comp_animation_on_rotate_top, _cw);
-               }
-             else
-               {
-                  // left of top window
-                  tr->len = 0;
-                  tr->animator = ecore_animator_add
-                    (e_mod_comp_animation_on_rotate_left, _cw);
-               }
-          }
-        else
-          {
-             // if certain window is selected, do translation stage
-             // and rotation stage
-             tr->len = (c->selected_pos - 1) * WINDOW_SPACE;
-             tr->begin_time = ecore_loop_time_get();
-             tr->duration = SWITCHER_DURATION_TRANSLATE;
-             tr->animator = ecore_animator_add(e_mod_comp_animation_on_translate, _cw);
-             if (i == 1)
-               {
-                  // top window
-                  tr->selected = EINA_TRUE;
-                  tr->from = c->selected_pos * (-WINDOW_SPACE) + (c->man->w -100);
-               }
-             else
-               {
-                  // left of top window
-                  // if left of top window is selected,
-                  // other windows's position is adjusted
-                  if (c->selected_pos >= i)
-                    tr->from = (i-1) * (-WINDOW_SPACE) + (c->man->w -100);
-                  else
-                    tr->from = i * (-WINDOW_SPACE) + (c->man->w -100);
-               }
-          }
-     }
-
-   return EINA_TRUE;
-
-error:
-   e_mod_comp_animation_transfer_list_clear();
-   return EINA_FALSE;
-}
diff --git a/comp-tizen/src/e_mod_comp_effect_tm.h b/comp-tizen/src/e_mod_comp_effect_tm.h
deleted file mode 100644 (file)
index da74aef..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifdef E_TYPEDEFS
-#else
-#ifndef E_MOD_COMP_EFFECT_TM_H
-#define E_MOD_COMP_EFFECT_TM_H
-
-/* effect functions for taskmanager */
-EINTERN Eina_Bool e_mod_comp_effect_tm_bg_show(E_Comp_Win *cw);
-EINTERN Eina_Bool e_mod_comp_effect_tm_bg_hide(E_Comp_Win *cw);
-EINTERN Eina_Bool e_mod_comp_effect_tm_state_update(E_Comp *c);
-EINTERN Eina_Bool e_mod_comp_effect_tm_raise_above(E_Comp_Win *cw, E_Comp_Win *cw2);
-EINTERN Eina_Bool e_mod_comp_effect_tm_handler_show_done(E_Comp_Win *cw);
-EINTERN Eina_Bool e_mod_comp_effect_tm_handler_hide_done(E_Comp_Win *cw);
-EINTERN Eina_Bool e_mod_comp_effect_tm_handler_raise_above_pre(E_Comp_Win *cw, E_Comp_Win *cw2);
-
-#endif
-#endif
index 43a081e..28a40b1 100644 (file)
@@ -11,7 +11,6 @@ struct _E_Comp_Effect_Win_Rotation
 {
    Eina_Bool    ready : 1;
    Eina_Bool    run   : 1;
-   Ecore_Timer *timeout;
    struct {
       int       req;
       int       cur;
@@ -21,9 +20,7 @@ struct _E_Comp_Effect_Win_Rotation
 /* local subsystem functions */
 static Eina_Bool _win_rotation_begin(E_Comp_Win *cw, Eina_Bool timeout);
 static void      _win_rotation_done(void *data, Evas_Object *obj, const char *emission, const char *source);
-static Eina_Bool _angle_get(Ecore_X_Window win, int *req, int *curr);
-static Eina_Bool _begin_timeout(void *data);
-static Eina_Bool _end_timeout(void *data);
+static Eina_Bool _angle_get(E_Comp_Win *cw, int *req, int *curr);
 
 /* externally accessible functions */
 EINTERN E_Comp_Effect_Win_Rotation *
@@ -40,8 +37,6 @@ EINTERN void
 e_mod_comp_effect_win_rotation_free(E_Comp_Effect_Win_Rotation *r)
 {
    E_CHECK(r);
-   if (r->timeout) ecore_timer_del(r->timeout);
-   r->timeout = NULL;
    E_FREE(r);
 }
 
@@ -60,9 +55,10 @@ e_mod_comp_effect_win_rotation_handler_prop(Ecore_X_Event_Window_Property *ev)
    int req_angle = -1;
    int cur_angle = -1;
    Eina_Bool res, effect;
-   Ecore_X_Sync_Counter counter;
    Ecore_X_Window win;
    E_Comp_Effect_Win_Rotation *r;
+   E_Comp_Canvas *canvas = NULL;
+   Eina_List *l;
 
    E_CHECK_RETURN(ev, 0);
    E_CHECK_RETURN(ev->win, 0);
@@ -87,7 +83,7 @@ e_mod_comp_effect_win_rotation_handler_prop(Ecore_X_Event_Window_Property *ev)
         return EINA_FALSE;
      }
 
-   res = _angle_get(win, &req_angle, &cur_angle);
+   res = _angle_get(cw, &req_angle, &cur_angle);
    if (!res) return EINA_FALSE;
 
    cw->angle = req_angle;
@@ -117,8 +113,24 @@ e_mod_comp_effect_win_rotation_handler_prop(Ecore_X_Event_Window_Property *ev)
    r->ready = EINA_TRUE;
    r->ang.req = req_angle;
    r->ang.cur = cur_angle;
-   if (r->timeout) ecore_timer_del(r->timeout);
-   r->timeout = ecore_timer_add(4.0f, _begin_timeout, cw);
+
+   if (_comp_mod->conf->nocomp_fs)
+     {
+        EINA_LIST_FOREACH(cw->c->canvases, l, canvas)
+          {
+             if (canvas->nocomp.mode != E_NOCOMP_MODE_RUN) continue;
+             if ((cw->nocomp) && (cw == canvas->nocomp.cw))
+               {
+                  L(LT_EVENT_X,
+                    "COMP|%31s|new_w:0x%08x|nocomp.cw:0x%08x canvas:%d\n",
+                    "ROTATION_HANDLER NOCOMP_END",
+                    cw ? e_mod_comp_util_client_xid_get(cw) : 0,
+                    e_mod_comp_util_client_xid_get(canvas->nocomp.cw),
+                    canvas->num);
+                  e_mod_comp_canvas_nocomp_end(canvas);
+               }
+          }
+     }
 
    L(LT_EVENT_X, "COMP|%31s|%d\n",
      "ready", r->ready);
@@ -141,6 +153,8 @@ e_mod_comp_effect_win_rotation_handler_release(E_Comp_Win *cw)
 {
    E_CHECK_RETURN(cw, 0);
    E_CHECK_RETURN(cw->eff_winrot, 0);
+   if (e_mod_comp_effect_win_roation_run_check(cw->eff_winrot))
+     _win_rotation_done(cw, NULL, NULL, NULL);
    e_mod_comp_effect_win_rotation_free(cw->eff_winrot);
    cw->eff_winrot = NULL;
    return EINA_TRUE;
@@ -165,13 +179,7 @@ _win_rotation_begin(E_Comp_Win *cw,
      "COMP|%31s|timeout:%d\n",
      "win_rot_begin", timeout);
 
-   if (r->timeout)
-     {
-        ecore_timer_del(r->timeout);
-        r->timeout = NULL;
-     }
-
-   switch (r->ang.req - r->ang.cur)
+   switch (r->ang.cur - r->ang.req)
      {
       case -270: e_mod_comp_effect_signal_add(cw, NULL, "e,state,window,rotation,90",   "e"); break;
       case -180: e_mod_comp_effect_signal_add(cw, NULL, "e,state,window,rotation,180",  "e"); break;
@@ -219,7 +227,6 @@ _win_rotation_begin(E_Comp_Win *cw,
           }
      }
 
-   r->timeout = ecore_timer_add(4.0f, _end_timeout, cw);
    return EINA_TRUE;
 }
 
@@ -238,11 +245,6 @@ _win_rotation_done(void        *data,
    E_CHECK(cw->eff_winrot);
 
    r = cw->eff_winrot;
-   if (r->timeout)
-     {
-        ecore_timer_del(r->timeout);
-        r->timeout = NULL;
-     }
 
    if (!cw->show_done) cw->show_done = EINA_TRUE;
 
@@ -269,77 +271,26 @@ _win_rotation_done(void        *data,
 }
 
 static Eina_Bool
-_angle_get(Ecore_X_Window  win,
+_angle_get(E_Comp_Win     *cw,
            int            *req,
            int            *curr)
 {
-   Eina_Bool res = EINA_FALSE;
-   int ret, count;
-   int angle[2] = {-1, -1};
-   unsigned char* data = NULL;
-
-   E_CHECK_RETURN(win, 0);
+   E_CHECK_RETURN(cw, 0);
+   E_CHECK_RETURN(cw->bd, 0);
    E_CHECK_RETURN(req, 0);
    E_CHECK_RETURN(curr, 0);
 
-   ret = ecore_x_window_prop_property_get
-           (win, ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
-           ECORE_X_ATOM_CARDINAL, 32, &data, &count);
-   if (ret <= 0)
-     {
-        if (data) E_FREE(data);
-        return res;
-     }
-
-   if (ret && data)
-     {
-        memcpy(&angle, data, sizeof (int)*count);
-        if (count == 2) res = EINA_TRUE;
-     }
-
-   if (data) E_FREE(data);
-
-   *req  = angle[_WND_REQUEST_ANGLE_IDX];
-   *curr = angle[_WND_CURR_ANGLE_IDX];
-
-   if (angle[0] == -1 &&
-       angle[1] == -1)
-     {
-        res = EINA_FALSE;
-     }
+   *req  = cw->bd->client.e.state.rot.prev;
+   *curr = cw->bd->client.e.state.rot.curr;
 
    L(LT_EVENT_X,
-     "COMP|%31s|%d=>%d count:%d res:%s\n",
+     "COMP|%31s|w:0x%08x|%d=>%d\n",
      "rot_prop_get",
-     angle[_WND_CURR_ANGLE_IDX],
-     angle[_WND_REQUEST_ANGLE_IDX],
-     count, res ? "Ture" : "False");
-
-   return res;
-}
-
-static Eina_Bool
-_begin_timeout(void *data)
-{
-   E_Comp_Win *cw = (E_Comp_Win*)data;
-   E_CHECK_RETURN(cw, 0);
-   fprintf(stderr, "[E17-comp] %s(%d) w:0x%08x\n",
-           __func__, __LINE__,
-           e_mod_comp_util_client_xid_get(cw));
-   _win_rotation_begin(cw, EINA_TRUE);
-   return ECORE_CALLBACK_CANCEL;
-}
+     e_mod_comp_util_client_xid_get(cw),
+     *req,
+     *curr);
 
-static Eina_Bool
-_end_timeout(void *data)
-{
-   E_Comp_Win *cw = (E_Comp_Win*)data;
-   E_CHECK_RETURN(cw, 0);
-   fprintf(stderr,"[E17-comp] %s(%d) w:0x%08x\n",
-           __func__, __LINE__,
-           e_mod_comp_util_client_xid_get(cw));
-   _win_rotation_done((void*)cw, NULL, NULL, NULL);
-   return ECORE_CALLBACK_CANCEL;
+   return EINA_TRUE;
 }
 
 EINTERN Eina_Bool
@@ -360,11 +311,11 @@ e_mod_comp_effect_win_angle_get(E_Comp_Win *cw)
    if (st == E_COMP_EFFECT_STYLE_NONE)
      return EINA_FALSE;
 
-   res = _angle_get(win, &req_angle, &cur_angle);
+   res = _angle_get(cw, &req_angle, &cur_angle);
    if (!res)
      return EINA_FALSE;
 
-   cw->angle = req_angle;
+   cw->angle = cur_angle;
    cw->angle %= 360;
 
    return EINA_TRUE;
index 1cb0413..47622c6 100644 (file)
@@ -16,6 +16,15 @@ e_mod_comp_obj_add(E_Comp_Win    *cw,
      {
         co->shadow = edje_object_add(canvas->evas);
         co->img = evas_object_image_filled_add(canvas->evas);
+
+        if ((!co->shadow) || (!co->img))
+          {
+             ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+                  "%15.15s|ERROR shadow:%p img:%p evas:%p argb:%d canvas_num:%d",
+                  "OBJECT_CREATE", co->shadow, co->img,
+                  canvas->evas, cw->argb, canvas->num);
+          }
+
         evas_object_image_colorspace_set(co->img, EVAS_COLORSPACE_ARGB8888);
         if (cw->argb) evas_object_image_alpha_set(co->img, 1);
         else evas_object_image_alpha_set(co->img, 0);
@@ -23,6 +32,15 @@ e_mod_comp_obj_add(E_Comp_Win    *cw,
    else
      {
         co->shadow = evas_object_rectangle_add(canvas->evas);
+
+        if (!co->shadow)
+          {
+             ELBF(ELBT_COMP, 0, e_mod_comp_util_client_xid_get(cw),
+                  "%15.15s|ERROR shadow:%p evas:%p canvas_num:%d",
+                  "OBJECT_CREATE", co->shadow, canvas->evas,
+                  canvas->num);
+          }
+
         evas_object_color_set(co->shadow, 0, 0, 0, 0);
      }
 
@@ -535,4 +553,4 @@ e_mod_comp_win_comp_objs_stack_above(E_Comp_Win *cw,
                }
           }
      }
-}
+}
\ No newline at end of file
index 03d1c9b..a9d8615 100644 (file)
@@ -15,34 +15,36 @@ e_mod_comp_policy_init(void)
 {
    if (!shadow_hash) shadow_hash = eina_hash_string_superfast_new(NULL);
 
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_UNKNOWN),        "shadow"      );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DESKTOP),        "no-effect"   );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DOCK),           "shadow_fade");
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLBAR),        "no-effect"   );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENU),           "no-effect"   );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_UTILITY),        "no-effect"   );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_SPLASH),         "no-effect"   );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DIALOG),         "dialog"      );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NORMAL),         "shadow_fade");
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DROPDOWN_MENU),  "no-effect"   );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_POPUP_MENU),     "shadow"      );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLTIP),        "shadow"      );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NOTIFICATION),   "dialog"      );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_COMBO),          "no-effect"   );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DND),            "no-effect"   );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENUSCREEN),     "home_screen");
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL_BASE),"quickpanel"  );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL),     "quickpanel"  );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TASKMANAGER),    "taskmgr"     );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LIVEMAGAZINE),   "home_screen");
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LOCKSCREEN),     "lockscreen"  );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_INDICATOR),      "indicator"   );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TICKERNOTI),     "dialog"      );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DEBUGGING_INFO), "no-effect"   );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_APPTRAY),        "app_tray"    );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_BACKGROUND),     "no-effect"   );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_KEYBOARD),   "keyboard"    );
-   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_SUB),        "shadow"      );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_UNKNOWN),        "shadow"            );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DESKTOP),        "no-effect"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DOCK),           "shadow_fade"       );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLBAR),        "no-effect"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENU),           "no-effect"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_UTILITY),        "no-effect"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_SPLASH),         "no-effect"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DIALOG),         "dialog"            );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NORMAL),         "shadow_fade"       );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DROPDOWN_MENU),  "no-effect"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_POPUP_MENU),     "shadow"            );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLTIP),        "shadow"            );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NOTIFICATION),   "dialog"            );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_COMBO),          "no-effect"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DND),            "no-effect"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENUSCREEN),     "home_screen"       );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL_BASE),"quickpanel"        );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL),     "quickpanel"        );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TASKMANAGER),    "taskmgr"           );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LIVEMAGAZINE),   "home_screen"       );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LOCKSCREEN),     "lockscreen"        );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_INDICATOR),      "indicator"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TICKERNOTI),     "dialog_without_dim");
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DEBUGGING_INFO), "no-effect"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_APPTRAY),        "app_tray"          );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MINI_APPTRAY),   "app_tray"          );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_VOLUME),         "dialog_without_dim");
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_BACKGROUND),     "no-effect"         );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_KEYBOARD),   "keyboard"          );
+   eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_SUB),        "no-effect"         );
 
    return 1;
 }
@@ -185,12 +187,6 @@ e_mod_comp_policy_win_rotation_effect_check(E_Comp_Win *cw)
    E_CHECK_RETURN(cw->bd, 0);
    E_CHECK_RETURN(cw->objs, 0);
 
-   if ((_comp_mod->conf->nocomp_fs) &&
-       (cw->c->nocomp))
-     {
-        return EINA_FALSE;
-     }
-
    animatable = e_mod_comp_effect_state_get(cw->eff_type);
    E_CHECK_RETURN(animatable, 0);
 
index 976ebfe..8eb77d5 100644 (file)
@@ -13,9 +13,7 @@ typedef struct _E_Comp_Win E_Comp_Win;
 #include "e_mod_comp_canvas.h"
 #include "e_mod_comp_object.h"
 #include "e_mod_comp_policy.h"
-#include "e_mod_comp_animation.h"
 #include "e_mod_comp_effect_win_rotation.h"
-#include "e_mod_comp_effect_tm.h"
 #include "e_mod_comp_effect.h"
 #include "e_mod_comp_win_type.h"
 #include "e_mod_comp_screen.h"
@@ -50,10 +48,6 @@ struct _E_Comp
 
    // added for tizen
    Eina_Bool                     animatable : 1; // if this value is true then window can show animaton. otherwise, window can not show animation effect.
-   Eina_Bool                     switcher : 1; // task switcher is open
-   Eina_Bool                     switcher_obscured : 1; //task switcher is obscured
-   Eina_Bool                     switcher_animating : 1; // task switcher effect is running
-   int                           selected_pos; // selected window's position when task switcher is open
    Eina_Bool                     effect_stage : 1;
    E_Comp_Screen_Lock            lock;
    E_Comp_Screen_Rotation        rotation;
@@ -62,12 +56,17 @@ struct _E_Comp
    Eina_Bool                     keyboard_effect : 1; // True: Compositor Show Keyborad Window Effect / False: Compositor do not show keyboard window effect
    Eina_Bool                     defer_raise_effect : 1; // True : Compositor defer evas object restack on window effect
    Eina_Bool                     fake_image_launch : 1; // True : Enable Fake Image Launch feature
+   E_Comp_Win                   *lower_win; // For saving window on backkey(lower) event
+
+   // home key effect
+   Evas_Object                  *mirror_obj; // image(mirror) object
+   Evas_Object                  *mirror_handler; // shadow(edj) object
 
    // fake image launch
    E_Comp_Effect_Image_Launch   *eff_img;
    Evas                         *evas;
 
-   E_Comp_Win_Shape_Input       *shape_input; // Comp's Global Shape input region
+   Eina_List                    *shape_inputs;
 };
 
 struct _E_Comp_Win
@@ -144,15 +143,14 @@ struct _E_Comp_Win
    Eina_Bool                   show_done : 1 ; // check for show is done
    Eina_Bool                   effect_stage: 1; // check for if background window is hided or not.
    Eina_Bool                   defer_raise; // flag to defer to raise
-   Eina_Bool                   defer_move_resize; // flag to defer to move_resize for shobj
    E_Comp_Effect_Type         *eff_type;
    E_Comp_Effect_Win_Rotation *eff_winrot; // image launch effect
    E_Comp_Win_Type             win_type;
-   E_Comp_Transfer            *transfer;
    E_Comp_Win_Shape_Input     *shape_input;
    E_Comp_BG_Win              *bgwin;
    Eina_Bool                   move_lock : 1; // lock / unlock evas_object's move. evas_object represents window.
    int                         angle; // window's current angle property
+   Eina_Bool                   launched : 1; //flag for checking whether launch or not
 
    // ov object
    Ecore_X_Image              *ov_xim;
index b5a9d5d..8290aef 100644 (file)
@@ -123,6 +123,7 @@ e_mod_comp_util_win_below_get(E_Comp_Win *cw,
             (!_cw->invalid) &&
             (!_cw->input_only) &&
             (!TYPE_APPTRAY_CHECK(_cw)) &&
+            (!TYPE_MINI_APPTRAY_CHECK(_cw)) &&
             REGION_EQUAL_TO_ROOT(_cw))
           {
              if (normal_check)
index df38ad5..aa33aba 100644 (file)
@@ -9,15 +9,134 @@ struct _E_Comp_Win_Shape_Input
    int x, y, w, h;
 };
 
+struct _E_Comp_Shape_Input
+{
+   int id;
+   int x, y, w, h;
+};
+
 /* local subsystem functions */
+static int
+_e_mod_comp_shape_input_new_id_get(E_Comp *c)
+{
+   int new_id = 1;
+   E_Comp_Shape_Input *shape_input = NULL;
+   Eina_List *l = NULL;
+   Eina_Bool create_id = EINA_FALSE;
+
+   E_CHECK_RETURN(c, 0);
+
+   while (new_id < INT_MAX)
+     {
+        create_id = EINA_TRUE;
+
+        EINA_LIST_FOREACH(c->shape_inputs, l, shape_input)
+          {
+             if (shape_input->id == new_id)
+               {
+                  new_id++;
+                  create_id = EINA_FALSE;
+                  break;
+               }
+           }
+
+        if (create_id) break;
+     }
+
+   if (create_id) return new_id;
+   else return 0;
+}
 
 /* externally accessible functions */
+EINTERN int
+e_mod_comp_shape_input_new(E_Comp *c)
+{
+   int id = 0;
+   E_Comp_Shape_Input *shape_input;
+   E_CHECK_RETURN(c, 0);
+
+   id = _e_mod_comp_shape_input_new_id_get(c);
+   if (id)
+     {
+        shape_input = E_NEW(E_Comp_Shape_Input, 1);
+        E_CHECK_RETURN(shape_input, 0);
+
+        shape_input->id = id;
+        c->shape_inputs = eina_list_append(c->shape_inputs, shape_input);
+     }
+   return id;
+}
+
+EINTERN Eina_Bool
+e_mod_comp_shape_input_set(E_Comp *c,
+                           int     id,
+                           int     x,
+                           int     y,
+                           int     w,
+                           int     h)
+{
+   Eina_Bool found = EINA_FALSE;
+   E_Comp_Shape_Input *shape_input = NULL;
+   Eina_List *l = NULL;
+
+   E_CHECK_RETURN(c, EINA_FALSE);
+   if ( id <= 0 ) return EINA_FALSE;
+
+   EINA_LIST_FOREACH(c->shape_inputs, l, shape_input)
+     {
+        if (shape_input->id == id)
+          {
+             shape_input->x = x;
+             shape_input->y = y;
+             shape_input->w = w;
+             shape_input->h = h;
+             found = EINA_TRUE;
+             break;
+          }
+     }
+
+   return found;
+}
+
+EINTERN Eina_Bool
+e_mod_comp_shape_input_del(E_Comp *c,
+                           int     id)
+{
+   E_Comp_Shape_Input *shape_input = NULL;
+   E_Comp_Shape_Input *find_shape_input = NULL;
+   Eina_List *l = NULL;
+   Eina_Bool found = EINA_FALSE;
+
+   E_CHECK_RETURN(c, EINA_FALSE);
+   if ( id <= 0 ) return EINA_FALSE;
+
+   EINA_LIST_FOREACH(c->shape_inputs, l, shape_input)
+     {
+        if (shape_input->id == id)
+          {
+             find_shape_input = shape_input;
+             found = EINA_TRUE;
+             break;
+          }
+     }
+
+   if (find_shape_input)
+     {
+        c->shape_inputs = eina_list_remove(c->shape_inputs, find_shape_input);
+        memset(find_shape_input, 0, sizeof(E_Comp_Shape_Input));
+        E_FREE(find_shape_input);
+     }
+
+   return found;
+}
+
 EINTERN Eina_Bool
 e_mod_comp_win_shape_input_update(E_Comp *c)
 {
    E_Comp_Win *_cw = NULL;
    Eina_List *l = NULL;
    E_Comp_Canvas *canvas = NULL;
+   E_Comp_Shape_Input *shape_input = NULL;
 
    pixman_region32_t vis_part;
    pixman_region32_t win_part;
@@ -124,19 +243,21 @@ e_mod_comp_win_shape_input_update(E_Comp *c)
         pixman_region32_copy(&vis_part, &res_part);
      }
 
-     if ((c->shape_input) // comp's global shape input region apply
-          && (E_INTERSECTS(0, 0, c->man->w, c->man->h,
-                           c->shape_input->x, c->shape_input->y,
-                           c->shape_input->w, c->shape_input->h)))
+     EINA_LIST_FOREACH(c->shape_inputs, l, shape_input)
        {
-          pixman_region32_init_rect(&comp_input_part,
-                                    c->shape_input->x,
-                                    c->shape_input->y,
-                                    c->shape_input->w,
-                                    c->shape_input->h);
-
-          pixman_region32_copy(&res_input_part, &sum_input_part);
-          pixman_region32_union(&sum_input_part, &res_input_part, &comp_input_part);
+          if (E_INTERSECTS(0, 0, c->man->w, c->man->h,
+                           shape_input->x, shape_input->y,
+                           shape_input->w, shape_input->h))
+            {
+               pixman_region32_init_rect(&comp_input_part,
+                                         shape_input->x,
+                                         shape_input->y,
+                                         shape_input->w,
+                                         shape_input->h);
+
+               pixman_region32_copy(&res_input_part, &sum_input_part);
+               pixman_region32_union(&sum_input_part, &res_input_part, &comp_input_part);
+            }
        }
 
    input_rects = pixman_region32_rectangles(&sum_input_part, &num_input_rects);
@@ -209,14 +330,6 @@ e_mod_comp_win_shape_input_update(E_Comp *c)
 }
 
 EINTERN E_Comp_Win_Shape_Input *
-e_mod_comp_shape_input_new(void)
-{
-   E_Comp_Win_Shape_Input *input;
-   input = E_NEW(E_Comp_Win_Shape_Input, 1);
-   return input;
-}
-
-EINTERN E_Comp_Win_Shape_Input *
 e_mod_comp_win_shape_input_new(E_Comp_Win *cw)
 {
    Eina_List *l;
@@ -235,7 +348,8 @@ e_mod_comp_win_shape_input_new(E_Comp_Win *cw)
         evas_object_pass_events_set(co->img, EINA_FALSE);
         evas_object_pass_events_set(co->shadow, EINA_FALSE);
      }
-   return e_mod_comp_shape_input_new();
+
+   return E_NEW(E_Comp_Win_Shape_Input, 1);
 }
 
 EINTERN void
index ea68328..74f6bff 100644 (file)
@@ -4,14 +4,16 @@
 #define E_MOD_COMP_WIN_SHAPE_INPUT_H
 
 typedef struct _E_Comp_Win_Shape_Input E_Comp_Win_Shape_Input;
+typedef struct _E_Comp_Shape_Input E_Comp_Shape_Input;
 
 /* shape input region functions */
-EINTERN E_Comp_Win_Shape_Input *e_mod_comp_shape_input_new(void);
 EINTERN E_Comp_Win_Shape_Input *e_mod_comp_win_shape_input_new(E_Comp_Win *cw);
 EINTERN void                    e_mod_comp_win_shape_input_free(E_Comp_Win_Shape_Input *input);
 EINTERN Eina_Bool               e_mod_comp_win_shape_input_rect_set(E_Comp_Win_Shape_Input *input, int x, int y, int w, int h);
 EINTERN Eina_Bool               e_mod_comp_win_shape_input_invalid_set(E_Comp *c, Eina_Bool set);
 EINTERN Eina_Bool               e_mod_comp_win_shape_input_update(E_Comp *c);
-
+EINTERN int                     e_mod_comp_shape_input_new(E_Comp *c);
+EINTERN Eina_Bool               e_mod_comp_shape_input_set(E_Comp *c, int id, int x, int y, int w, int h);
+EINTERN Eina_Bool               e_mod_comp_shape_input_del(E_Comp *c, int id);
 #endif
 #endif
index c0b78aa..63b8715 100644 (file)
@@ -16,6 +16,8 @@ typedef enum _E_Comp_Win_Class_Type
    E_COMP_WIN_CLASS_TYPE_TICKERNOTI,
    E_COMP_WIN_CLASS_TYPE_DEBUGGING_INFO,
    E_COMP_WIN_CLASS_TYPE_APPTRAY,
+   E_COMP_WIN_CLASS_TYPE_MINI_APPTRAY,
+   E_COMP_WIN_CLASS_TYPE_VOLUME,
    E_COMP_WIN_CLASS_TYPE_BACKGROUND,
    E_COMP_WIN_CLASS_TYPE_ISF,
 } E_Comp_Win_Class_Type;
@@ -33,6 +35,8 @@ typedef enum _E_Comp_Win_Name_Type
    E_COMP_WIN_NAME_TYPE_INDICATOR,
    E_COMP_WIN_NAME_TYPE_TICKERNOTI,
    E_COMP_WIN_NAME_TYPE_APPTRAY,
+   E_COMP_WIN_NAME_TYPE_MINI_APPTRAY,
+   E_COMP_WIN_NAME_TYPE_VOLUME,
    E_COMP_WIN_NAME_TYPE_BACKGROUND,
    E_COMP_WIN_NAME_TYPE_ISF_KEYBOARD,
    E_COMP_WIN_NAME_TYPE_ISF_SUB,
@@ -51,10 +55,13 @@ static const char *win_class[] =
    "TASK_MANAGER",
    "LIVE_MAGAZINE",
    "LOCK_SCREEN",
+   "lockscreen",
    "INDICATOR",
-   "tickernoti-syspopup",
+   "quickpanel",
    "DEBUGGING_INFO",
    "APP_TRAY",
+   "MINIAPP_TRAY",
+   "volume",
    "BACKGROUND",
    "ISF",
 };
@@ -68,9 +75,12 @@ static const char *win_name[] =
    "TASK_MANAGER",
    "Live Magazine",
    "LOCK_SCREEN",
+   "lockscreen",
    "INDICATOR",
-   "noti-window",
+   "noti_win",
    "APP_TRAY",
+   "MINIAPP_TRAY",
+   "volume",
    "BACKGROUND",
    // E_COMP_WIN_NAME_TYPE_ISF_KEYBOARD
    "Virtual Keyboard",
@@ -90,10 +100,13 @@ static E_Comp_Win_Class_Type win_class_vals[] =
    E_COMP_WIN_CLASS_TYPE_TASKMANAGER,
    E_COMP_WIN_CLASS_TYPE_LIVEMAGAZINE,
    E_COMP_WIN_CLASS_TYPE_LOCKSCREEN,
+   E_COMP_WIN_CLASS_TYPE_LOCKSCREEN,
    E_COMP_WIN_CLASS_TYPE_INDICATOR,
    E_COMP_WIN_CLASS_TYPE_TICKERNOTI,
    E_COMP_WIN_CLASS_TYPE_DEBUGGING_INFO,
    E_COMP_WIN_CLASS_TYPE_APPTRAY,
+   E_COMP_WIN_CLASS_TYPE_MINI_APPTRAY,
+   E_COMP_WIN_CLASS_TYPE_VOLUME,
    E_COMP_WIN_CLASS_TYPE_BACKGROUND,
    E_COMP_WIN_CLASS_TYPE_ISF
 };
@@ -107,9 +120,12 @@ static E_Comp_Win_Class_Type win_name_vals[] =
    E_COMP_WIN_NAME_TYPE_TASKMANAGER,
    E_COMP_WIN_NAME_TYPE_LIVEMAGAZINE,
    E_COMP_WIN_NAME_TYPE_LOCKSCREEN,
+   E_COMP_WIN_NAME_TYPE_LOCKSCREEN,
    E_COMP_WIN_NAME_TYPE_INDICATOR,
    E_COMP_WIN_NAME_TYPE_TICKERNOTI,
    E_COMP_WIN_NAME_TYPE_APPTRAY,
+   E_COMP_WIN_NAME_TYPE_MINI_APPTRAY,
+   E_COMP_WIN_NAME_TYPE_VOLUME,
    E_COMP_WIN_NAME_TYPE_BACKGROUND,
    E_COMP_WIN_NAME_TYPE_ISF_KEYBOARD,
    E_COMP_WIN_NAME_TYPE_ISF_SUB
@@ -225,8 +241,7 @@ e_mod_comp_win_type_setup(E_Comp_Win *cw)
            res = E_COMP_WIN_TYPE_LIVEMAGAZINE;
          break;
       case E_COMP_WIN_CLASS_TYPE_LOCKSCREEN:
-         if ((ntype == E_COMP_WIN_NAME_TYPE_LOCKSCREEN) &&
-             (wtype == ECORE_X_WINDOW_TYPE_NOTIFICATION))
+         if (ntype == E_COMP_WIN_NAME_TYPE_LOCKSCREEN)
            res = E_COMP_WIN_TYPE_LOCKSCREEN;
          break;
       case E_COMP_WIN_CLASS_TYPE_INDICATOR:
@@ -243,7 +258,7 @@ e_mod_comp_win_type_setup(E_Comp_Win *cw)
            res = E_COMP_WIN_TYPE_DEBUGGING_INFO;
          break;
       case E_COMP_WIN_CLASS_TYPE_ISF:
-         if (wtype != ECORE_X_WINDOW_TYPE_NORMAL)
+         if (wtype != ECORE_X_WINDOW_TYPE_UTILITY)
            break;
          else if (ntype == E_COMP_WIN_NAME_TYPE_ISF_KEYBOARD)
            res = E_COMP_WIN_TYPE_ISF_KEYBOARD;
@@ -258,6 +273,16 @@ e_mod_comp_win_type_setup(E_Comp_Win *cw)
       case E_COMP_WIN_CLASS_TYPE_APPTRAY:
          if (ntype == E_COMP_WIN_NAME_TYPE_APPTRAY)
            res = E_COMP_WIN_TYPE_APPTRAY;
+         break;
+      case E_COMP_WIN_CLASS_TYPE_MINI_APPTRAY:
+         if (ntype == E_COMP_WIN_NAME_TYPE_MINI_APPTRAY)
+           res = E_COMP_WIN_TYPE_MINI_APPTRAY;
+         break;
+      case E_COMP_WIN_CLASS_TYPE_VOLUME:
+         if ((ntype == E_COMP_WIN_NAME_TYPE_VOLUME) &&
+             (wtype == ECORE_X_WINDOW_TYPE_NOTIFICATION))
+           res = E_COMP_WIN_TYPE_VOLUME;
+         break;
       case E_COMP_WIN_CLASS_TYPE_BACKGROUND:
          if (ntype == E_COMP_WIN_NAME_TYPE_BACKGROUND)
            res = E_COMP_WIN_TYPE_BACKGROUND;
index 39619b1..3a2751a 100644 (file)
@@ -35,6 +35,9 @@
 #define TYPE_APPTRAY_CHECK(a) \
    ((a)->win_type == E_COMP_WIN_TYPE_APPTRAY)
 
+#define TYPE_MINI_APPTRAY_CHECK(a) \
+   ((a)->win_type == E_COMP_WIN_TYPE_MINI_APPTRAY)
+
 typedef enum _E_Comp_Win_Type
 {
    E_COMP_WIN_TYPE_UNKNOWN = 0,
@@ -63,6 +66,8 @@ typedef enum _E_Comp_Win_Type
    E_COMP_WIN_TYPE_TICKERNOTI,
    E_COMP_WIN_TYPE_DEBUGGING_INFO,
    E_COMP_WIN_TYPE_APPTRAY,
+   E_COMP_WIN_TYPE_MINI_APPTRAY,
+   E_COMP_WIN_TYPE_VOLUME,
    E_COMP_WIN_TYPE_BACKGROUND,
    E_COMP_WIN_TYPE_ISF_KEYBOARD,
    E_COMP_WIN_TYPE_ISF_SUB,
index e1b24dd..2d1132e 100755 (executable)
@@ -17,6 +17,7 @@ typedef enum
 } DEVICEMGR_CFG;
 
 typedef struct _E_Devicemgr_Config E_Devicemgr_Config;
+typedef struct _E_Devicemgr_Config_Rotation E_Devicemgr_Config_Rotation;
 
 /* external variable to store active config */
 extern E_Devicemgr_Config *_e_devicemgr_cfg;
@@ -37,6 +38,13 @@ struct _E_Devicemgr_Config
         Eina_Bool isPopUpEnabled;
         /**< popup enable/disable status */
      } ScrnConf;
+   Eina_List *rotation;
+};
+
+struct _E_Devicemgr_Config_Rotation
+{
+   Eina_Bool   enable;
+   int         angle;
 };
 
 #endif//_E_DEVICEMGR_PRIVATE_H_
index de5c8e3..b2f0b7a 100755 (executable)
@@ -5,6 +5,7 @@
 \r
 /* local variables */\r
 static E_Config_DD *_devicemgr_conf_edd = NULL;\r
+static E_Config_DD *_devicemgr_conf_rotation_edd = NULL;\r
 \r
 static void _e_mod_devicemgr_config_free(void);\r
 static void _e_mod_devicemgr_config_new(void);\r
@@ -18,6 +19,15 @@ e_mod_devicemgr_config_init(void)
    /* create config structure for module */\r
    _devicemgr_conf_edd = E_CONFIG_DD_NEW("Devicemgr_Config", E_Devicemgr_Config);\r
 \r
+   _devicemgr_conf_rotation_edd = E_CONFIG_DD_NEW("E_Devicemgr_Config_Rotation",\r
+                                                  E_Devicemgr_Config_Rotation);\r
+#undef T\r
+#undef D\r
+#define T E_Devicemgr_Config_Rotation\r
+#define D _devicemgr_conf_rotation_edd\r
+   E_CONFIG_VAL(D, T, enable, UCHAR);\r
+   E_CONFIG_VAL(D, T, angle, INT);\r
+\r
 #undef T\r
 #undef D\r
 #define T E_Devicemgr_Config\r
@@ -25,6 +35,7 @@ e_mod_devicemgr_config_init(void)
    E_CONFIG_VAL(D, T, ScrnConf.enable, UCHAR);\r
    E_CONFIG_VAL(D, T, ScrnConf.default_dispmode, INT);\r
    E_CONFIG_VAL(D, T, ScrnConf.isPopUpEnabled, UCHAR);\r
+   E_CONFIG_LIST(D, T, rotation, _devicemgr_conf_rotation_edd);\r
 \r
    /* attempt to load existing configuration */\r
    _e_devicemgr_cfg = e_config_domain_load(E_DEVICEMGR_CFG, _devicemgr_conf_edd);\r
@@ -70,6 +81,7 @@ _e_mod_devicemgr_config_free(void)
    if (!_e_devicemgr_cfg) return;\r
 \r
    /* free config structure */\r
+   E_CONFIG_DD_FREE(_devicemgr_conf_rotation_edd);\r
    E_FREE(_e_devicemgr_cfg);\r
 }\r
 \r
index 33c603e..cd96498 100755 (executable)
@@ -53,6 +53,8 @@ static struct
 {
    {SC_EXT_RES_1920X1080, 0.0, NULL},
    {SC_EXT_RES_1280X720, 0.0, NULL},
+   {SC_EXT_RES_720X480, 0.0, NULL},
+   {SC_EXT_RES_720X576, 0.0, NULL},
 };
 
 static char *str_output[3] = {
@@ -73,10 +75,12 @@ static char *str_stat[3] = {
     "ACTIVE",
 };
 
-static char *str_resolution[3] = {
+static char *str_resolution[5] = {
     "null",
     "1920x1080",
     "1280x720",
+    "720x480",
+    "720x576",
 };
 
 /* Calculates the vertical refresh rate of a mode. */
@@ -173,6 +177,12 @@ _get_str_resolution(int resolution)
     case SC_EXT_RES_1280X720:
         str = str_resolution[2];
         break;
+    case SC_EXT_RES_720X480:
+        str = str_resolution[3];
+        break;
+    case SC_EXT_RES_720X576:
+        str = str_resolution[4];
+        break;
     default:
         str = str_resolution[0];
         break;
@@ -190,6 +200,10 @@ _get_resolution_str (char *res_name)
         resolution = SC_EXT_RES_1920X1080;
     else if (!strcmp (res_name, str_resolution[2]))
         resolution = SC_EXT_RES_1280X720;
+    else if (!strcmp (res_name, str_resolution[3]))
+        resolution = SC_EXT_RES_720X480;
+    else if (!strcmp (res_name, str_resolution[4]))
+        resolution = SC_EXT_RES_720X576;
     else
         resolution = SC_EXT_RES_NULL;
 
old mode 100644 (file)
new mode 100755 (executable)
index 25a3236..bd83900
@@ -21,6 +21,8 @@ typedef enum
     SC_EXT_RES_NULL,            /* null */
     SC_EXT_RES_1920X1080,       /* 1920 x 1080 */
     SC_EXT_RES_1280X720,        /* 1280 x 720 */
+    SC_EXT_RES_720X480,         /* 720 x 480 */
+    SC_EXT_RES_720X576,         /* 720 x 576 */
 } SC_EXT_RES;
 
 /* send status */
index 61e7c96..fb82f91 100755 (executable)
@@ -27,6 +27,7 @@
 #include <sensor.h>
 #include <vconf.h>
 #include <X11/Xlib.h>
+#include "e_devicemgr_privates.h"
 #include "sf_rotation_devicemgr.h"
 
 typedef struct _E_DM_Sensor_Rotation E_DM_Sensor_Rotation;
@@ -39,6 +40,7 @@ struct _E_DM_Sensor_Rotation
    Ecore_Timer                    *retry_timer;
    int                             retry_count;
    Eina_Bool                       lock;
+   Eina_Bool                       connected;
 };
 
 /* static global variables */
@@ -46,8 +48,8 @@ static E_DM_Sensor_Rotation rot;
 static Ecore_X_Atom ATOM_DEVICE_ROTATION_ANGLE = 0;
 
 /* local subsystem functions */
-static void      _sensor_connect(void);
-static void      _sensor_disconnect(void);
+static Eina_Bool _sensor_connect(void);
+static Eina_Bool _sensor_disconnect(void);
 static Eina_Bool _sensor_connect_retry_timeout(void *data);
 static void      _sensor_rotation_changed_cb(unsigned int event_type, sensor_event_data_t *event, void *data);
 static void      _vconf_cb_lock_change(keynode_t *node, void *data);
@@ -58,8 +60,32 @@ static int       _ang_get(enum accelerometer_rotate_state state);
 Eina_Bool 
 e_mod_sf_rotation_init(void)
 {
+   int r = 0, lock = 0;
+   Eina_Bool res = EINA_FALSE;
+
+   rot.connected = EINA_FALSE;
    rot.retry_count = 0;
-   _sensor_connect();
+   res = _sensor_connect();
+   if (res)
+     {
+        r = vconf_get_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &lock);
+        if (r)
+          {
+             ELBF(ELBT_ROT, 0, 0,
+                  "ERR! AUTO_ROTATE_SCREEN_BOOL get failed. "
+                  "r:%d lock:%d", r, lock);
+          }
+        else
+          {
+             rot.lock = !lock;
+             vconf_notify_key_changed(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL,
+                                      _vconf_cb_lock_change,
+                                      NULL);
+             ELBF(ELBT_ROT, 0, 0,
+                  "AUTO_ROTATE_SCREEN_BOOL get succeeded. "
+                  "lock:%d rot.locK%d", lock, rot.lock);
+          }
+     }
    _sensor_rotation_set(0);
    return EINA_TRUE;
 }
@@ -67,15 +93,17 @@ e_mod_sf_rotation_init(void)
 Eina_Bool 
 e_mod_sf_rotation_deinit(void)
 {
+   vconf_ignore_key_changed(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, _vconf_cb_lock_change);
    _sensor_disconnect();
    return EINA_TRUE;
 }
 
 /* local subsystem functions */
-static void
+static Eina_Bool
 _sensor_connect(void)
 {
    int h, r, lock = 0;
+   if (rot.connected) return EINA_TRUE;
 
    if (rot.retry_timer)
      {
@@ -115,27 +143,10 @@ _sensor_connect(void)
    rot.started = EINA_TRUE;
    rot.retry_count = 0;
    rot.lock = EINA_FALSE;
+   rot.connected = EINA_TRUE;
 
    ELB(ELBT_ROT, "sf_connect succeeded", h);
-
-   r = vconf_get_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &lock);
-   if (r)
-     {
-        ELBF(ELBT_ROT, 0, 0,
-             "ERR! AUTO_ROTATE_SCREEN_BOOL get failed. "
-             "r:%d lock:%d", r, lock);
-     }
-   else
-     {
-        rot.lock = !lock;
-        vconf_notify_key_changed(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL,
-                                 _vconf_cb_lock_change,
-                                 NULL);
-        ELBF(ELBT_ROT, 0, 0,
-             "AUTO_ROTATE_SCREEN_BOOL get succeeded. "
-             "lock:%d rot.locK%d", lock, rot.lock);
-     }
-   return;
+   return EINA_TRUE;
 
 error:
    if (rot.retry_count <= 20)
@@ -144,15 +155,15 @@ error:
                                           _sensor_connect_retry_timeout,
                                           NULL);
      }
-   return;
+   return EINA_FALSE;
 }
 
-static void
+static Eina_Bool
 _sensor_disconnect(void)
 {
    int r;
+   if (!rot.connected) return EINA_TRUE;
 
-   vconf_ignore_key_changed(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, _vconf_cb_lock_change);
    rot.lock = EINA_FALSE;
 
    if (rot.retry_timer)
@@ -166,23 +177,23 @@ _sensor_disconnect(void)
    if (rot.handle < 0)
      {
         ELB(ELBT_ROT, "ERR! invalid handle", rot.handle);
-        return;
+        goto error;
      }
 
    if (rot.started)
      {
-        r = sf_unregister_event(rot.handle,
-                                ACCELEROMETER_EVENT_ROTATION_CHECK);
+        r = sf_stop(rot.handle);
         if (r < 0)
           {
-             ELB(ELBT_ROT, "ERR! sf_unregister_event failed", r);
-             return;
+             ELB(ELBT_ROT, "ERR! sf_stop failed", r);
+             goto error;
           }
-        r = sf_stop(rot.handle);
+        r = sf_unregister_event(rot.handle,
+                                ACCELEROMETER_EVENT_ROTATION_CHECK);
         if (r < 0)
           {
-             ELB(ELBT_ROT, "ERR! sf_stop failed", r);
-             return;
+             ELB(ELBT_ROT, "ERR! sf_unregister_event failed", r);
+             goto error;
           }
         rot.started = EINA_TRUE;
      }
@@ -191,15 +202,23 @@ _sensor_disconnect(void)
    if (r < 0)
      {
         ELB(ELBT_ROT, "ERR! sf_disconnect failed", r);
-        return;
+        goto error;
      }
 
    rot.handle = -1;
+   rot.connected = EINA_FALSE;
+   ELB(ELBT_ROT, "sf_disconnect succeeded", NULL);
+   return EINA_TRUE;
+error:
+   return EINA_FALSE;
 }
 
 static Eina_Bool
 _sensor_connect_retry_timeout(void *data)
 {
+   int r = 0, lock = 0;
+   Eina_Bool res = EINA_FALSE;
+
    if (rot.retry_timer)
      {
         ecore_timer_del(rot.retry_timer);
@@ -207,28 +226,62 @@ _sensor_connect_retry_timeout(void *data)
      }
    rot.retry_count++;
    ELB(ELBT_ROT, "retrying to connect sensor", rot.retry_count);
-   _sensor_connect();
+   res = _sensor_connect();
+   if (res)
+     {
+        r = vconf_get_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &lock);
+        if (r)
+          {
+             ELBF(ELBT_ROT, 0, 0,
+                  "ERR! AUTO_ROTATE_SCREEN_BOOL get failed. "
+                  "r:%d lock:%d", r, lock);
+          }
+        else
+          {
+             rot.lock = !lock;
+             vconf_notify_key_changed(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL,
+                                      _vconf_cb_lock_change,
+                                      NULL);
+             ELBF(ELBT_ROT, 0, 0,
+                  "AUTO_ROTATE_SCREEN_BOOL get succeeded. "
+                  "lock:%d rot.locK%d", lock, rot.lock);
+          }
+     }
+
    return ECORE_CALLBACK_CANCEL;
 }
 
 static int
 _ang_get(enum accelerometer_rotate_state state)
 {
-   int ang = -1;
+   E_Devicemgr_Config_Rotation *cr = NULL;
+   Eina_List *l = NULL;
+   int ang = -1, res = -1;
 
    /* change CW (SensorFW) to CCW(EFL) */
    switch (state)
      {
-      case ROTATION_EVENT_0:   ang =   0; break;
-      case ROTATION_EVENT_90:  ang = 270; break;
-      case ROTATION_EVENT_180: ang = 180; break;
-      case ROTATION_EVENT_270: ang =  90; break;
+      case ROTATION_EVENT_0:     ang = 0; break;
+      case ROTATION_EVENT_90:    ang = 270; break;
+      case ROTATION_EVENT_180:   ang = 180; break;
+      case ROTATION_EVENT_270:   ang = 90; break;
       default:
-        ELB(ELBT_ROT, "ERR! unknown state", state);
+         ELB(ELBT_ROT, "ERR! unknown state", state);
         break;
      }
 
-   return ang;
+   EINA_LIST_FOREACH(_e_devicemgr_cfg->rotation, l, cr)
+     {
+        if (!cr) continue;
+        if (cr->angle == ang)
+          {
+             if (cr->enable)
+               res = ang;
+             break;
+          }
+     }
+
+   return res;
 }
 
 static void
@@ -252,9 +305,10 @@ _sensor_rotation_changed_cb(unsigned int         event_type,
 
     ELBF(ELBT_ROT, 0, 0, "ROT_EV state:%d angle:%d", state, ang);
 
-    e_zone_rotation_set(zone, ang);
-    rot.state = state;
+    if (ang != -1)
+      e_zone_rotation_set(zone, ang);
 
+    rot.state = state;
     _sensor_rotation_set(ang);
 }
 
@@ -265,6 +319,7 @@ _vconf_cb_lock_change(keynode_t *node,
    E_Manager *m = NULL;
    E_Zone *zone = NULL;
    int lock = 0, z_ang = -1, ang = -1;
+   Eina_Bool res = EINA_FALSE;
    if (!node)
      {
         ELB(ELBT_ROT, "ERR! node is NULL", 0);
@@ -279,25 +334,33 @@ _vconf_cb_lock_change(keynode_t *node,
 
    if (lock)
      {
+        // disconnect sensor for reducing the current sinking.
+        _sensor_disconnect();
         if (zone) e_zone_rotation_set(zone, 0);
         rot.state = ROTATION_EVENT_0;
      }
    else
      {
-        enum accelerometer_rotate_state state;
-        if (sf_check_rotation(&state) < 0)
+        // connect sensor for auto rotation.
+        res = _sensor_connect();
+        ELB(ELBT_ROT, "_sensor_connect() res", res);
+        if (res)
           {
-             ELB(ELBT_ROT, "ERR! getting rotation failed", state);
-          }
-        else
-          {
-             ang = _ang_get(state);
-             if (zone) z_ang = e_zone_rotation_get(zone);
-             if ((ang != -1) && (ang != z_ang))
+             enum accelerometer_rotate_state state;
+             if (sf_check_rotation(&state) < 0)
+               {
+                  ELB(ELBT_ROT, "ERR! getting rotation failed", state);
+               }
+             else
                {
-                  if (zone) e_zone_rotation_set(zone, ang);
-                  rot.state = state;
-                  _sensor_rotation_set(ang);
+                  ang = _ang_get(state);
+                  if (zone) z_ang = e_zone_rotation_get(zone);
+                  if ((ang != -1) && (ang != z_ang))
+                    {
+                       if (zone) e_zone_rotation_set(zone, ang);
+                       rot.state = state;
+                       _sensor_rotation_set(ang);
+                    }
                }
           }
      }
index 944de7f..eae03c6 100644 (file)
@@ -384,6 +384,8 @@ struct _E_Illume_Quickpanel
    unsigned char changed :1;
 
    unsigned int layer;
+
+   E_Border *below_bd;
 };
 
 
index 933dcf5..b156e92 100644 (file)
@@ -11,6 +11,7 @@
 
 /* define layer values here so we don't have to grep through code to change */
 /* layer level 10 (450~) */
+# define POL_QUICKPANEL_LAYER 450
 
 /* layer level 9 (400~449) */
 # define POL_NOTIFICATION_LAYER_HIGH 400
@@ -19,7 +20,6 @@
 # define POL_NOTIFICATION_LAYER_NORMAL 350
 
 /* layer level 7 (300~349) */
-# define POL_QUICKPANEL_LAYER 300
 # define POL_NOTIFICATION_LAYER 300
 # define POL_INDICATOR_LAYER 300
 # define POL_NOTIFICATION_LAYER_LOW 300
@@ -28,6 +28,7 @@
 # define POL_FULLSCREEN_LAYER 250
 
 /* layer level 5 (200~249) */
+# define POL_APPTRAY_LAYER 200
 
 /* layer level 4 (150~199) */
 # define POL_STATE_ABOVE_LAYER 150
index 7023191..8b54821 100644 (file)
@@ -10,9 +10,6 @@ static Eina_Bool _e_mod_floating_cb_border_del(void *data __UNUSED__,
                                               int type __UNUSED__,
                                               void *event);
 
-static Eina_Bool _e_mod_floating_cb_move_resize_request(void *data __UNUSED__,
-                                                          int type __UNUSED__,
-                                                          void *event);
 static Eina_Bool _e_mod_floating_cb_client_message(void   *data,
                                                      int    type,
                                                      void   *event);
@@ -20,23 +17,10 @@ static Eina_Bool _e_mod_floating_cb_window_property(void  *data,
                                                       int   type,
                                                       void  *event);
 
-/* border event callback function */
-static Eina_Bool _e_mod_floating_cb_mouse_up(void   *data,
-                                              int    type __UNUSED__,
-                                              void   *event);
-static Eina_Bool _e_mod_floating_cb_mouse_move(void    *data,
-                                                int     type __UNUSED__,
-                                                void    *event);
-
-// E Border hook
-static void _e_mod_floating_cb_hook_resize_begin(void *data __UNUSED__,
-                                                 void *data2);
-
 /* general function */
 static int _e_mod_floating_atom_init(void);
 static void _e_mod_floating_border_list_add(E_Border *bd);
 static void _e_mod_floating_border_list_del(E_Border *bd);
-static void _e_mod_floating_border_handler_remove(E_Illume_Floating_Border *ft_bd);
 static void _e_mod_hints_floating_list_set(void);
 static E_Illume_Floating_Border* _e_mod_floating_get_floating_border(Ecore_X_Window win);
 static void _e_mod_floating_window_state_change(Ecore_X_Event_Window_Property *ev);
@@ -52,13 +36,6 @@ static void _e_mod_floating_iconify_all(Eina_Bool iconify);
 /* for automatically align the floating windows */
 static void _e_mod_floating_smart_cleanup(Ecore_X_Event_Client_Message *event);
 
-/* for top or bottom maximize */
-static void _e_mod_floating_maximize_coords_handle(E_Illume_Floating_Border *ft_bd,
-                                                     int       x,
-                                                     int       y);
-static void _e_mod_floating_maximize(E_Border *bd, E_Illume_Maximize max);
-static void _e_mod_floating_maximize_internal(E_Border *bd, E_Illume_Maximize max);
-
 /* for controlling app-in-app window */
 static Ecore_X_Atom E_ILLUME_ATOM_FLOATING_WINDOW_ALIGN;
 static Ecore_X_Atom E_ILLUME_ATOM_FLOATING_WINDOW_CHANGE_VISIBLE;
@@ -89,11 +66,6 @@ e_mod_floating_init(void)
                                                NULL));
    _fw_hdls =
       eina_list_append(_fw_hdls,
-                       ecore_event_handler_add(ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST,
-                                               _e_mod_floating_cb_move_resize_request,
-                                               NULL));
-   _fw_hdls =
-      eina_list_append(_fw_hdls,
                        ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
                                                _e_mod_floating_cb_client_message,
                                                NULL));
@@ -103,12 +75,6 @@ e_mod_floating_init(void)
                                                _e_mod_floating_cb_window_property,
                                                NULL));
 
-   _fw_hooks =
-      eina_list_append(_fw_hooks,
-                       e_border_hook_add(E_BORDER_HOOK_RESIZE_BEGIN,
-                                         _e_mod_floating_cb_hook_resize_begin,
-                                         NULL));
-
    _idle_enterer = ecore_idle_enterer_add(_e_mod_floating_cb_idle_enterer, NULL);
 
    ret = _e_mod_floating_atom_init();
@@ -279,8 +245,6 @@ _e_mod_floating_border_list_del(E_Border *bd)
         return;
      }
 
-   _e_mod_floating_border_handler_remove(ft_bd);
-
    L(LT_FLOATING, "%s(%d) Floating window is removed in list, win:0x%08x\n",
      __func__, __LINE__, bd->win);
 
@@ -296,18 +260,6 @@ _e_mod_floating_border_list_del(E_Border *bd)
 }
 
 static void
-_e_mod_floating_border_handler_remove(E_Illume_Floating_Border *ft_bd)
-{
-   EINA_SAFETY_ON_NULL_RETURN(ft_bd);
-   EINA_SAFETY_ON_NULL_RETURN(ft_bd->handlers);
-
-   L(LT_FLOATING, "%s(%d) Mouse event handler is removed, win: 0x%08x\n",
-     __func__, __LINE__, ft_bd->bd->client.win);
-
-   E_FREE_LIST(ft_bd->handlers, ecore_event_handler_del);
-}
-
-static void
 _e_mod_hints_floating_list_set(void)
 {
    Eina_List *ml = NULL, *cl = NULL;
@@ -403,41 +355,6 @@ end:
 }
 
 static Eina_Bool
-_e_mod_floating_cb_move_resize_request(void *data __UNUSED__,
-                                        int type __UNUSED__,
-                                        void *event)
-{
-   Ecore_X_Event_Window_Move_Resize_Request *e;
-   E_Illume_Floating_Border *ft_bd = NULL;
-
-   e = event;
-   ft_bd = _e_mod_floating_get_floating_border(e->win);
-   if (!ft_bd)
-     {
-        L(LT_FLOATING, "%s(%d) No window in floating list, win: 0x%08x\n",
-          __func__, __LINE__, e->win);
-        goto end;
-     }
-
-   if (ft_bd->handlers == NULL)
-     {
-        L(LT_FLOATING, "%s(%d) Mouse event handler is added, win: 0x%08x\n",
-          __func__, __LINE__, e->win);
-        ft_bd->handlers = eina_list_append(ft_bd->handlers,
-                                           ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP,
-                                                                   _e_mod_floating_cb_mouse_up,
-                                                                   ft_bd));
-        ft_bd->handlers = eina_list_append(ft_bd->handlers,
-                                           ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE,
-                                                                   _e_mod_floating_cb_mouse_move,
-                                                                   ft_bd));
-     }
-
-end:
-   return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
 _e_mod_floating_cb_client_message(void   *data __UNUSED__,
                                    int    type __UNUSED__,
                                    void   *event)
@@ -490,117 +407,6 @@ _e_mod_floating_cb_window_property(void *data __UNUSED__,
 }
 
 static Eina_Bool
-_e_mod_floating_cb_mouse_up(void   *data,
-                             int    type __UNUSED__,
-                             void   *event)
-{
-   Ecore_Event_Mouse_Button *ev;
-   E_Illume_Floating_Border *ft_bd = NULL;
-   E_Border *bd = NULL;
-
-   EINA_SAFETY_ON_NULL_GOTO(event, end);
-   EINA_SAFETY_ON_NULL_GOTO(data, end);
-
-   ev = event;
-   ft_bd = data;
-   bd = ft_bd->bd;
-   EINA_SAFETY_ON_NULL_GOTO(bd, end);
-
-   if ((ev->event_window != bd->win) &&
-       (ev->event_window != bd->event_win) &&
-       (ev->window != bd->event_win))
-     goto end;
-
-   L(LT_FLOATING, "%s(%d) mouse up state, border: 0x%08x\n",
-     __func__, __LINE__, ev->window);
-
-   if (!ft_bd->moving) goto end;
-   ft_bd->moving = 0;
-
-   if (e_illume_border_is_fixed(bd)) goto end;
-
-   _e_mod_floating_maximize_coords_handle(ft_bd, ev->root.x, ev->root.y);
-   _e_mod_floating_border_handler_remove(ft_bd);
-
-end:
-   return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_e_mod_floating_cb_mouse_move(void    *data,
-                               int     type __UNUSED__,
-                               void    *event)
-{
-   Ecore_Event_Mouse_Move *ev;
-   E_Illume_Floating_Border *ft_bd = NULL;
-   E_Border *bd = NULL;
-   int new_x = 0, new_y = 0;
-   int threshold = _e_illume_cfg->floating_control_threshold;
-
-   EINA_SAFETY_ON_NULL_GOTO(event, end);
-   EINA_SAFETY_ON_NULL_GOTO(data, end);
-
-   ev = event;
-   ft_bd = data;
-   bd = ft_bd->bd;
-   EINA_SAFETY_ON_NULL_GOTO(bd, end);
-
-   if ((ev->event_window != bd->win) &&
-       (ev->event_window != bd->event_win) &&
-       (ev->window != bd->event_win))
-     goto end;
-
-   if (!bd->moving) goto end;
-   ft_bd->moving = 1;
-
-   L(LT_FLOATING, "%s(%d) mouse move state, border: 0x%08x\n",
-     __func__, __LINE__, ev->window);
-
-   if (e_illume_border_is_fixed(bd)) goto end;
-
-   if (ft_bd->state.maximize_by_illume == 0) goto end;
-   ft_bd->state.maximize_by_illume = 0;
-
-   e_border_unmaximize(bd, E_ILLUME_MAXIMIZE_BOTH);
-
-   new_x = ev->root.x - (bd->w / 2);
-   new_y = ev->root.y - threshold;
-
-   if ((bd->moveinfo.down.button >= 1) && (bd->moveinfo.down.button <= 3))
-     {
-        bd->mouse.last_down[bd->moveinfo.down.button - 1].x = new_x;
-        bd->mouse.last_down[bd->moveinfo.down.button - 1].y = new_y;
-     }
-
-   e_border_move(bd, new_x, new_y);
-
-end:
-   return ECORE_CALLBACK_PASS_ON;
-}
-
-/* if user resize the window in maximized by gesture,
- * change this window back into un-maximize state.
- */
-static void
-_e_mod_floating_cb_hook_resize_begin(void *data __UNUSED__,
-                                     void *data2)
-{
-   E_Illume_Floating_Border *ft_bd = NULL;
-   E_Border *bd = NULL;
-
-   EINA_SAFETY_ON_NULL_RETURN(data2);
-   bd = data2;
-   ft_bd = _e_mod_floating_get_floating_border(bd->win);
-   EINA_SAFETY_ON_NULL_RETURN(ft_bd);
-
-   if (ft_bd->state.maximize_by_illume)
-     {
-        ft_bd->state.maximize_by_illume = 0;
-        bd->maximized = 0;
-     }
-}
-
-static Eina_Bool
 _e_mod_floating_cb_idle_enterer(void *data __UNUSED__)
 {
    E_Illume_Floating_Border *ft_bd = NULL;
@@ -621,23 +427,6 @@ _e_mod_floating_cb_idle_enterer(void *data __UNUSED__)
          L(LT_FLOATING, "%s(%d) idle state, win: 0x%08x\n",
            __func__, __LINE__, bd->client.win);
 
-        if (ft_bd->defer.maximize_top)
-          {
-             _e_mod_floating_maximize(bd,
-                                      E_MAXIMIZE_FULLSCREEN |
-                                      E_ILLUME_MAXIMIZE_TOP);
-             ft_bd->state.maximize_by_illume = 1;
-             ft_bd->defer.maximize_top = 0;
-          }
-        else if (ft_bd->defer.maximize_bottom)
-          {
-             _e_mod_floating_maximize(bd,
-                                      E_MAXIMIZE_FULLSCREEN |
-                                      E_ILLUME_MAXIMIZE_BOTTOM);
-             ft_bd->state.maximize_by_illume = 1;
-             ft_bd->defer.maximize_bottom = 0;
-          }
-
         if (ft_bd->defer.close)
           {
              e_border_act_close_begin(ft_bd->bd);
@@ -746,120 +535,3 @@ _e_mod_floating_smart_cleanup(Ecore_X_Event_Client_Message *event __UNUSED__)
 
    return;
 }
-
-static void
-_e_mod_floating_maximize_coords_handle(E_Illume_Floating_Border *ft_bd,
-                                        int        x,
-                                        int        y)
-{
-   E_Border *bd = NULL;
-   const int margin = _e_illume_cfg->floating_control_threshold;
-
-   EINA_SAFETY_ON_NULL_RETURN(ft_bd);
-   EINA_SAFETY_ON_NULL_RETURN(ft_bd->bd);
-   bd = ft_bd->bd;
-
-   if ((y >= 0) && (y <= margin))
-     {
-        ft_bd->defer.maximize_top = 1;
-        ft_bd->changed = 1;
-     }
-   else if ((y >= (bd->zone->h - margin)) && (y <= (bd->zone->h -1)))
-     {
-        ft_bd->defer.maximize_bottom = 1;
-        ft_bd->changed = 1;
-     }
-}
-
-static void
-_e_mod_floating_maximize(E_Border *bd, E_Illume_Maximize max)
-{
-   E_OBJECT_CHECK(bd);
-   E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
-
-   if (!(max & E_ILLUME_MAXIMIZE_DIRECTION)) max |= E_ILLUME_MAXIMIZE_BOTH;
-
-   if ((bd->shaded) || (bd->shading)) return;
-   ecore_x_window_shadow_tree_flush();
-   if (bd->fullscreen)
-     e_border_unfullscreen(bd);
-   if (((bd->maximized & E_ILLUME_MAXIMIZE_DIRECTION) ==
-        (max & E_MAXIMIZE_DIRECTION)) ||
-       ((bd->maximized & E_ILLUME_MAXIMIZE_DIRECTION) ==
-        E_ILLUME_MAXIMIZE_BOTH)) return;
-   if (bd->new_client)
-     {
-        bd->need_maximize = 1;
-        bd->maximized &= ~E_ILLUME_MAXIMIZE_TYPE;
-        bd->maximized |= max;
-        return;
-     }
-
-   bd->pre_res_change.valid = 0;
-   if (!(bd->maximized & E_ILLUME_MAXIMIZE_HORIZONTAL))
-     {
-        bd->saved.x = bd->x - bd->zone->x;
-        bd->saved.w = bd->w;
-     }
-   if (!(bd->maximized & E_ILLUME_MAXIMIZE_VERTICAL))
-     {
-        bd->saved.y = bd->y - bd->zone->y;
-        bd->saved.h = bd->h;
-     }
-
-   bd->saved.zone = bd->zone->num;
-   e_hints_window_size_set(bd);
-
-   e_border_raise(bd);
-
-   _e_mod_floating_maximize_internal(bd, max);
-
-   bd->maximized &= ~E_ILLUME_MAXIMIZE_TYPE;
-   bd->maximized |= max;
-
-   e_hints_window_maximized_set(bd, bd->maximized & E_ILLUME_MAXIMIZE_HORIZONTAL,
-                                bd->maximized & E_ILLUME_MAXIMIZE_VERTICAL);
-   e_remember_update(bd);
-}
-
-static void
-_e_mod_floating_maximize_internal(E_Border *bd, E_Illume_Maximize max)
-{
-   int x1, yy1;
-   int w, h;
-
-   switch (max & E_ILLUME_MAXIMIZE_TYPE)
-     {
-      case E_ILLUME_MAXIMIZE_FULLSCREEN:
-         w = bd->zone->w;
-         h = bd->zone->h;
-
-         e_border_resize_limit(bd, &w, &h);
-         x1 = bd->zone->x + (bd->zone->w - w) / 2;
-         yy1 = bd->zone->y + (bd->zone->h - h) / 2;
-
-         switch (max & E_ILLUME_MAXIMIZE_DIRECTION)
-           {
-            case E_ILLUME_MAXIMIZE_BOTH:
-               e_border_move_resize(bd, x1, yy1, w, h);
-               break;
-
-            case E_ILLUME_MAXIMIZE_VERTICAL:
-               e_border_move_resize(bd, bd->x, yy1, bd->w, h);
-               break;
-
-            case E_ILLUME_MAXIMIZE_HORIZONTAL:
-               e_border_move_resize(bd, x1, bd->y, w, bd->h);
-               break;
-
-            case E_ILLUME_MAXIMIZE_BOTTOM:
-               e_border_move_resize(bd, bd->zone->x, bd->zone->h / 2, w, h / 2);
-               break;
-
-            case E_ILLUME_MAXIMIZE_TOP:
-               e_border_move_resize(bd, bd->zone->x, bd->zone->y, w, h / 2);
-               break;
-           }
-         break;
-     }
-}
index 77dbdea..eb60a50 100644 (file)
@@ -3,39 +3,15 @@
 
 typedef struct _E_Illume_Floating_Border E_Illume_Floating_Border;
 
-typedef enum _E_Illume_Maximize
-{
-   E_ILLUME_MAXIMIZE_NONE = 0x00000000,
-   E_ILLUME_MAXIMIZE_FULLSCREEN = 0x00000001,
-   E_ILLUME_MAXIMIZE_SMART = 0x00000002,
-   E_ILLUME_MAXIMIZE_EXPAND = 0x00000003,
-   E_ILLUME_MAXIMIZE_FILL = 0x00000004,
-   E_ILLUME_MAXIMIZE_TYPE = 0x0000000f,
-   E_ILLUME_MAXIMIZE_VERTICAL = 0x00000010,
-   E_ILLUME_MAXIMIZE_HORIZONTAL = 0x00000020,
-   E_ILLUME_MAXIMIZE_BOTH = 0x00000030,
-   E_ILLUME_MAXIMIZE_BOTTOM = 0x00000070,
-   E_ILLUME_MAXIMIZE_TOP = 0x000000b0,
-   E_ILLUME_MAXIMIZE_DIRECTION = 0x000000f0
-} E_Illume_Maximize;
-
 struct _E_Illume_Floating_Border
 {
    E_Border    *bd;
    Eina_List   *handlers;
 
-   unsigned char moving :1;
-
    struct{
-        unsigned char maximize_top :1;
-        unsigned char maximize_bottom :1;
         unsigned char close :1;
    } defer;
    unsigned char changed :1;
-
-   struct{
-        unsigned char maximize_by_illume :1;
-   } state;
 };
 
 int e_mod_floating_init(void);
index 2a2ad76..f19a180 100644 (file)
@@ -41,6 +41,7 @@ static int _e_mod_quickpanel_root_angle_get (E_Illume_Quickpanel* qp);
 static Ecore_X_Window _e_mod_quickpanel_active_window_get(Ecore_X_Window root);
 static void _e_mod_quickpanel_property_root_angle_change(Ecore_X_Event_Window_Property *event);
 static void _e_mod_quickpanel_property_active_win_change(Ecore_X_Event_Window_Property *event);
+static void _e_mod_quickpanel_property_quickpanel_state_change(Ecore_X_Event_Window_Property *event);
 
 static int _e_mod_quickpanel_bg_layout_add(E_Illume_Quickpanel *qp);
 static int _e_mod_quickpanel_bg_layout_del(E_Illume_Quickpanel *qp);
@@ -62,6 +63,10 @@ static void _e_mod_quickpanel_window_list_set (E_Illume_Quickpanel* qp);
 EINTERN Eina_Bool _e_mod_quickpanel_layer_fetch(E_Illume_Quickpanel *qp, E_Border *bd);
 EINTERN void _e_mod_quickpanel_layer_update(E_Illume_Quickpanel *qp);
 
+static E_Border* _e_mod_quickpanel_find_below_notification(E_Border *qp_bd);
+static void _e_mod_quickpanel_check_hide(E_Border *bd);
+
+
 /* local variables */
 static Eina_List *_qp_hdls = NULL;
 static E_Border_Hook *_qp_hook = NULL;
@@ -316,6 +321,8 @@ static Eina_Bool _e_mod_quickpanel_cb_border_add(void *data __UNUSED__, int type
         return ECORE_CALLBACK_PASS_ON;
      }
 
+   _e_mod_quickpanel_check_hide(ev->border);
+
    if (!ev->border->client.illume.quickpanel.quickpanel)
       return ECORE_CALLBACK_PASS_ON;
 
@@ -344,25 +351,9 @@ static Eina_Bool _e_mod_quickpanel_cb_border_add(void *data __UNUSED__, int type
    if (e_illume_border_is_quickpanel(ev->border))
      {
         qp->bd = ev->border;
-
-        root = ecore_x_window_root_get(qp->bd->win);
-        active_win = _e_mod_quickpanel_active_window_get(root);
-        if (active_win)
-          {
-             active_bd = e_border_find_by_client_window(active_win);
-             if (active_bd)
-               qp->changes.layer = _e_mod_quickpanel_layer_fetch(qp, active_bd);
-             else
-               {
-                  qp->layer = POL_QUICKPANEL_LAYER;
-                  qp->changes.layer = 1;
-               }
-
-             L(LT_QUICKPANEL, "[ILLUME2][QP] %s(%d).. Initializing QP layer: %d\n",
-               __func__, __LINE__, qp->layer);
-
-             if (qp->changes.layer) qp->changed = 1;
-          }
+        qp->layer = POL_QUICKPANEL_LAYER;
+        qp->changes.layer = 1;
+        qp->changed = 1;
      }
 
    // Disable effect of the quickpanel window
@@ -664,18 +655,6 @@ _e_mod_quickpanel_property_active_win_change(Ecore_X_Event_Window_Property *even
    if (!(qp = e_illume_quickpanel_by_zone_get(active_bd->zone)))
      return;
 
-   // Updating quickpanel's layer by active window
-   if (e_illume_border_is_quickpanel(active_bd) == EINA_FALSE)
-     {
-        qp->changes.layer = _e_mod_quickpanel_layer_fetch(qp, active_bd);
-        if (qp->changes.layer)
-          {
-             L(LT_QUICKPANEL, "[ILLUME2][QP] %s(%d).. Fetch QP layer: %d\n",
-               __func__, __LINE__, qp->layer);
-             qp->changed = 1;
-          }
-     }
-
    if (e_illume_border_is_lock_screen(active_bd))
      {
         if (!qp->is_lock)
@@ -696,6 +675,29 @@ _e_mod_quickpanel_property_active_win_change(Ecore_X_Event_Window_Property *even
      }
 }
 
+static void
+_e_mod_quickpanel_property_quickpanel_state_change(Ecore_X_Event_Window_Property *event)
+{
+   E_Illume_Quickpanel *qp;
+   E_Zone *zone;
+   Ecore_X_Illume_Quickpanel_State state;
+
+   zone = e_util_zone_window_find(event->win);
+   if (!zone) return;
+
+   if (!(qp = e_illume_quickpanel_by_zone_get(zone)))
+     return;
+
+   // check qp is visible
+   state = ecore_x_e_illume_quickpanel_state_get(event->win);
+   if (state == ECORE_X_ILLUME_QUICKPANEL_STATE_ON)
+     qp->below_bd = _e_mod_quickpanel_find_below_notification(qp->bd);
+   else
+     qp->below_bd = NULL;
+
+   L(LT_QUICKPANEL, "[ILLUME2][QP] %s(%d)... QUICK PANEL's below win:0x%07x\n", __func__, __LINE__, qp->below_bd ? qp->below_bd->client.win : (unsigned int)NULL);
+}
+
 static Eina_Bool _e_mod_quickpanel_cb_property(void *data __UNUSED__, int type __UNUSED__, void *event)
 {
    Ecore_X_Event_Window_Property *ev;
@@ -709,6 +711,10 @@ static Eina_Bool _e_mod_quickpanel_cb_property(void *data __UNUSED__, int type _
      {
         _e_mod_quickpanel_property_active_win_change(ev);
      }
+   else if (ev->atom == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE)
+     {
+        _e_mod_quickpanel_property_quickpanel_state_change(ev);
+     }
 
    return ECORE_CALLBACK_PASS_ON;
 }
@@ -751,25 +757,7 @@ _e_mod_quickpanel_cb_border_stack(void *data __UNUSED__, int type __UNUSED__, vo
    if (!ev) return ECORE_CALLBACK_PASS_ON;
    if (e_illume_border_is_quickpanel(ev->border)) return ECORE_CALLBACK_PASS_ON;
 
-   root = ecore_x_window_root_get(ev->border->win);
-   active_win = _e_mod_quickpanel_active_window_get(root);
-   if (!active_win) return ECORE_CALLBACK_PASS_ON;
-
-   // fetching quickpanel's layer
-   if (ev->border->client.win == active_win)
-     {
-        qp = e_illume_quickpanel_by_zone_get(ev->border->zone);
-        if (qp)
-          {
-             qp->changes.layer = _e_mod_quickpanel_layer_fetch(qp, ev->border);
-             if (qp->changes.layer)
-               {
-                  L(LT_QUICKPANEL, "[ILLUME2][QP] %s(%d).. Fetch QP layer: %d\n",
-                    __func__, __LINE__, qp->layer);
-                  qp->changed = 1;
-               }
-          }
-     }
+   _e_mod_quickpanel_check_hide(ev->border);
 
    return ECORE_CALLBACK_PASS_ON;
 }
@@ -1376,3 +1364,65 @@ _e_mod_quickpanel_layer_update(E_Illume_Quickpanel *qp)
      __func__, __LINE__, qp->layer);
    e_border_layer_set(qp->bd, qp->layer);
 }
+
+static E_Border*
+_e_mod_quickpanel_find_below_notification(E_Border *qp_bd)
+{
+   int i;
+   Eina_List *l;
+
+   if (!qp_bd) return NULL;
+   if (!qp_bd->zone) return NULL;
+
+   /* Find the windows below this one
+      - NOTIFICATION HIGH   : 9
+      - NOTIFICATION NORMAL : 8
+      - NOTIFICATION LOW    : 7
+    */
+   for (i = 9; i >= 7; i--)
+     {
+        E_Border *b;
+
+        EINA_LIST_REVERSE_FOREACH(qp_bd->zone->container->layers[i].clients, l, b)
+          {
+             if (!b) continue;
+             if (b->zone != qp_bd->zone) continue;
+
+             if ((b->x >= qp_bd->zone->w) || (b->y >= qp_bd->zone->h)) continue;
+             if (((b->x + b->w) <= 0) || ((b->y + b->h) <= 0)) continue;
+
+             return b;
+          }
+     }
+
+   return NULL;
+}
+
+static void _e_mod_quickpanel_check_hide(E_Border *bd)
+{
+   E_Illume_Quickpanel *qp;
+   if (!bd) return;
+
+   if (bd->layer >= POL_NOTIFICATION_LAYER_LOW)
+     {
+        qp = e_illume_quickpanel_by_zone_get(bd->zone);
+        if (qp)
+          {
+             // check qp is visible
+             Ecore_X_Illume_Quickpanel_State state;
+             E_Border *below_bd;
+
+             state = ecore_x_e_illume_quickpanel_state_get(bd->zone->black_win);
+             if (state == ECORE_X_ILLUME_QUICKPANEL_STATE_ON)
+               {
+                  // check qp's below is chaged or not
+                  below_bd = _e_mod_quickpanel_find_below_notification(qp->bd);
+                  if (qp->bd != below_bd)
+                    {
+                       ecore_x_e_illume_quickpanel_state_send(bd->zone->black_win, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+                       L(LT_QUICKPANEL, "[ILLUME2][QP] %s(%d).. Send Quickpanel state OFF.\n", __func__, __LINE__);
+                    }
+               }
+          }
+     }
+}
index 5538bb2..75cf22d 100644 (file)
@@ -514,6 +514,8 @@ _policy_zone_layout_dialog(E_Border *bd, E_Illume_Config_Zone *cz)
 {
    E_Border *parent;
    int mw, mh, nx, ny;
+   Eina_Bool resize = EINA_FALSE;
+   Eina_Bool move = EINA_FALSE;
 
    //   printf("\tLayout Dialog: %s\n", bd->client.icccm.name);
 
@@ -564,13 +566,18 @@ _policy_zone_layout_dialog(E_Border *bd, E_Illume_Config_Zone *cz)
 
    /* make sure it's the required width & height */
    if ((bd->w != mw) || (bd->h != mh))
-     {
-        _policy_border_resize(bd, mw, mh);
-     }
+     resize = EINA_TRUE;
 
    /* make sure it's in the correct position */
    if ((bd->x != nx) || (bd->y != ny))
-      _policy_border_move(bd, nx, ny);
+     move = EINA_TRUE;
+
+   if (resize && move)
+     e_border_move_resize(bd, nx, ny, mw, mh);
+   else if (resize)
+     _policy_border_resize(bd, mw, mh);
+   else if (move)
+     _policy_border_move(bd, nx, ny);
 
    /* set layer if needed */
    if (bd->layer != POL_DIALOG_LAYER) e_border_layer_set(bd, POL_DIALOG_LAYER);
@@ -580,6 +587,8 @@ static void
 _policy_zone_layout_splash(E_Border *bd, E_Illume_Config_Zone *cz)
 {
    int mw, mh, nx, ny;
+   Eina_Bool resize = EINA_FALSE;
+   Eina_Bool move = EINA_FALSE;
 
    if ((!bd) || (!cz)) return;
 
@@ -600,9 +609,16 @@ _policy_zone_layout_splash(E_Border *bd, E_Illume_Config_Zone *cz)
    ny = (bd->zone->y + ((bd->zone->h - mh) / 2));
 
    if ((bd->w != mw) || (bd->h != mh))
-     _policy_border_resize(bd, mw, mh);
+     resize = EINA_TRUE;
 
    if ((bd->x != nx) || (bd->y != ny))
+     move = EINA_TRUE;
+
+   if (resize && move)
+     e_border_move_resize(bd, nx, ny, mw, mh);
+   else if (resize)
+     _policy_border_resize(bd, mw, mh);
+   else if (move)
      _policy_border_move(bd, nx, ny);
 }
 
@@ -627,6 +643,10 @@ _policy_zone_layout_apptray(E_Border *bd)
         if ((bd->w != bd->zone->w) || (bd->h != bd->zone->h))
           _policy_border_resize(bd, bd->zone->w, bd->zone->h);
      }
+
+   /* set layer if needed */
+   if (bd->layer != POL_APPTRAY_LAYER)
+      e_border_layer_set(bd, POL_APPTRAY_LAYER);
 }
 
 static void
@@ -639,6 +659,10 @@ _policy_zone_layout_miniapptray(E_Border *bd)
         if ((bd->w != bd->zone->w) || (bd->h != bd->zone->h))
           _policy_border_resize(bd, bd->zone->w, bd->zone->h);
      }
+
+   /* set layer if needed */
+   if (bd->layer != POL_APPTRAY_LAYER)
+      e_border_layer_set(bd, POL_APPTRAY_LAYER);
 }
 
 /* policy functions */
@@ -804,9 +828,30 @@ _policy_border_del(E_Border *bd)
           }
         xwin_info->bd_info = NULL;
         xwin_info->attr.visible = 0;
+        xwin_info->viewable = EINA_FALSE;
         xwin_info->is_drawed = EINA_FALSE;
      }
 
+   E_Illume_Border_Info* bd_info = _policy_get_border_info(bd);
+   if (bd_info)
+     {
+        if (bd_info->resize_req.mouse.down)
+          {
+             e_grabinput_release(bd->event_win, bd->event_win);
+
+             if (bd_info->resize_req.mouse.resize)
+               {
+                  Evas_Object *o = (Evas_Object *)e_object_data_get(E_OBJECT(bd));
+                  if (o) evas_object_del(o);
+               }
+
+             /* set property on zone window that a drag is finished */
+             ecore_x_e_illume_drag_set(bd->zone->black_win, 0);
+
+             _policy_border_illume_handlers_remove(bd_info);
+          }
+     }
+
    _policy_delete_border_info_list (bd);
 
    if (e_illume_border_is_indicator(bd))
@@ -985,6 +1030,10 @@ _check_parent_in_transient_for_tree(E_Border *bd, E_Border *parent_bd)
 void
 _policy_border_pre_fetch(E_Border *bd)
 {
+#ifdef _F_DEICONIFY_APPROVE_
+   Eina_Bool change_parent = EINA_TRUE;
+#endif
+
    if (!bd) return;
 
    if (bd->new_client)
@@ -1015,6 +1064,9 @@ _policy_border_pre_fetch(E_Border *bd)
         /* If we already have a parent, remove it */
         if (bd->parent)
           {
+#ifdef _F_DEICONIFY_APPROVE_
+             if (bd_parent == bd->parent) change_parent = EINA_FALSE;
+#endif
              bd->parent->transients = eina_list_remove(bd->parent->transients, bd);
              if (bd->parent->modal == bd) bd->parent->modal = NULL;
              bd->parent = NULL;
@@ -1029,12 +1081,15 @@ _policy_border_pre_fetch(E_Border *bd)
                   L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d).. win:0x%07x(iconic:%d, by_wm:%d), parent:0x%07x(iconic:%d)\n", __func__, __LINE__, bd->client.win, bd->iconic, xwin_info ? xwin_info->iconify_by_wm : -100, bd_parent->client.win, bd_parent->iconic);
                   if (_e_illume_cfg->use_force_iconify)
                     {
-                       if (xwin_info && xwin_info->iconify_by_wm)
+                       if (!bd_parent->iconic)
                          {
-                            if (bd->iconic)
+                            if (xwin_info && xwin_info->iconify_by_wm)
                               {
-                                 L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d).. FORCE UNICONIFY... win:0x%07x\n", __func__, __LINE__, bd->client.win);
-                                 _policy_border_force_uniconify(bd);
+                                 if (bd->iconic)
+                                   {
+                                      L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d).. FORCE UNICONIFY... win:0x%07x\n", __func__, __LINE__, bd->client.win);
+                                      _policy_border_force_uniconify(bd);
+                                   }
                               }
                          }
                     }
@@ -1054,6 +1109,34 @@ _policy_border_pre_fetch(E_Border *bd)
                     }
                }
           }
+
+#ifdef _F_DEICONIFY_APPROVE_
+        if (change_parent)
+          {
+             E_Border *ancestor_bd;
+             bd->client.e.state.deiconify_approve.render_done = 0;
+
+             ancestor_bd = bd->client.e.state.deiconify_approve.ancestor;
+             if ((ancestor_bd) &&
+                 (!e_object_is_del(E_OBJECT(ancestor_bd))))
+               {
+                  ancestor_bd->client.e.state.deiconify_approve.req_list = eina_list_remove(ancestor_bd->client.e.state.deiconify_approve.req_list, bd);
+                  bd->client.e.state.deiconify_approve.ancestor = NULL;
+
+                  if ((ancestor_bd->client.e.state.deiconify_approve.req_list == NULL) &&
+                      (ancestor_bd->client.e.state.deiconify_approve.render_done))
+                    {
+                       if (ancestor_bd->client.e.state.deiconify_approve.wait_timer)
+                         {
+                            ecore_timer_del(ancestor_bd->client.e.state.deiconify_approve.wait_timer);
+                            ancestor_bd->client.e.state.deiconify_approve.wait_timer = NULL;
+                            e_border_uniconify(ancestor_bd);
+                         }
+                    }
+               }
+          }
+#endif
+
         bd->client.icccm.fetch.transient_for = 0;
      }
 }
@@ -2919,20 +3002,20 @@ _policy_border_list_print (Ecore_X_Window win)
                          {
                             fprintf (out, "%3i  0x%07x  %4i  %4i  %6i  %6i  %5i   %5i     %5i      %5i   %5i  %5i    yes(0x%07x)\n",
                                     i++, xwin_info->id, xwin_info->attr.w, xwin_info->attr.h, xwin_info->attr.x, xwin_info->attr.y, xwin_info->attr.depth,
-                                    xwin_info->attr.visible, xwin_info->visibility, xwin_info->comp_vis, xwin_info->bd_info->border->iconic, xwin_info->iconify_by_wm, xwin_info->bd_info->border->client.win);
+                                    xwin_info->viewable, xwin_info->visibility, xwin_info->comp_vis, xwin_info->bd_info->border->iconic, xwin_info->iconify_by_wm, xwin_info->bd_info->border->client.win);
                          }
                        else
                          {
                             fprintf (out, "%3i  0x%07x  %4i  %4i  %6i  %6i  %5i   %5i     %5i      %5i       0    %3i        no(NULL)\n",
                                     i++, xwin_info->id, xwin_info->attr.w, xwin_info->attr.h, xwin_info->attr.x, xwin_info->attr.y, xwin_info->attr.depth,
-                                    xwin_info->attr.visible, xwin_info->visibility, xwin_info->comp_vis, xwin_info->iconify_by_wm);
+                                    xwin_info->viewable, xwin_info->visibility, xwin_info->comp_vis, xwin_info->iconify_by_wm);
                          }
                     }
                   else
                     {
                        fprintf (out, "%3i  0x%07x  %4i  %4i  %6i  %6i  %5i   %5i      %5i     %5i       0    %3i        no(NULL)\n",
                                i++, xwin_info->id, xwin_info->attr.w, xwin_info->attr.h, xwin_info->attr.x, xwin_info->attr.y, xwin_info->attr.depth,
-                               xwin_info->attr.visible, xwin_info->visibility, xwin_info->comp_vis, xwin_info->iconify_by_wm);
+                               xwin_info->viewable, xwin_info->visibility, xwin_info->comp_vis, xwin_info->iconify_by_wm);
                     }
                }
              fprintf (out, "---------------------------------------------------------------------------------------------\n" );
@@ -3426,6 +3509,8 @@ _policy_zone_layout_app_single_new (E_Illume_Border_Info* bd_info, E_Illume_Conf
 {
    E_Border* bd;
    int layer;
+   Eina_Bool resize = EINA_FALSE;
+   Eina_Bool move = EINA_FALSE;
 
    ILLUME2_TRACE ("[ILLUME2-NEW] %s(%d)... LAYOUT_SINGLE... bd_info's border = %x, client win = 0x%07x\n", __func__, __LINE__, bd_info->border, bd_info->border->client.win);
 
@@ -3455,15 +3540,32 @@ _policy_zone_layout_app_single_new (E_Illume_Border_Info* bd_info, E_Illume_Conf
                {
                   if ((bd->x != bd_info->resize_req.mouse.x) ||
                       (bd->y != bd_info->resize_req.mouse.y))
-                    _policy_border_move(bd,
-                                        bd_info->resize_req.mouse.x,
-                                        bd_info->resize_req.mouse.y);
+                    move = EINA_TRUE;
 
                   if ((bd->w != bd_info->resize_req.mouse.w) ||
                       (bd->h != bd_info->resize_req.mouse.h))
-                    _policy_border_resize(bd,
-                                          bd_info->resize_req.mouse.w,
-                                          bd_info->resize_req.mouse.h);
+                    resize = EINA_TRUE;
+
+                  if (move && resize)
+                    {
+                       e_border_move_resize(bd,
+                                            bd_info->resize_req.mouse.x,
+                                            bd_info->resize_req.mouse.y,
+                                            bd_info->resize_req.mouse.w,
+                                            bd_info->resize_req.mouse.h);
+                    }
+                  else if (move)
+                    {
+                       _policy_border_move(bd,
+                                           bd_info->resize_req.mouse.x,
+                                           bd_info->resize_req.mouse.y);
+                    }
+                  else if (resize)
+                    {
+                       _policy_border_resize(bd,
+                                             bd_info->resize_req.mouse.w,
+                                             bd_info->resize_req.mouse.h);
+                    }
 
                   bd_info->resize_req.need_change = 0;
                   L(LT_AIA, "[ILLUME2][AIA] %s(%d)... bd move resize... (%d, %d, %d, %d)\n", __func__, __LINE__, bd->x, bd->y, bd->w, bd->h);
@@ -3492,15 +3594,33 @@ _policy_zone_layout_app_single_new (E_Illume_Border_Info* bd_info, E_Illume_Conf
           {
              if ((bd->x != bd_info->resize_req.mouse.x) ||
                  (bd->y != bd_info->resize_req.mouse.y))
-               _policy_border_move(bd,
-                                   bd_info->resize_req.mouse.x,
-                                   bd_info->resize_req.mouse.y);
+               move = EINA_TRUE;
 
              if ((bd->w != bd_info->resize_req.mouse.w) ||
                  (bd->h != bd_info->resize_req.mouse.h))
-               _policy_border_resize(bd,
-                                     bd_info->resize_req.mouse.w,
-                                     bd_info->resize_req.mouse.h);
+               resize = EINA_TRUE;
+
+             if (move && resize)
+               {
+                  e_border_move_resize(bd,
+                                       bd_info->resize_req.mouse.x,
+                                       bd_info->resize_req.mouse.y,
+                                       bd_info->resize_req.mouse.w,
+                                       bd_info->resize_req.mouse.h);
+               }
+             else if (move)
+               {
+                  _policy_border_move(bd,
+                                      bd_info->resize_req.mouse.x,
+                                      bd_info->resize_req.mouse.y);
+               }
+             else if (resize)
+               {
+                  _policy_border_resize(bd,
+                                        bd_info->resize_req.mouse.w,
+                                        bd_info->resize_req.mouse.h);
+               }
+
              L(LT_AIA, "[ILLUME2][AIA] %s(%d)... bd move resize... (%d, %d, %d, %d)\n", __func__, __LINE__, bd->x, bd->y, bd->w, bd->h);
              bd_info->resize_req.need_change = 0;
           }
@@ -3519,9 +3639,16 @@ _policy_zone_layout_app_single_new (E_Illume_Border_Info* bd_info, E_Illume_Conf
    else
      {
         if ((bd->w != bd->zone->w) || (bd->h != bd->zone->h))
-          _policy_border_resize(bd, bd->zone->w, bd->zone->h);
+          resize = EINA_TRUE;
 
         if ((bd->x != bd->zone->x) || (bd->y != bd->zone->y))
+          move = EINA_TRUE;
+
+        if (resize && move)
+          e_border_move_resize(bd, bd->zone->x, bd->zone->y, bd->zone->w, bd->zone->h);
+        else if (resize)
+          _policy_border_resize(bd, bd->zone->w, bd->zone->h);
+        else if (move)
           _policy_border_move(bd, bd->zone->x, bd->zone->y);
      }
 
@@ -3537,6 +3664,8 @@ _policy_zone_layout_app_dual_top_new (E_Illume_Border_Info* bd_info, E_Illume_Co
    E_Border* temp_bd;
    int ny, nh;
    int layer;
+   Eina_Bool resize = EINA_FALSE;
+   Eina_Bool move = EINA_FALSE;
 
    ILLUME2_TRACE ("[ILLUME2-NEW] %s(%d)... LAYOUT_DUAL_TOP... bd_info's border = %x, client win = 0x%07x\n", __func__, __LINE__, bd_info->border, bd_info->border->client.win);
 
@@ -3565,11 +3694,18 @@ _policy_zone_layout_app_dual_top_new (E_Illume_Border_Info* bd_info, E_Illume_Co
 
    /* resize if needed */
    if ((bd->w != bd->zone->w) || (bd->h != nh))
-      _policy_border_resize(bd, bd->zone->w, nh);
+     resize = EINA_TRUE;
 
    /* move to correct position (relative to zone) if needed */
    if ((bd->x != bd->zone->x) || (bd->y != ny))
-      _policy_border_move(bd, bd->zone->x, ny);
+     move = EINA_TRUE;
+
+   if (resize && move)
+     e_border_move_resize(bd, bd->zone->x, ny, bd->zone->w, nh);
+   else if (resize)
+     _policy_border_resize(bd, bd->zone->w, nh);
+   else if (move)
+     _policy_border_move(bd, bd->zone->x, ny);
 
    /* set layer if needed */
    _policy_zone_layout_app_layer_set (bd, layer);
@@ -3582,6 +3718,8 @@ _policy_zone_layout_app_dual_left_new (E_Illume_Border_Info* bd_info, E_Illume_C
    E_Border* temp_bd;
    int ky, kh, nx, nw;
    int layer;
+   Eina_Bool resize = EINA_FALSE;
+   Eina_Bool move = EINA_FALSE;
 
    ILLUME2_TRACE ("[ILLUME2-NEW] %s(%d)... LAYOUT_DUAL_LEFT... bd_info's border = %x, client win = 0x%07x\n", __func__, __LINE__, bd_info->border, bd_info->border->client.win);
 
@@ -3612,10 +3750,17 @@ _policy_zone_layout_app_dual_left_new (E_Illume_Border_Info* bd_info, E_Illume_C
 
    /* resize if needed */
    if ((bd->w != nw) || (bd->h != kh))
-      _policy_border_resize(bd, nw, kh);
+     resize = EINA_TRUE;
 
    /* move to correct position (relative to zone) if needed */
    if ((bd->x != nx) || (bd->y != ky))
+     move = EINA_TRUE;
+
+   if (resize && move)
+     e_border_move_resize(bd, nx, ky, nw, kh);
+   else if (resize)
+     _policy_border_resize(bd, nw, kh);
+   else if (move)
      _policy_border_move(bd, nx, ky);
 
    /* set layer if needed */
@@ -3629,6 +3774,8 @@ _policy_zone_layout_app_dual_custom_new (E_Illume_Border_Info* bd_info, E_Illume
    E_Border* bd;
    E_Border *app;
    int iy, ny, nh;
+   Eina_Bool resize = EINA_FALSE;
+   Eina_Bool move = EINA_FALSE;
 
    ILLUME2_TRACE ("[ILLUME2-NEW] %s(%d)... LAYOUT_DUAL_CUSTOM... bd_info's border = %x, client win = 0x%07x\n", __func__, __LINE__, bd_info->border, bd_info->border->client.win);
 
@@ -3660,11 +3807,18 @@ _policy_zone_layout_app_dual_custom_new (E_Illume_Border_Info* bd_info, E_Illume
 
    /* make sure it's the required width & height */
    if ((bd->w != bd->zone->w) || (bd->h != nh))
-      _policy_border_resize(bd, bd->zone->w, nh);
+     resize = EINA_TRUE;
 
    /* move to correct position (relative to zone) if needed */
    if ((bd->x != bd->zone->x) || (bd->y != ny))
-      _policy_border_move(bd, bd->zone->x, ny);
+     move = EINA_TRUE;
+
+   if (resize && move)
+     e_border_move_resize(bd, bd->zone->x, ny, bd->zone->w, nh);
+   else if (resize)
+     _policy_border_resize(bd, bd->zone->w, nh);
+   else if (move)
+     _policy_border_move(bd, bd->zone->x, ny);
 
    /* set layer if needed */
    if (bd->layer != POL_APP_LAYER)
@@ -4052,7 +4206,6 @@ _policy_border_indicator_control(E_Border *indi_bd)
                        if (indi_bd->zone != bd->zone) continue;
                        if (e_illume_border_is_indicator(bd)) continue;
                        if (e_illume_border_is_keyboard(bd)) continue;
-                       if (e_illume_border_is_keyboard_sub(bd)) continue;
                        if (bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) continue;
 
                        if (!_policy_border_indicator_state_change(indi_bd, bd))
@@ -4095,7 +4248,8 @@ _policy_check_transient_child_visible(E_Border *bd)
 {
    Eina_Bool ret = EINA_FALSE;
    E_Illume_XWin_Info *child_xwin_info = NULL;
-   E_Border *l, *child = NULL;
+   Eina_List *l;
+   E_Border *child = NULL;
 
    EINA_LIST_FOREACH(bd->transients, l, child)
      {
@@ -4167,7 +4321,7 @@ _policy_calculate_visibility(void)
         if (xwin_info->attr.input_only) continue;
 
         // skip "unmap" window
-        if ((xwin_info->attr.visible == 0) &&
+        if ((xwin_info->viewable == 0) &&
             (xwin_info->iconify_by_wm == 0)) continue;
 
         if (!xwin_info->is_drawed) continue;
@@ -4272,6 +4426,7 @@ _policy_calculate_visibility(void)
 #ifdef USE_DLOG
              LOGD("[WM] SEND VISIBILITY. win:0x%07x (old:%d -> new:%d)", xwin_info->bd_info->border->client.win, old_vis, xwin_info->visibility);
 #endif
+             L(LT_VISIBILITY, "[ILLUME2][VISIBILITY] SEND VISIBILITY NOTIFY (Line:%d)... win:0x%07x (old:%d -> new:%d)\n", __LINE__, bd->client.win, old_vis, xwin_info->visibility);
              _policy_send_visibility_notify(bd->client.win, xwin_info->visibility);
 
              if (xwin_info->visibility == E_ILLUME_VISIBILITY_UNOBSCURED)
@@ -4408,6 +4563,8 @@ _policy_xwin_info_add (Ecore_X_Window win)
         return EINA_FALSE;
      }
 
+   xwin_info->viewable = xwin_info->attr.viewable;
+
    bd = e_border_find_by_window (win);
    xwin_info->bd_info = _policy_get_border_info(bd);
    xwin_info->argb = ecore_x_window_argb_get (win);
@@ -4485,7 +4642,7 @@ void _policy_window_show (Ecore_X_Event_Window_Show *event)
         return ;
      }
 
-   xwin_info->attr.visible = 1;
+   xwin_info->viewable = EINA_TRUE;
 
    if (xwin_info->comp_vis)
      {
@@ -4506,7 +4663,7 @@ void _policy_window_hide (Ecore_X_Event_Window_Hide *event)
         return;
      }
 
-   xwin_info->attr.visible = 0;
+   xwin_info->viewable = EINA_FALSE;
 
    L(LT_VISIBILITY, "[ILLUME2][VISIBILITY] %s(%d).. visibility is changed... win:0x%07x\n",  __func__, __LINE__, event->win);
    _g_visibility_changed = EINA_TRUE;
@@ -4522,6 +4679,7 @@ void _policy_window_configure (Ecore_X_Event_Window_Configure *event)
    E_Illume_XWin_Info* temp_xwin_info;
    E_Illume_XWin_Info* target_xwin_info;
    int check_visibility;
+   int changed_size;
    Ecore_X_Window target_win;
 
    L (LT_XWIN, "[ILLUME2][XWIN] %s(%d).. win:0x%07x...\n", __func__, __LINE__, event->win);
@@ -4530,6 +4688,7 @@ void _policy_window_configure (Ecore_X_Event_Window_Configure *event)
    old_above_xwin_info = NULL;
    new_above_xwin_info = NULL;
    check_visibility = 0;
+   changed_size = 0;
    target_win = event->win;
 
    xwin_info = _policy_xwin_info_find (event->win);
@@ -4541,10 +4700,17 @@ void _policy_window_configure (Ecore_X_Event_Window_Configure *event)
    target_xwin_info = xwin_info;
 
    if ((xwin_info->attr.x != event->x) ||
-       (xwin_info->attr.y != event->y) ||
-       (xwin_info->attr.w != event->w) ||
+       (xwin_info->attr.y != event->y))
+     {
+        check_visibility = 1;
+     }
+
+   if ((xwin_info->attr.w != event->w) ||
        (xwin_info->attr.h != event->h))
-      check_visibility = 1;
+     {
+        changed_size = 1;
+        check_visibility = 1;
+     }
 
    xwin_info->attr.x = event->x;
    xwin_info->attr.y = event->y;
@@ -4579,16 +4745,28 @@ void _policy_window_configure (Ecore_X_Event_Window_Configure *event)
 
    _e_illume_xwin_info_list = eina_inlist_remove (_e_illume_xwin_info_list, EINA_INLIST_GET(xwin_info));
    if (new_above_xwin_info)
-      _e_illume_xwin_info_list = eina_inlist_append_relative (_e_illume_xwin_info_list, EINA_INLIST_GET(xwin_info), EINA_INLIST_GET(new_above_xwin_info));
+     _e_illume_xwin_info_list = eina_inlist_append_relative (_e_illume_xwin_info_list, EINA_INLIST_GET(xwin_info), EINA_INLIST_GET(new_above_xwin_info));
    else
-      _e_illume_xwin_info_list = eina_inlist_prepend (_e_illume_xwin_info_list, EINA_INLIST_GET(xwin_info));
+     _e_illume_xwin_info_list = eina_inlist_prepend (_e_illume_xwin_info_list, EINA_INLIST_GET(xwin_info));
 
    if (check_visibility == 1)
      {
-        if (target_xwin_info->attr.visible)
+        if (target_xwin_info->viewable)
           {
              if (target_xwin_info->comp_vis)
                {
+                  if (changed_size)
+                    {
+                       L(LT_VISIBILITY, "[ILLUME2][VISIBILITY] %s(%d).. SIZE is changed... target win:0x%07x\n",  __func__, __LINE__, target_xwin_info->id);
+                       target_xwin_info->is_drawed = EINA_FALSE;
+                       return;
+                    }
+
+                  L(LT_VISIBILITY, "[ILLUME2][VISIBILITY] %s(%d).. visibility is changed... win:0x%07x\n",  __func__, __LINE__, event->win);
+                  _g_visibility_changed = EINA_TRUE;
+               }
+             else if (target_xwin_info->iconify_by_wm)
+               {
                   L(LT_VISIBILITY, "[ILLUME2][VISIBILITY] %s(%d).. visibility is changed... win:0x%07x\n",  __func__, __LINE__, event->win);
                   _g_visibility_changed = EINA_TRUE;
                }
@@ -4642,9 +4820,34 @@ void _policy_window_configure_request (Ecore_X_Event_Window_Configure_Request *e
      }
 }
 
-void _policy_window_sync_draw_done (Ecore_X_Event_Client_Message* event)
+void _policy_window_sync_draw_done(Ecore_X_Event_Client_Message* event)
 {
    E_Border* bd;
+   E_Illume_XWin_Info *xwin_info;
+   Ecore_X_Window win;
+
+   win = event->data.l[0];
+   bd = e_border_find_by_client_window(win);
+   if (!bd) return;
+
+   xwin_info = _policy_xwin_info_find(bd->win);
+   if (!xwin_info) return;
+
+   if (!xwin_info->is_drawed)
+     {
+        if (xwin_info->comp_vis)
+          {
+             xwin_info->is_drawed = EINA_TRUE;
+             L(LT_VISIBILITY, "[ILLUME2][VISIBILITY] %s(%d).. visibility is changed... win:0x%07x\n",  __func__, __LINE__, event->win);
+             _g_visibility_changed = EINA_TRUE;
+          }
+        else if (xwin_info->iconify_by_wm)
+          {
+             xwin_info->is_drawed = EINA_TRUE;
+             L(LT_VISIBILITY, "[ILLUME2][VISIBILITY] %s(%d).. visibility is changed... win:0x%07x\n",  __func__, __LINE__, event->win);
+             _g_visibility_changed = EINA_TRUE;
+          }
+     }
 }
 
 /* Setting window mode requires window stack change and window geometry
@@ -4685,7 +4888,7 @@ void _policy_illume_win_state_change_request (Ecore_X_Event_Client_Message *even
 
    ELBF(ELBT_ILLUME, 0, event->win,
         "GET WIN_STATE_CHANGE_REQ bd:0x%08x(%d->%d) counter:0x%08x val:%d",
-        bd ? bd->client.win : NULL,
+        bd ? bd->client.win : (unsigned int)NULL,
         bd ? bd->client.illume.win_state.state : 0,
         state,
         counter, val);
@@ -4767,7 +4970,6 @@ _policy_change_root_angle_by_border_angle (E_Border* bd)
    // ignore the angle of special borders - like indicator, keyboard, quickpanel, etc.
    if (e_illume_border_is_indicator(bd)) return;
    if (e_illume_border_is_keyboard(bd)) return;
-   if (e_illume_border_is_keyboard_sub(bd)) return;
    if (e_illume_border_is_quickpanel(bd)) return;
    if (e_illume_border_is_quickpanel_popup(bd)) return;
 
@@ -4937,6 +5139,8 @@ _policy_zone_layout_app_single_monitor(E_Illume_Border_Info* bd_info, E_Illume_C
 {
    E_Border* bd;
    int layer;
+   Eina_Bool resize = EINA_FALSE;
+   Eina_Bool move = EINA_FALSE;
 
    bd = bd_info->border;
    if (!bd)
@@ -5009,9 +5213,16 @@ _policy_zone_layout_app_single_monitor(E_Illume_Border_Info* bd_info, E_Illume_C
           }
 
         if ((bd->x != new_x) || (bd->y != new_y))
-          _policy_border_move(bd, new_x, new_y);
+          move = EINA_TRUE;
 
         if ((bd->w != new_w) || (bd->h != new_h))
+          resize = EINA_TRUE;
+
+        if (move && resize)
+          e_border_move_resize(bd, new_x, new_y, new_w, new_h);
+        else if (move)
+          _policy_border_move(bd, new_x, new_y);
+        else if (resize)
           _policy_border_resize(bd, new_w, new_h);
      }
    else
@@ -5025,15 +5236,32 @@ _policy_zone_layout_app_single_monitor(E_Illume_Border_Info* bd_info, E_Illume_C
                     {
                        if ((bd->x != bd_info->resize_req.mouse.x) ||
                            (bd->y != bd_info->resize_req.mouse.y))
-                         _policy_border_move(bd,
-                                             bd_info->resize_req.mouse.x,
-                                             bd_info->resize_req.mouse.y);
+                         move = EINA_TRUE;
 
                        if ((bd->w != bd_info->resize_req.mouse.w) ||
                            (bd->h != bd_info->resize_req.mouse.h))
-                         _policy_border_resize(bd,
-                                               bd_info->resize_req.mouse.w,
-                                               bd_info->resize_req.mouse.h);
+                         resize = EINA_TRUE;
+
+                       if (move && resize)
+                         {
+                            e_border_move_resize(bd,
+                                                 bd_info->resize_req.mouse.x,
+                                                 bd_info->resize_req.mouse.y,
+                                                 bd_info->resize_req.mouse.w,
+                                                 bd_info->resize_req.mouse.h);
+                         }
+                       else if (move)
+                         {
+                            _policy_border_move(bd,
+                                                bd_info->resize_req.mouse.x,
+                                                bd_info->resize_req.mouse.y);
+                         }
+                       else if (resize)
+                         {
+                            _policy_border_resize(bd,
+                                                  bd_info->resize_req.mouse.w,
+                                                  bd_info->resize_req.mouse.h);
+                         }
 
                        bd_info->resize_req.need_change = 0;
                        L(LT_AIA, "[ILLUME2][AIA] %s(%d)... bd move resize... (%d, %d, %d, %d)\n", __func__, __LINE__, bd->x, bd->y, bd->w, bd->h);
@@ -5061,15 +5289,33 @@ _policy_zone_layout_app_single_monitor(E_Illume_Border_Info* bd_info, E_Illume_C
                {
                   if ((bd->x != bd_info->resize_req.mouse.x) ||
                       (bd->y != bd_info->resize_req.mouse.y))
-                    _policy_border_move(bd,
-                                        bd_info->resize_req.mouse.x,
-                                        bd_info->resize_req.mouse.y);
+                    move = EINA_TRUE;
 
                   if ((bd->w != bd_info->resize_req.mouse.w) ||
                       (bd->h != bd_info->resize_req.mouse.h))
-                    _policy_border_resize(bd,
-                                          bd_info->resize_req.mouse.w,
-                                          bd_info->resize_req.mouse.h);
+                    resize = EINA_TRUE;
+
+                  if (move && resize)
+                    {
+                       e_border_move_resize(bd,
+                                            bd_info->resize_req.mouse.x,
+                                            bd_info->resize_req.mouse.y,
+                                            bd_info->resize_req.mouse.w,
+                                            bd_info->resize_req.mouse.h);
+                    }
+                  else if (move)
+                    {
+                       _policy_border_move(bd,
+                                           bd_info->resize_req.mouse.x,
+                                           bd_info->resize_req.mouse.y);
+                    }
+                  else if (resize)
+                    {
+                       _policy_border_resize(bd,
+                                             bd_info->resize_req.mouse.w,
+                                             bd_info->resize_req.mouse.h);
+                    }
+
                   L(LT_AIA, "[ILLUME2][AIA] %s(%d)... bd move resize... (%d, %d, %d, %d)\n", __func__, __LINE__, bd->x, bd->y, bd->w, bd->h);
                   bd_info->resize_req.need_change = 0;
                }
@@ -5199,7 +5445,6 @@ static void _policy_border_root_angle_control(E_Zone *zone)
                        if (bd->zone != zone) continue;
                        if (e_illume_border_is_indicator(bd)) continue;
                        if (e_illume_border_is_keyboard(bd)) continue;
-                       if (e_illume_border_is_keyboard_sub(bd)) continue;
                        if (e_illume_border_is_quickpanel(bd)) continue;
                        if (e_illume_border_is_quickpanel_popup(bd)) continue;
                        if (bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) continue;
@@ -5448,7 +5693,7 @@ _policy_border_iconify_by_illume(E_Illume_XWin_Info *xwin_info)
    if (e_illume_border_is_clipboard(bd)) return;
    if (e_illume_border_is_app_tray(bd)) return;
    if (e_illume_border_is_miniapp_tray(bd)) return;
-   if (bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) return;
+//   if (bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) return;
 
    xwin_info->iconify_by_wm = 1;
 
@@ -5600,7 +5845,7 @@ static E_Border* _policy_border_find_below(E_Border *bd)
                        if ((!xwin_info->argb) ||
                            (xwin_info->argb && xwin_info->bd_info->opaque))
                          {
-                            L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d)... ALREADY FULLY-OBSCURED... by win:0x%07x visible:%d (visibility:%d)\n", __func__, __LINE__, b->client.win, b->visible, xwin_info->visibility);
+                            L(LT_ICONIFY, "[ILLUME2][ICONIFY] %s(%d)... win:0x%07x, ALREADY FULLY-OBSCURED... by win:0x%07x visible:%d (visibility:%d)\n", __func__, __LINE__, bd->client.win, b->client.win, b->visible, xwin_info->visibility);
                             break;
                          }
                     }
index 2eb1bb7..2ebab83 100644 (file)
@@ -96,6 +96,7 @@ struct _E_Illume_XWin_Info
    Eina_Bool iconify_by_wm;
    Eina_Bool comp_vis;
    Eina_Bool is_drawed;
+   Eina_Bool viewable : 1;             // map state
    E_Illume_Border_Info* bd_info;
 };
 
index 4398043..b3b0f99 100644 (file)
@@ -38,8 +38,6 @@ module_la_SOURCES      = e_mod_main.c \
                          e_mod_move_util.h \
                          e_mod_move_indicator.c \
                          e_mod_move_indicator.h \
-                         e_mod_move_indicator_controller.c \
-                         e_mod_move_indicator_controller.h \
                          e_mod_move_apptray.c \
                          e_mod_move_apptray.h \
                          e_mod_move_quickpanel.c \
index 4802987..3f8221c 100644 (file)
@@ -163,6 +163,8 @@ _e_mod_move_mouse_btn_dn(void    *data,
                   // if log list is full, delete first log
                   E_Move_Event_Log *first_log = (E_Move_Event_Log*)eina_list_nth(m->ev_logs, 0);
                   m->ev_logs = eina_list_remove(m->ev_logs, first_log);
+                  memset(first_log, 0, sizeof(E_Move_Event_Log));
+                  E_FREE(first_log);
                }
              m->ev_logs = eina_list_append(m->ev_logs, log);
           }
@@ -214,6 +216,8 @@ _e_mod_move_mouse_btn_up(void    *data,
                   // if log list is full, delete first log
                   E_Move_Event_Log *first_log = (E_Move_Event_Log*)eina_list_nth(m->ev_logs, 0);
                   m->ev_logs = eina_list_remove(m->ev_logs, first_log);
+                  memset(first_log, 0, sizeof(E_Move_Event_Log));
+                  E_FREE(first_log);
                }
              m->ev_logs = eina_list_append(m->ev_logs, log);
           }
@@ -260,7 +264,7 @@ _e_mod_move_property(void *data  __UNUSED__,
      _e_mod_move_prop_indicator_geometry(ev);
    else if (a == ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE)
      _e_mod_move_prop_indicator_type(ev);
-   else if (a == ATOM_MV_APPTRAY_STATE)
+   else if (a == ATOM_MV_MINI_APPTRAY_STATE)
      _e_mod_move_prop_mini_apptray_state(ev);
 
    return ECORE_CALLBACK_PASS_ON;
@@ -306,7 +310,6 @@ _e_mod_move_visibility_change(void *data __UNUSED__,
                               void      *event)
 {
    Ecore_X_Window win;
-   Ecore_X_Window target_win;
    E_Move_Border *mb = NULL;
    int fully_obscured;
    Ecore_X_Event_Window_Visibility_Change *ev;
@@ -328,23 +331,10 @@ _e_mod_move_visibility_change(void *data __UNUSED__,
    if (fully_obscured)
      {
         mb->visibility = E_MOVE_VISIBILITY_STATE_FULLY_OBSCURED;
-
-        if (e_mod_move_indicator_controller_unset_policy_check(mb))
-          e_mod_move_indicator_controller_unset(mb->m);
-
      }
    else
      {
         mb->visibility = E_MOVE_VISIBILITY_STATE_VISIBLE;
-
-        if (e_mod_move_indicator_controller_set_policy_check(mb))
-          {
-             if (e_mod_move_indicator_controller_state_get(mb->m, &target_win))
-               e_mod_move_indicator_controller_unset(mb->m);
-
-             e_mod_move_indicator_controller_set(mb);
-          }
-
      }
 
    return ECORE_CALLBACK_PASS_ON;
@@ -469,6 +459,11 @@ _e_mod_move_bd_move(void *data __UNUSED__,
 
    E_CHECK_RETURN(ev, ECORE_CALLBACK_PASS_ON);
    E_CHECK_RETURN(ev->border, ECORE_CALLBACK_PASS_ON);
+
+   ELBF(ELBT_MOVE, 0, ev->border->win,
+        "%15.15s| BD_MOVE w:0x%08x c:0x%08x ev[%d,%d]",
+        "MOVE", ev->border->win, ev->border->client.win, ev->border->x, ev->border->y);
+
    mb = _e_mod_move_border_find(ev->border->win);
    E_CHECK_RETURN(m, ECORE_CALLBACK_PASS_ON);
    E_CHECK_RETURN(mb, ECORE_CALLBACK_PASS_ON);
@@ -552,12 +547,19 @@ _e_mod_move_bd_stack(void *data __UNUSED__,
                "[MOVE] ev:%15.15s w1:0x%08x c1:0x%08x w2:0x%08x c2:0x%08x\n",
                "BD_RAISE_ABOVE", ev->border->win, ev->border->client.win,
                ev->stack->win, ev->stack->client.win);
+             ELBF(ELBT_MOVE, 0, ev->border->win,
+                  "%15.15s| BD_RAISE_ABOVE w1:0x%08x c1:0x%08x w2:0x%08x c2:0x%08x",
+                  "MOVE", ev->border->win, ev->border->client.win,
+                  ev->stack->win, ev->stack->client.win);
           }
         else
           {
              L(LT_EVENT_BD,
                "[MOVE] ev:%15.15s w:0x%08x c:0x%08x\n",
                "BD_LOWER", ev->border->win, ev->border->client.win);
+             ELBF(ELBT_MOVE, 0, ev->border->win,
+                  "%15.15s| BD_LOWER w:0x%08x c:0x%08x",
+                  "MOVE", ev->border->win, ev->border->client.win);
           }
      }
    else if (ev->type == E_STACKING_BELOW)
@@ -568,12 +570,19 @@ _e_mod_move_bd_stack(void *data __UNUSED__,
                "[MOVE] ev:%15.15s w1:0x%08x c1:0x%08x w2:0x%08x c2:0x%08x\n",
                "BD_LOWER_BELOW", ev->border->win, ev->border->client.win,
                ev->stack->win, ev->stack->client.win);
+             ELBF(ELBT_MOVE, 0, ev->border->win,
+                  "%15.15s| BD_LOWER_BELOW w1:0x%08x c1:0x%08x w2:0x%08x c2:0x%08x",
+                  "MOVE", ev->border->win, ev->border->client.win,
+                  ev->stack->win, ev->stack->client.win);
           }
         else
           {
              L(LT_EVENT_BD,
                "[MOVE] ev:%15.15s w:0x%08x c:0x%08x\n",
                "BD_RAISE", ev->border->win, ev->border->client.win);
+             ELBF(ELBT_MOVE, 0, ev->border->win,
+                  "%15.15s| BD_RAISE w:0x%08x c:0x%08x",
+                  "MOVE", ev->border->win, ev->border->client.win);
           }
      }
 
@@ -618,6 +627,9 @@ _e_mod_move_bd_new_hook(void *data __UNUSED__,
    L(LT_EVENT_BD,
      "[MOVE] ev:%15.15s w:0x%08x c:0x%08x\n", "BD_NEW_HOOK",
      bd->win, bd->client.win);
+   ELBF(ELBT_MOVE, 0, bd->win,
+        "%15.15s| BD_NEW_HOOK w:0x%08x c:0x%08x",
+        "MOVE", bd->win, bd->client.win);
 
    if (_e_mod_move_border_find(bd->win)) return;
 
@@ -635,6 +647,9 @@ _e_mod_move_bd_del_hook(void *data __UNUSED__,
    L(LT_EVENT_BD,
      "[MOVE] ev:%15.15s w:0x%08x c:0x%08x\n", "BD_DEL_HOOK",
      bd->win, bd->client.win);
+   ELBF(ELBT_MOVE, 0, bd->win,
+        "%15.15s| BD_DEL_HOOK w:0x%08x c:0x%08x",
+        "MOVE", bd->win, bd->client.win);
 
    // border is not processed by _e_border_eval()
    //  - case: bd_new -> bd_del
@@ -660,68 +675,98 @@ _e_mod_move_e_msg_handler(void       *data,
    E_Move *m = e_mod_move_util_get();
    E_Manager *man = (E_Manager *)obj;
    E_Manager_Comp_Source *src = (E_Manager_Comp_Source *)msgdata;
+   E_Move_Mini_Apptray_Widget *mini_apptray_widget = NULL;
+   E_Move_Indicator_Widget *indi_widget = NULL;
 
    L(LT_EVENT_X, "[MOVE] ev:E_MSG '%s':'%s'\n", name, info);
    E_CHECK(m);
 
    // handle only comp.manager msg
-   if (strncmp(name, "comp.manager", sizeof("comp.manager"))) return;
-
-   if (!strncmp(info, "resize.comp", sizeof("resize.comp")))
+   if (!strncmp(name, "comp.manager", sizeof("comp.manager")))
      {
-        L(LT_EVENT_X,
-          "[MOVE] ev:E_MSG %15.15s w:0x%08x manager: %p, comp_src: %p\n",
-          info, e_manager_comp_src_window_get(man,src), man, src);
-     }
-   else if (!strncmp(info, "add.src", sizeof("add.src")))
-     {
-        L(LT_EVENT_X,
-          "[MOVE] ev:E_MSG %15.15s w:0x%08x manager: %p, comp_src: %p\n",
-          info, e_manager_comp_src_window_get(man,src), man, src);
-     }
-   else if (!strncmp(info, "del.src", sizeof("del.src")))
-     {
-        L(LT_EVENT_X,
-          "[MOVE] ev:E_MSG %15.15s w:0x%08x manager: %p, comp_src: %p\n",
-          info, e_manager_comp_src_window_get(man,src), man, src);
-     }
-   else if (!strncmp(info, "config.src", sizeof("config.src")))
-     {
-        L(LT_EVENT_X,
-          "[MOVE] ev:E_MSG %15.15s w:0x%08x manager: %p, comp_src: %p\n",
-          info, e_manager_comp_src_window_get(man,src), man, src);
-        // if Quickpanel is OnScreen then move quickpanel's below window with animation position.
-        if (e_mod_move_quickpanel_visible_check()
-            && !m->qp_scroll_with_clipping
-            && !e_mod_move_quickpanel_objs_animation_state_get(e_mod_move_quickpanel_find()))
+        if (!strncmp(info, "resize.comp", sizeof("resize.comp")))
+          {
+             L(LT_EVENT_X,
+               "[MOVE] ev:E_MSG %15.15s w:0x%08x manager: %p, comp_src: %p\n",
+               info, e_manager_comp_src_window_get(man,src), man, src);
+          }
+        else if (!strncmp(info, "add.src", sizeof("add.src")))
+          {
+             L(LT_EVENT_X,
+               "[MOVE] ev:E_MSG %15.15s w:0x%08x manager: %p, comp_src: %p\n",
+               info, e_manager_comp_src_window_get(man,src), man, src);
+          }
+        else if (!strncmp(info, "del.src", sizeof("del.src")))
+          {
+             L(LT_EVENT_X,
+               "[MOVE] ev:E_MSG %15.15s w:0x%08x manager: %p, comp_src: %p\n",
+               info, e_manager_comp_src_window_get(man,src), man, src);
+          }
+        else if (!strncmp(info, "config.src", sizeof("config.src")))
           {
-             e_mod_move_quickpanel_below_window_reset();
-             e_mod_move_quickpanel_objs_move(e_mod_move_quickpanel_find(), 0, 0);
+             L(LT_EVENT_X,
+               "[MOVE] ev:E_MSG %15.15s w:0x%08x manager: %p, comp_src: %p\n",
+               info, e_manager_comp_src_window_get(man,src), man, src);
+             // if Quickpanel is OnScreen then move quickpanel's below window with animation position.
+             if (e_mod_move_quickpanel_visible_check()
+                 && !m->qp_scroll_with_clipping
+                 && !e_mod_move_quickpanel_objs_animation_state_get(e_mod_move_quickpanel_find()))
+               {
+                  e_mod_move_quickpanel_below_window_reset();
+                  e_mod_move_quickpanel_objs_move(e_mod_move_quickpanel_find(), 0, 0);
+               }
+
+             // if indicator widget mode, then apply indicator widget visibility, position
+             if (m->elm_indicator_mode) e_mod_move_indicator_widget_apply();
+
+             e_mod_move_mini_apptray_widget_apply();
           }
+        else if (!strncmp(info, "visibility.src", sizeof("visibility.src")))
+          {
+             L(LT_EVENT_X,
+               "[MOVE] ev:E_MSG %15.15s w:0x%08x manager: %p, comp_src: %p\n",
+               info, e_manager_comp_src_window_get(man,src), man, src);
+             // if Quickpanel is OnScreen then move quickpanel's below window with animation position.
+             if (e_mod_move_quickpanel_visible_check()
+                 && !m->qp_scroll_with_clipping
+                 && !e_mod_move_quickpanel_objs_animation_state_get(e_mod_move_quickpanel_find()))
+               {
+                  e_mod_move_quickpanel_below_window_reset();
+                  e_mod_move_quickpanel_objs_move(e_mod_move_quickpanel_find(), 0, 0);
+               }
 
-        // if indicator widget mode, then apply indicator widget visibility, position
-        if (m->elm_indicator_mode) e_mod_move_indicator_widget_apply();
+             // if indicator widget mode, then apply indicator widget visibility, position
+             if (m->elm_indicator_mode) e_mod_move_indicator_widget_apply();
 
-        e_mod_move_mini_apptray_widget_apply();
+             e_mod_move_mini_apptray_widget_apply();
+          }
      }
-   else if (!strncmp(info, "visibility.src", sizeof("visibility.src")))
+   else if (!strncmp(name, "screen-reader", sizeof("screen-reader")))
      {
-        L(LT_EVENT_X,
-          "[MOVE] ev:E_MSG %15.15s w:0x%08x manager: %p, comp_src: %p\n",
-          info, e_manager_comp_src_window_get(man,src), man, src);
-        // if Quickpanel is OnScreen then move quickpanel's below window with animation position.
-        if (e_mod_move_quickpanel_visible_check()
-            && !m->qp_scroll_with_clipping
-            && !e_mod_move_quickpanel_objs_animation_state_get(e_mod_move_quickpanel_find()))
+        if (!strncmp(info, "enable", sizeof("enable")))
           {
-             e_mod_move_quickpanel_below_window_reset();
-             e_mod_move_quickpanel_objs_move(e_mod_move_quickpanel_find(), 0, 0);
-          }
+             L(LT_EVENT_X, "[MOVE] ev:E_MSG [%s:%s]\n", name, info);
+             if (!m->screen_reader_state) // if screen-reader is not activate then work.
+               {
+                  m->screen_reader_state = EINA_TRUE;
 
-        // if indicator widget mode, then apply indicator widget visibility, position
-        if (m->elm_indicator_mode) e_mod_move_indicator_widget_apply();
+                  indi_widget = e_mod_move_indicator_widget_get();
+                  if (indi_widget) e_mod_move_indicator_widget_del(indi_widget);
 
-        e_mod_move_mini_apptray_widget_apply();
+                  mini_apptray_widget = e_mod_move_mini_apptray_widget_get();
+                  if (mini_apptray_widget) e_mod_move_mini_apptray_widget_del(mini_apptray_widget);
+               }
+          }
+        else if (!strncmp(info, "disable", sizeof("disable")))
+          {
+             L(LT_EVENT_X, "[MOVE] ev:E_MSG [%s:%s]\n", name, info);
+             if (m->screen_reader_state) // if screen-reader is activate then work.
+               {
+                  m->screen_reader_state = EINA_FALSE;
+                  if (m->elm_indicator_mode) e_mod_move_indicator_widget_apply();
+                  e_mod_move_mini_apptray_widget_apply();
+               }
+          }
      }
 }
 
@@ -761,11 +806,16 @@ _e_mod_move_bd_add_intern(E_Move_Border *mb)
    int x = 0; int y = 0; int w = 0; int h = 0;
    int                       angles[2];
    E_Move                   *m = e_mod_move_util_get();
+   E_Border                 *bd = NULL;
 
    E_CHECK(mb);
    E_CHECK(m);
 
+   bd = mb->bd;
+   E_CHECK(bd);
+
    e_mod_move_border_type_setup(mb);
+   mb->argb = ecore_x_window_argb_get(bd->win);
 
    // Add Move Control Object
    _e_mod_move_ctl_obj_add(mb);
@@ -843,14 +893,16 @@ _e_mod_move_bd_add_intern(E_Move_Border *mb)
 
    // if current window is Indicator, then get indicator_geometry_property.
    if (TYPE_INDICATOR_CHECK(mb))
-     _e_mod_move_prop_indicator_geometry_get(win, m);
+     {
+        e_mod_move_util_prop_indicator_cmd_win_set(win, m);
+        _e_mod_move_prop_indicator_geometry_get(win, m);
+     }
 }
 
 static void
 _e_mod_move_bd_del_intern(E_Move_Border *mb)
 {
    E_Move *m = NULL;
-   Ecore_X_Window target_win;
    E_CHECK(mb);
 
    m = e_mod_move_util_get();
@@ -869,23 +921,6 @@ _e_mod_move_bd_del_intern(E_Move_Border *mb)
           }
      }
 
-   if (!m->elm_indicator_mode)
-     {
-        // if indicator destroy and indicator controller is visible then destroy indicator controller
-        if (TYPE_INDICATOR_CHECK(mb))
-          {
-             if (e_mod_move_indicator_controller_state_get(mb->m, &target_win))
-                e_mod_move_indicator_controller_unset(mb->m);
-          }
-     }
-
-   // if indicator controller target win is destroy then destroy indicator controller
-   if (e_mod_move_indicator_controller_state_get(mb->m, &target_win))
-     {
-        if (mb->client_win == target_win)
-          e_mod_move_indicator_controller_unset(mb->m);
-     }
-
    if (mb->shape_input) e_mod_move_border_shape_input_free(mb);
    if (mb->contents) e_mod_move_border_contents_free(mb);
    if (mb->anim_data) _e_mod_move_bd_anim_data_del(mb);
@@ -977,18 +1012,6 @@ _e_mod_move_bd_move_resize_intern(E_Move_Border *mb,
                                               mb->y + shape_input_y);
           }
      }
-
-   if (!m->elm_indicator_mode)
-     {
-        // update indicator_contoller's evas_object size & shape mask region
-        if (TYPE_INDICATOR_CHECK(mb))
-          {
-             Ecore_X_Window target_win;
-             if (e_mod_move_indicator_controller_state_get(mb->m, &target_win))
-                e_mod_move_indicator_controller_update(mb->m);
-          }
-     }
-
 }
 
 static void
@@ -1301,7 +1324,7 @@ _e_mod_move_prop_mini_apptray_state_get(Ecore_X_Window             win,
    E_CHECK_RETURN(state, EINA_FALSE);
 
    ret = ecore_x_window_prop_card32_get(win,
-                                        ATOM_MV_APPTRAY_STATE,
+                                        ATOM_MV_MINI_APPTRAY_STATE,
                                         &mini_apptray_state,
                                         1);
 
@@ -1601,7 +1624,6 @@ static Eina_Bool
 _e_mod_move_prop_indicator_state(Ecore_X_Event_Window_Property *ev)
 {
    Ecore_X_Window win;
-   Ecore_X_Window target_win;
    Eina_Bool      indicator_state;
    E_Move_Border *mb = NULL;
    E_Move        *m = NULL;
@@ -1620,24 +1642,10 @@ _e_mod_move_prop_indicator_state(Ecore_X_Event_Window_Property *ev)
         if (indicator_state)
           {
              mb->indicator_state = E_MOVE_INDICATOR_STATE_ON;
-
-             if ((!m->elm_indicator_mode)
-                  && e_mod_move_indicator_controller_unset_policy_check(mb))
-               {
-                  e_mod_move_indicator_controller_unset(mb->m);
-               }
           }
         else
           {
              mb->indicator_state = E_MOVE_INDICATOR_STATE_OFF;
-
-             if ((!m->elm_indicator_mode)
-                  &&e_mod_move_indicator_controller_set_policy_check(mb))
-               {
-                  if (e_mod_move_indicator_controller_state_get(mb->m, &target_win))
-                    e_mod_move_indicator_controller_unset(mb->m);
-                  e_mod_move_indicator_controller_set(mb);
-               }
           }
         // control indicator widget state.
         if (m->elm_indicator_mode)
@@ -1709,7 +1717,6 @@ static Eina_Bool
 _e_mod_move_prop_fullscreen_indicator_show_state(Ecore_X_Event_Window_Property *ev)
 {
    Ecore_X_Window win;
-   Ecore_X_Window target_win;
    Eina_Bool      fullscreen_indicator_show_state;
    E_Move_Border *mb = NULL;
    E_Move        *m = NULL;
@@ -1729,24 +1736,10 @@ _e_mod_move_prop_fullscreen_indicator_show_state(Ecore_X_Event_Window_Property *
         if (fullscreen_indicator_show_state)
           {
              mb->fullscreen_indicator_show_state = E_MOVE_FULLSCREEN_INDICATOR_SHOW_STATE_ON;
-
-             if ((!m->elm_indicator_mode)
-                 &&e_mod_move_indicator_controller_set_policy_check(mb))
-               {
-                  if (e_mod_move_indicator_controller_state_get(mb->m, &target_win))
-                    e_mod_move_indicator_controller_unset(mb->m);
-                  e_mod_move_indicator_controller_set(mb);
-               }
           }
         else
           {
              mb->fullscreen_indicator_show_state = E_MOVE_FULLSCREEN_INDICATOR_SHOW_STATE_OFF;
-
-             if ((!m->elm_indicator_mode)
-                 &&e_mod_move_indicator_controller_unset_policy_check(mb))
-               {
-                  e_mod_move_indicator_controller_unset(mb->m);
-               }
           }
      }
 
@@ -1806,28 +1799,6 @@ _e_mod_move_prop_rotate_root_angle(Ecore_X_Event_Window_Property *ev)
    m = e_mod_move_util_get();
    E_CHECK_RETURN(m, EINA_FALSE);
 
-   // if mini_apptray exist, then apply global input region
-   E_CHECK_RETURN(e_mod_move_mini_apptray_find(), EINA_TRUE);
-   E_CHECK_RETURN(e_mod_move_mini_apptray_widget_get(), EINA_TRUE);
-
-   switch (e_mod_move_util_root_angle_get())
-     {
-      case  90:
-      case 180:
-      case 270:
-         // currently, support angle 0 only. because, application is not ready yet.
-         e_manager_comp_input_region_set(m->man, 0, 0, 0, 0);
-         break;
-      case   0:
-      default :
-         e_manager_comp_input_region_set(m->man,
-                                         m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].x,
-                                         m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].y,
-                                         m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].w,
-                                         m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].h);
-         break;
-     }
-
    return EINA_TRUE;
 }
 
@@ -1983,9 +1954,16 @@ _e_mod_move_msg_window_show(Ecore_X_Event_Client_Message *ev)
 
    comp_obj_visible = e_mod_move_util_compositor_object_visible_get(mb);
 
-   if (REGION_INSIDE_ZONE(mb, zone)) state = EINA_TRUE;
-   else state = EINA_FALSE;
-
+   if (open)
+     {
+        if (mb->visibility == E_MOVE_VISIBILITY_STATE_VISIBLE) state = EINA_TRUE;
+        else state = EINA_FALSE;
+     }
+   else
+     {
+         if (REGION_INSIDE_ZONE(mb, zone)) state = EINA_TRUE;
+         else state = EINA_FALSE;
+     }
    if ((!m->elm_indicator_mode)
        && e_mod_move_indicator_click_get())
      {
@@ -2032,7 +2010,7 @@ _e_mod_move_msg_window_show(Ecore_X_Event_Client_Message *ev)
      {
         if (mb == qp_mb) // Quickpanel Case
           {
-             if ((at_mb) && (REGION_INSIDE_ZONE(at_mb, mb->bd->zone)))
+             if ((at_mb) && (at_mb->visibility == E_MOVE_VISIBILITY_STATE_VISIBLE))
                {
                   L(LT_EVENT_X,
                     "[MOVE] ev:%15.15s _NET_WM_WINDOW_SHOW error. w:0x%07x(state:%d) request:%d, Apptray in On Screen\n",
@@ -2040,6 +2018,14 @@ _e_mod_move_msg_window_show(Ecore_X_Event_Client_Message *ev)
                   return EINA_FALSE;
                }
 
+             if ((mini_at_mb) && (mini_at_mb->visibility == E_MOVE_VISIBILITY_STATE_VISIBLE))
+               {
+                  L(LT_EVENT_X,
+                    "[MOVE] ev:%15.15s _NET_WM_WINDOW_SHOW error. w:0x%07x(state:%d) request:%d, Mini Apptray in On Screen\n",
+                    "X_CLIENT_MESSAGE", win, state, open);
+                  return EINA_FALSE;
+               }
+
              if ((fullscr_mb = e_mod_move_util_visible_fullscreen_window_find()))
                {
                   E_CHECK_RETURN(e_mod_move_panel_scrollable_get(fullscr_mb, E_MOVE_PANEL_TYPE_QUICKPANEL), EINA_FALSE);
@@ -2118,7 +2104,7 @@ _e_mod_move_msg_window_show(Ecore_X_Event_Client_Message *ev)
           }
         else if (mb == at_mb) // Apptray Case
           {
-             if ((qp_mb) && (REGION_INSIDE_ZONE(qp_mb, mb->bd->zone)))
+             if ((qp_mb) && (qp_mb->visibility == E_MOVE_VISIBILITY_STATE_VISIBLE))
                {
                   L(LT_EVENT_X,
                     "[MOVE] ev:%15.15s _NET_WM_WINDOW_SHOW error. w:0x%07x(state:%d) request:%d, Quickpanel in On Screen\n",
@@ -2173,7 +2159,7 @@ _e_mod_move_msg_window_show(Ecore_X_Event_Client_Message *ev)
           }
         else if (mb == mini_at_mb) // MINI_Apptray Case
           {
-             if ((qp_mb) && (REGION_INSIDE_ZONE(qp_mb, mb->bd->zone)))
+             if ((qp_mb) && (qp_mb->visibility == E_MOVE_VISIBILITY_STATE_VISIBLE))
                {
                   L(LT_EVENT_X,
                     "[MOVE] ev:%15.15s _NET_WM_WINDOW_SHOW error. w:0x%07x(state:%d) request:%d, Quickpanel in On Screen\n",
@@ -2181,7 +2167,7 @@ _e_mod_move_msg_window_show(Ecore_X_Event_Client_Message *ev)
                   return EINA_FALSE;
                }
 
-             if ((at_mb) && (REGION_INSIDE_ZONE(at_mb, mb->bd->zone)))
+             if ((at_mb) && (at_mb->visibility == E_MOVE_VISIBILITY_STATE_VISIBLE))
                {
                   L(LT_EVENT_X,
                     "[MOVE] ev:%15.15s _NET_WM_WINDOW_SHOW error. w:0x%07x(state:%d) request:%d, Apptray in On Screen\n",
@@ -2212,9 +2198,14 @@ _e_mod_move_msg_window_show(Ecore_X_Event_Client_Message *ev)
 
              _e_mod_move_msg_window_show_internal_mini_apptray_check(mini_at_mb);
              e_mod_move_mini_apptray_dim_show(mini_at_mb);
-             e_mod_move_mini_apptray_objs_add(mini_at_mb);
-             // mini_apptray_objs_animation_layer_set
-             e_mod_move_mini_apptray_objs_animation_layer_set(mini_at_mb);
+
+             if (REGION_INSIDE_ZONE(mini_at_mb, mini_at_mb->bd->zone))
+               {
+                  e_mod_move_mini_apptray_e_border_move(mini_at_mb, -10000, -10000);
+                  e_mod_move_mini_apptray_objs_add_with_pos(mini_at_mb, -10000, -10000);
+               }
+             else
+                e_mod_move_mini_apptray_objs_add(mini_at_mb);
 
              // send mini_apptray to "move start message".
              LOG(LOG_DEBUG, "WM_WINDOW_SHOW", "[e17:X_CLIENT_MESSAGE:ApptrayShow:ANIMATION_START]");
@@ -2739,7 +2730,10 @@ _e_mod_move_add(E_Manager *man)
    m->indicator_apptray_region_ratio.landscape = _move_mod->conf->indicator_apptray_landscape_region_ratio;
    m->qp_scroll_with_visible_win = _move_mod->conf->qp_scroll_with_visible_win;
    m->qp_scroll_with_clipping = _move_mod->conf->qp_scroll_with_clipping;
-   m->flick_speed_limit = _move_mod->conf->flick_speed_limit;
+   m->flick_limit.speed = _move_mod->conf->flick_limit.speed;
+   m->flick_limit.angle = _move_mod->conf->flick_limit.angle;
+   m->flick_limit.distance = _move_mod->conf->flick_limit.distance;
+   m->flick_limit.distance_rate = _move_mod->conf->flick_limit.distance_rate;
    m->animation_duration = _move_mod->conf->animation_duration;
    m->dim_max_opacity = _move_mod->conf->dim_max_opacity;
    m->dim_min_opacity = _move_mod->conf->dim_min_opacity;
index 3c1eb63..208a2d0 100644 (file)
@@ -664,7 +664,8 @@ e_mod_move_apptray_ctl_obj_event_setup(E_Move_Border         *mb,
                            _e_mod_move_apptray_cb_motion_move, mb);
    e_mod_move_event_cb_set(mco->event, E_MOVE_EVENT_TYPE_MOTION_END,
                            _e_mod_move_apptray_cb_motion_end, mb);
-   e_mod_move_event_send_all_set(mco->event, EINA_TRUE);
+   e_mod_move_event_propagate_type_set(mco->event,
+                                       E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY);
 }
 
 EINTERN E_Move_Border *
@@ -742,6 +743,7 @@ e_mod_move_apptray_objs_add(E_Move_Border *mb)
         e_mod_move_bd_move_objs_move(mb, mb->x, mb->y);
         e_mod_move_bd_move_objs_resize(mb, mb->w, mb->h);
         e_mod_move_bd_move_objs_show(mb);
+        if (mb->objs) e_mod_move_util_rotation_lock(mb->m);
      }
    return EINA_TRUE;
 }
@@ -752,6 +754,7 @@ e_mod_move_apptray_objs_del(E_Move_Border *mb)
    E_CHECK_RETURN(mb, EINA_FALSE);
    E_CHECK_RETURN(TYPE_APPTRAY_CHECK(mb), EINA_FALSE);
    e_mod_move_bd_move_objs_del(mb, mb->objs);
+   e_mod_move_util_rotation_unlock(mb->m);
    mb->objs = NULL;
    return EINA_TRUE;
 }
@@ -993,7 +996,6 @@ e_mod_move_apptray_dim_show(E_Move_Border *mb)
         e_mod_move_bd_move_dim_objs_show(at_data->dim_objs);
         at_data->opacity = dim_min;
         mb->data = at_data;
-        e_mod_move_util_rotation_lock(mb->m);
 
         // it is used for apptray input only window
         _e_mod_move_apptray_bg_touch_win_show(mb);
@@ -1006,8 +1008,6 @@ e_mod_move_apptray_dim_show(E_Move_Border *mb)
              e_mod_move_util_compositor_composite_mode_set(mb->m, EINA_TRUE);
 
              at_data->dim_objs = e_mod_move_bd_move_dim_objs_add(mb);
-             if (at_data->dim_objs)
-                e_mod_move_util_rotation_lock(mb->m);
           }
         if (at_data->dim_objs)
           {
@@ -1046,8 +1046,6 @@ e_mod_move_apptray_dim_hide(E_Move_Border *mb)
    // it is used for apptray input only window
    _e_mod_move_apptray_bg_touch_win_hide(mb);
 
-   e_mod_move_util_rotation_unlock(mb->m);
-
    // Composite mode set false
    e_mod_move_util_compositor_composite_mode_set(mb->m, EINA_FALSE);
 
index 9f31f12..5822424 100644 (file)
@@ -18,6 +18,8 @@ EINTERN Ecore_X_Atom ATOM_MV_QUICKPANEL_STATE              = 0;
 EINTERN Ecore_X_Atom ATOM_CLIENT_PANEL                     = 0;
 EINTERN Ecore_X_Atom ATOM_MV_PANEL_SCROLLABLE_STATE        = 0;
 EINTERN Ecore_X_Atom ATOM_MV_INDICATOR_GEOMETRY            = 0;
+EINTERN Ecore_X_Atom ATOM_INDICATOR_CMD_WIN                = 0;
+EINTERN Ecore_X_Atom ATOM_ACTIVE_INDICATOR_WIN             = 0;
 
 /* local subsystem globals */
 static Eina_Hash *atoms_hash = NULL;
@@ -37,7 +39,9 @@ static const char *atom_names[] = {
   "_E_MOVE_QUICKPANEL_STATE",
   "_NET_CLIENT_PANEL",
   "_E_MOVE_PANEL_SCROLLABLE_STATE",
-  "_E_MOVE_INDICATOR_GEOMETRY"
+  "_E_MOVE_INDICATOR_GEOMETRY",
+  "_E_INDICATOR_CMD_WIN",
+  "_E_ACTIVE_INDICATOR_WIN"
 };
 
 static const char *external_atom_names[] = {
@@ -82,6 +86,8 @@ e_mod_move_atoms_init(void)
    ATOM_CLIENT_PANEL                     = atoms[i++];
    ATOM_MV_PANEL_SCROLLABLE_STATE        = atoms[i++];
    ATOM_MV_INDICATOR_GEOMETRY            = atoms[i++];
+   ATOM_INDICATOR_CMD_WIN                = atoms[i++];
+   ATOM_ACTIVE_INDICATOR_WIN             = atoms[i++];
 
    for (i = 0; i < n; i++)
      {
index 6f021a7..848c056 100644 (file)
@@ -18,6 +18,8 @@ extern EINTERN Ecore_X_Atom ATOM_MV_QUICKPANEL_STATE;
 extern EINTERN Ecore_X_Atom ATOM_CLIENT_PANEL;
 extern EINTERN Ecore_X_Atom ATOM_MV_PANEL_SCROLLABLE_STATE;
 extern EINTERN Ecore_X_Atom ATOM_MV_INDICATOR_GEOMETRY;
+extern EINTERN Ecore_X_Atom ATOM_INDICATOR_CMD_WIN;
+extern EINTERN Ecore_X_Atom ATOM_ACTIVE_INDICATOR_WIN;
 
 EINTERN int         e_mod_move_atoms_init(void);
 EINTERN int         e_mod_move_atoms_shutdown(void);
index 74780bf..c8493e0 100644 (file)
@@ -31,6 +31,9 @@
 #define TYPE_PWLOCK_CHECK(a) \
    ((a)->type == E_MOVE_BORDER_TYPE_PWLOCK)
 
+#define TYPE_NOTIFICATION_CHECK(a) \
+   ((a)->type == E_MOVE_BORDER_TYPE_NOTIFICATION)
+
 typedef enum _E_Move_Border_Type
 {
    E_MOVE_BORDER_TYPE_UNKNOWN = 0,
index 0856aa8..2a402d3 100644 (file)
@@ -21,7 +21,10 @@ e_mod_move_cfdata_edd_init(E_Config_DD **conf_edd)
    E_CONFIG_VAL(D, T, qp_scroll_with_clipping, UCHAR);
    E_CONFIG_VAL(D, T, dim_max_opacity, INT);
    E_CONFIG_VAL(D, T, dim_min_opacity, INT);
-   E_CONFIG_VAL(D, T, flick_speed_limit, DOUBLE);
+   E_CONFIG_VAL(D, T, flick_limit.speed, DOUBLE);
+   E_CONFIG_VAL(D, T, flick_limit.angle, DOUBLE);
+   E_CONFIG_VAL(D, T, flick_limit.distance, DOUBLE);
+   E_CONFIG_VAL(D, T, flick_limit.distance_rate, DOUBLE);
    E_CONFIG_VAL(D, T, animation_duration, DOUBLE);
    E_CONFIG_VAL(D, T, event_log, UCHAR);
    E_CONFIG_VAL(D, T, event_log_count, INT);
@@ -79,7 +82,10 @@ e_mod_move_cfdata_config_new(void)
    cfg->qp_scroll_with_clipping = 1;
    cfg->dim_max_opacity = 200;
    cfg->dim_min_opacity = 0;
-   cfg->flick_speed_limit = 200.0;
+   cfg->flick_limit.speed = 200.0;
+   cfg->flick_limit.angle = 0.26; // tangent angle . angle 15's tangent value
+   cfg->flick_limit.distance = 105.0; // sqrt((50 * 50) + (50 * 50)) * 1.5
+   cfg->flick_limit.distance_rate = 0.1; // screen's 10%
    cfg->animation_duration = 0.4;
    cfg->event_log = 1;
    cfg->event_log_count = 600;
@@ -103,20 +109,20 @@ e_mod_move_cfdata_config_new(void)
    cfg->indicator_widget_geometry[E_MOVE_ANGLE_270].h = 1280;
    // mini_apptray widget gemometry setting
    cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].x = 0;
-   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].y = 1230;
+   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].y = 1260;
    cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].w = 720;
-   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].h = 50;
-   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_90].x = 670;
+   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].h = 20;
+   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_90].x = 700;
    cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_90].y = 0;
-   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_90].w = 50;
+   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_90].w = 20;
    cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_90].h = 1280;
    cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_180].x = 0;
    cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_180].y = 0;
    cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_180].w = 720;
-   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_180].h = 50;
+   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_180].h = 20;
    cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_270].x = 0;
    cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_270].y = 0;
-   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_270].w = 50;
+   cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_270].w = 20;
    cfg->mini_apptray_widget_geometry[E_MOVE_ANGLE_270].h = 1280;
 
    return cfg;
index ac25990..7727321 100644 (file)
@@ -15,7 +15,14 @@ struct _Config
    unsigned char qp_scroll_with_clipping; // 1: quickpanel scroll with clipping 0: qp scroll without clipping
    int           dim_max_opacity; // dim max opacity
    int           dim_min_opacity; // dim min opacity
-   double        flick_speed_limit; // flick speed limitation
+
+   struct {
+      double speed;
+      double angle;
+      double distance;
+      double distance_rate;
+   } flick_limit; // indicator / quickpanel / apptray flick limitation
+
    double        animation_duration; // apptray / quickpanel move animation duration
    unsigned char event_log; // 1 :ecore & evas_object debug event logging  0: do not log event
    int           event_log_count; // ecore & evas_object debug event logging count
index 2e00bd9..37cabfb 100644 (file)
@@ -111,6 +111,8 @@ e_mod_move_bd_move_ctl_objs_move(E_Move_Border *mb,
              zy = mco->zone->y;
           }
         evas_object_move(mco->obj, x - zx, y - zy);
+        mco->geometry.x = x;
+        mco->geometry.y = y;
      }
 }
 
@@ -126,6 +128,8 @@ e_mod_move_bd_move_ctl_objs_resize(E_Move_Border *mb,
         if (!mco) continue;
         if (!mco->obj) continue;
         evas_object_resize(mco->obj, w, h);
+        mco->geometry.w = w;
+        mco->geometry.h = h;
      }
 }
 
@@ -249,6 +253,32 @@ e_mod_move_bd_move_ctl_objs_color_set(E_Move_Border *mb,
      }
 }
 
+EINTERN void
+e_mod_move_bd_move_ctl_objs_geometry_get(E_Move_Border *mb,
+                                         int           *x,
+                                         int           *y,
+                                         int           *w,
+                                         int           *h)
+{
+   Eina_List *l;
+   E_Move_Control_Object *mco;
+
+   E_CHECK(mb);
+   E_CHECK(x);
+   E_CHECK(y);
+   E_CHECK(w);
+   E_CHECK(h);
+
+   EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
+     {
+        if (!mco) continue;
+        *x = mco->geometry.x;
+        *y = mco->geometry.y;
+        *w = mco->geometry.w;
+        *h = mco->geometry.h;
+     }
+}
+
 /* local subsystem functions */
 static void
 _e_mod_move_cb_control_object_del(void            *data,
index 76bdc5b..0e37218 100644 (file)
@@ -12,6 +12,13 @@ struct _E_Move_Control_Object
 
    Evas_Object   *obj;    // compositor's evas(window) object
    E_Move_Event  *event;  // evas object's event handler object
+
+   struct {
+     int x;
+     int y;
+     int w;
+     int h;
+   } geometry;
 };
 
 EINTERN E_Move_Control_Object *e_mod_move_ctl_obj_add(E_Move_Border *mb, E_Move_Canvas *canvas);
@@ -29,6 +36,7 @@ EINTERN void                   e_mod_move_bd_move_ctl_objs_raise(E_Move_Border *
 EINTERN void                   e_mod_move_bd_move_ctl_objs_lower(E_Move_Border *mb);
 EINTERN void                   e_mod_move_bd_move_ctl_objs_stack_above(E_Move_Border *mb, E_Move_Border *mb2);
 EINTERN void                   e_mod_move_bd_move_ctl_objs_color_set(E_Move_Border *mb, int r, int g, int b, int a);
+EINTERN void                   e_mod_move_bd_move_ctl_objs_geometry_get(E_Move_Border *mb, int *x, int *y, int *w, int *h);
 
 #endif
 #endif
index 5aa7332..1d9effd 100644 (file)
@@ -14,14 +14,12 @@ static void _e_mod_move_debug_borders_info_dump(E_Move *m, FILE *fs);
 static void _e_mod_move_debug_borders_visibility_dump(E_Move *m, FILE *fs);
 static void _e_mod_move_debug_event_cb_dump(E_Move *m, FILE *fs);
 static void _e_mod_move_debug_control_objects_info_dump(E_Move *m, E_Move_Canvas *canvas, FILE *fs);
-static void _e_mod_move_debug_indicator_controller_info_dump(E_Move *m, E_Move_Canvas *canvas, FILE *fs);
 static void _e_mod_move_debug_canvas_info_dump(E_Move *m, E_Move_Canvas *canvas, FILE *fs);
 static void _e_mod_move_debug_evas_stack_dump(E_Move *m, E_Move_Canvas *canvas, FILE *fs);
 static void _e_mod_move_debug_dim_objects_info_dump(E_Move *m, E_Move_Canvas *canvas, FILE *fs);
 static void _e_mod_move_debug_event_logs_dump(E_Move *m, FILE *fs);
 static void _e_mod_move_debug_control_objects_visible_set(E_Move *m, E_Move_Canvas *canvas, Eina_Bool visi);
 static void _e_mod_move_debug_widget_objects_visible_set(E_Move *m, E_Move_Canvas *canvas, Eina_Bool visi);
-static void _e_mod_move_debug_indicator_controller_objects_visible_set(E_Move *m, E_Move_Canvas *canvas, Eina_Bool visi);
 static void _e_mod_move_debug_objects_visible_set(Eina_Bool visi);
 
 /* local subsystem functions */
@@ -84,6 +82,9 @@ _e_mod_move_debug_borders_info_dump(E_Move *m,
         i++;
      }
    fprintf(fs, "E------------------------------------------------------------------------------------------------------------------------------------\n");
+   fprintf(fs, "\nB-------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n");
+   fprintf(fs, "   Screen Reader State: %d\n", m->screen_reader_state);
+   fprintf(fs, "----------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n");
 }
 
 static void
@@ -278,85 +279,6 @@ _e_mod_move_debug_control_objects_info_dump(E_Move        *m,
 }
 
 static void
-_e_mod_move_debug_indicator_controller_info_dump(E_Move        *m,
-                                                 E_Move_Canvas *canvas,
-                                                 FILE          *fs)
-{
-   Eina_List *l;
-   E_Move_Evas_Object *meo, *_meo = NULL;
-   int x, y, w, h, i = 1;
-   Ecore_X_Window cid = 0;
-   Ecore_X_Window target_win;
-   char *netwm_name = NULL;
-   E_Move_Indicator_Controller *mic = NULL;
-
-   fprintf(fs, "\n\nB----------------------------------------------------------------------------------------------\n");
-   fprintf(fs, "   <MOVE MODULE>  Indicator Controller Object Info ( It is used for FullScreen Window ) \n");
-   fprintf(fs, "-----------------------------------------------------------------------------------------------\n");
-   if (canvas->zone)
-     {
-        fprintf(fs, " canvas->zone:%p num:%d %d,%d %dx%d\n",
-                (void *)canvas->zone, canvas->zone->num,
-                canvas->zone->x, canvas->zone->y,
-                canvas->zone->w, canvas->zone->h);
-     }
-   fprintf(fs, "------------------------------------------------------------------------------------------------\n");
-
-   fprintf(fs, "------------------------------------------------------------------------------------------------\n");
-   fprintf(fs, " NO TARGET_WIN_ID  indicator_control_obj  found_o   ex   ey   ew     eh  | V |  NETWM_NAME\n");
-   fprintf(fs, "------------------------------------------------------------------------------------------------\n");
-   Evas_Object *o = evas_object_top_get(canvas->evas);
-   Eina_Bool found = 0;
-
-   if (e_mod_move_indicator_controller_state_get(m, &target_win))
-     {
-        mic = m->indicator_controller;
-        if (mic)
-          {
-             while (o)
-               {
-                  EINA_LIST_FOREACH(mic->objs, l, meo)
-                    {
-                       if (!meo) continue;
-                       if (meo->canvas != canvas) continue;
-                       if (meo->obj == o)
-                         {
-                            found = 1;
-                            _meo = meo;
-                            break;
-                         }
-                    }
-
-                  evas_object_geometry_get(o, &x, &y, &w, &h);
-                  if (found && _meo)
-                    {
-                       cid = target_win;
-                       ecore_x_netwm_name_get(cid, &netwm_name);
-                       fprintf(fs,
-                               " %2d   0x%07x         %p          %p %4d %4d %4d x %4d   %s   %s\n",
-                               i,
-                               target_win,
-                               (void *)_meo->obj,
-                               (void *)o,
-                               x, y, w, h,
-                               evas_object_visible_get(_meo->obj) ? "v" : "",
-                               netwm_name ? netwm_name : "");
-                    }
-
-                  o = evas_object_below_get(o);
-                  found = 0;
-                  _meo = NULL;
-                  if (netwm_name) free(netwm_name);
-                  netwm_name = NULL;
-                  cid = 0;
-                  i++;
-               }
-          }
-     }
-   fprintf(fs, "E-----------------------------------------------------------------------------------------------\n");
-}
-
-static void
 _e_mod_move_debug_canvas_info_dump(E_Move        *m,
                                    E_Move_Canvas *canvas,
                                    FILE          *fs)
@@ -875,50 +797,6 @@ _e_mod_move_debug_widget_objects_visible_set(E_Move        *m,
 }
 
 static void
-_e_mod_move_debug_indicator_controller_objects_visible_set(E_Move        *m,
-                                                           E_Move_Canvas *canvas,
-                                                           Eina_Bool      visi)
-{
-   Eina_List *l;
-   E_Move_Evas_Object *meo, *_meo = NULL;
-   Evas_Object *o = evas_object_top_get(canvas->evas);
-   Eina_Bool found = 0;
-   Ecore_X_Window target_win;
-   E_Move_Indicator_Controller *mic = NULL;
-
-   if (e_mod_move_indicator_controller_state_get(m, &target_win))
-     {
-        mic = m->indicator_controller;
-        while (o)
-          {
-             EINA_LIST_FOREACH(mic->objs, l, meo)
-               {
-                  if (!meo) continue;
-                  if (meo->canvas != canvas) continue;
-                  if (meo->obj == o)
-                    {
-                       found = 1;
-                       _meo = meo;
-                       break;
-                    }
-               }
-
-             if (found && _meo)
-               {
-                  if (visi)
-                     e_mod_move_evas_objs_color_set(mic->objs, 0, 255, 0, 100);
-                  else
-                     e_mod_move_evas_objs_color_set(mic->objs, 0, 0, 0, 0);
-               }
-
-             o = evas_object_below_get(o);
-             found = 0;
-             _meo = NULL;
-          }
-     }
-}
-
-static void
 _e_mod_move_debug_objects_visible_set(Eina_Bool visi)
 {
    E_Move *m = NULL;
@@ -933,9 +811,6 @@ _e_mod_move_debug_objects_visible_set(Eina_Bool visi)
         if (!canvas) continue;
         _e_mod_move_debug_control_objects_visible_set(m, canvas, visi);
         _e_mod_move_debug_widget_objects_visible_set(m, canvas, visi);
-        _e_mod_move_debug_indicator_controller_objects_visible_set(m,
-                                                                   canvas,
-                                                                   visi);
      }
 }
 
@@ -983,7 +858,6 @@ e_mod_move_debug_info_dump(Eina_Bool   to_file,
         _e_mod_move_debug_control_objects_info_dump(m, canvas, fs);
         _e_mod_move_debug_canvas_info_dump(m, canvas, fs);
         _e_mod_move_debug_dim_objects_info_dump(m, canvas, fs);
-        _e_mod_move_debug_indicator_controller_info_dump(m, canvas, fs);
      }
 
    _e_mod_move_debug_event_logs_dump(m, fs);
index f704beb..68f62b7 100644 (file)
@@ -5,18 +5,18 @@
 
 struct _E_Move_Event
 {
-   E_Move_Event_State       state;
-   Evas_Object             *obj;
-   Eina_List               *queue;
-   Eina_Bool                send_all;
-   Eina_Bool                find_redirect_win;
-   Eina_Bool                click;
-   E_Move_Event_Data_Type   data_type;
+   E_Move_Event_State          state;
+   Evas_Object                *obj;
+   Eina_List                  *queue;
+   Eina_Bool                   click;
+   E_Move_Event_Data_Type      data_type;
+   E_Move_Event_Propagate_Type propagate_type;
 
    struct {
-     Ecore_X_Window         id;
-     int                    angle;
-     E_Move_Event_Angle_Cb  fn_angle_get;
+     Ecore_X_Window           id;
+     int                      angle;
+     E_Move_Event_Angle_Cb    fn_angle_get;
+     E_Move_Event_Win_Find_Cb fn_win_find;
    } win;
 
    struct {
@@ -202,6 +202,8 @@ _ev_cb_mouse_down(void            *data,
                   // if log list is full, delete first log
                   E_Move_Event_Log *first_log = (E_Move_Event_Log*)eina_list_nth(m->ev_logs, 0);
                   m->ev_logs = eina_list_remove(m->ev_logs, first_log);
+                  memset(first_log, 0, sizeof(E_Move_Event_Log));
+                  E_FREE(first_log);
                }
              m->ev_logs = eina_list_append(m->ev_logs, log);
           }
@@ -228,10 +230,12 @@ _ev_cb_mouse_down(void            *data,
                              EVAS_CALLBACK_MOUSE_DOWN);
    if (!motion) goto event_pass;
 
-   if (ev->find_redirect_win)
+   if (ev->win.fn_win_find)
      {
-        E_Border* find_bd = e_mod_move_util_border_find_by_pointer(motion->coord.x, motion->coord.y);
-        if (find_bd) ev->win.id = find_bd->client.win;
+        Ecore_X_Window  find_win;
+        find_win = ev->win.fn_win_find(motion);
+
+        if (find_win) ev->win.id = find_win;
         else ev->win.id = 0;
      }
 
@@ -246,15 +250,25 @@ _ev_cb_mouse_down(void            *data,
           e_mod_move_event_angle_set(ev, angles[0]);
      }
 
-   if (ev->send_all)
+   // E_MOVE_EVENT_PROPAGATE_TYPE_NONE case
+   if (ev->propagate_type == E_MOVE_EVENT_PROPAGATE_TYPE_NONE)
+     {
+        _ev_cb_call(ev, motion);
+        _motion_info_free(motion);
+        motion = NULL;
+        goto event_none;
+     }
+
+   // E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY case
+   if (ev->propagate_type == E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY)
      {
-        // ev->state = E_MOVE_EVENT_STATE_HOLD; // is it right?
         _ev_cb_call(ev, motion);
         _motion_info_free(motion);
         motion = NULL;
         goto event_pass;
      }
 
+   // E_MOVE_EVENT_PROPAGATE_TYPE_DEFERRED case
    if (!ev->ev_check.cb)
      {
         ev->state = E_MOVE_EVENT_STATE_HOLD;
@@ -274,6 +288,11 @@ event_pass:
                ev->obj,
                event_info,
                EVAS_CALLBACK_MOUSE_DOWN);
+   return;
+
+event_none:
+   ev->state = E_MOVE_EVENT_STATE_PASS;
+   return;
 }
 
 static void
@@ -306,7 +325,20 @@ _ev_cb_mouse_move(void            *data,
      }
 #endif
 
-   if (ev->send_all)
+   // E_MOVE_EVENT_PROPAGATE_TYPE_NONE case
+   if (ev->propagate_type == E_MOVE_EVENT_PROPAGATE_TYPE_NONE)
+     {
+        motion = _motion_info_new(event_info,
+                                  EVAS_CALLBACK_MOUSE_MOVE);
+        if (!motion) goto event_none;
+        _ev_cb_call(ev, motion);
+        _motion_info_free(motion);
+        motion = NULL;
+        goto event_none;
+     }
+
+   // E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY case
+   if (ev->propagate_type == E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY)
      {
         motion = _motion_info_new(event_info,
                                   EVAS_CALLBACK_MOUSE_MOVE);
@@ -317,6 +349,7 @@ _ev_cb_mouse_move(void            *data,
         goto event_pass;
      }
 
+   // E_MOVE_EVENT_PROPAGATE_TYPE_DEFERRED case
    switch (ev->state)
      {
       case E_MOVE_EVENT_STATE_CHECK:
@@ -361,6 +394,11 @@ event_pass:
                ev->obj,
                event_info,
                EVAS_CALLBACK_MOUSE_MOVE);
+   return;
+
+event_none:
+   ev->state = E_MOVE_EVENT_STATE_PASS;
+   e_mod_move_event_data_clear(ev);
 }
 
 static void
@@ -433,6 +471,8 @@ _ev_cb_mouse_up(void            *data,
                   // if log list is full, delete first log
                   E_Move_Event_Log *first_log = (E_Move_Event_Log*)eina_list_nth(m->ev_logs, 0);
                   m->ev_logs = eina_list_remove(m->ev_logs, first_log);
+                  memset(first_log, 0, sizeof(E_Move_Event_Log));
+                  E_FREE(first_log);
                }
              m->ev_logs = eina_list_append(m->ev_logs, log);
           }
@@ -453,7 +493,20 @@ _ev_cb_mouse_up(void            *data,
      }
 #endif
 
-   if (ev->send_all)
+   // E_MOVE_EVENT_PROPAGATE_TYPE_NONE case
+   if (ev->propagate_type == E_MOVE_EVENT_PROPAGATE_TYPE_NONE)
+     {
+        motion = _motion_info_new(event_info,
+                                  EVAS_CALLBACK_MOUSE_UP);
+        if (!motion) goto event_none;
+        _ev_cb_call(ev, motion);
+        _motion_info_free(motion);
+        motion = NULL;
+        goto event_none;
+     }
+
+   // E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY case
+   if (ev->propagate_type == E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY)
      {
         motion = _motion_info_new(event_info,
                                   EVAS_CALLBACK_MOUSE_UP);
@@ -464,6 +517,7 @@ _ev_cb_mouse_up(void            *data,
         goto event_pass;
      }
 
+   // E_MOVE_EVENT_PROPAGATE_TYPE_DEFERRED case
    switch (ev->state)
      {
       case E_MOVE_EVENT_STATE_CHECK:
@@ -504,6 +558,12 @@ event_pass:
                event_info,
                EVAS_CALLBACK_MOUSE_UP);
    ev->state = E_MOVE_EVENT_STATE_UNKOWN;
+   return;
+
+event_none:
+   ev->state = E_MOVE_EVENT_STATE_PASS;
+   e_mod_move_event_data_clear(ev);
+   ev->state = E_MOVE_EVENT_STATE_UNKOWN;
 }
 
 static Eina_Bool
@@ -581,25 +641,25 @@ _event_pass(Ecore_X_Window     id,
      {
       case EVAS_CALLBACK_MOUSE_DOWN:
         down = event_info;
-        ecore_x_mouse_down_send(id,
-                                down->canvas.x -x,
-                                down->canvas.y -y,
-                                down->button);
+        e_mod_move_util_mouse_down_send(id,
+                                        down->canvas.x -x,
+                                        down->canvas.y -y,
+                                        down->button);
         break;
 
       case EVAS_CALLBACK_MOUSE_UP:
         up = event_info;
-        ecore_x_mouse_up_send(id,
-                              up->canvas.x -x,
-                              up->canvas.y -y,
-                              up->button);
+        e_mod_move_util_mouse_up_send(id,
+                                        up->canvas.x -x,
+                                        up->canvas.y -y,
+                                        up->button);
         break;
 
       case EVAS_CALLBACK_MOUSE_MOVE:
         move = event_info;
-        ecore_x_mouse_move_send(id,
-                                move->cur.output.x -x,
-                                move->cur.output.y -y);
+        e_mod_move_util_mouse_move_send(id,
+                                        move->cur.output.x -x,
+                                        move->cur.output.y -y);
         break;
 
       default:
@@ -705,6 +765,7 @@ e_mod_move_event_free(E_Move_Event *ev)
    ev->win.id = 0;
    ev->win.angle = 0;
    ev->win.fn_angle_get = NULL;
+   ev->win.fn_win_find = NULL;
    ev->ev_check.cb = NULL;
    ev->ev_check.data = NULL;
    ev->obj = NULL;
@@ -829,11 +890,11 @@ e_mod_move_event_data_clear(E_Move_Event *ev)
 }
 
 EINTERN Eina_Bool
-e_mod_move_event_send_all_set(E_Move_Event *ev,
-                              Eina_Bool     send_all)
+e_mod_move_event_propagate_type_set(E_Move_Event               *ev,
+                                    E_Move_Event_Propagate_Type type)
 {
    if (!ev) return EINA_FALSE;
-   ev->send_all = send_all;
+   ev->propagate_type = type;
    return EINA_TRUE;
 }
 
@@ -847,10 +908,17 @@ e_mod_move_event_data_type_set(E_Move_Event          *ev,
 }
 
 EINTERN Eina_Bool
-e_mod_move_event_find_redirect_win_set(E_Move_Event *ev,
-                                       Eina_Bool     find_redirect_win)
+e_mod_move_event_win_find_cb_set(E_Move_Event            *ev,
+                                 E_Move_Event_Win_Find_Cb cb)
 {
    if (!ev) return EINA_FALSE;
-   ev->find_redirect_win = find_redirect_win;
+   ev->win.fn_win_find = cb;
    return EINA_TRUE;
 }
+
+EINTERN Ecore_X_Window
+e_mod_move_event_win_get(E_Move_Event *ev)
+{
+   if (!ev) return 0;
+   return ev->win.id;
+}
index de54c7d..2422609 100644 (file)
@@ -6,13 +6,15 @@
 typedef struct _E_Move_Event             E_Move_Event;
 typedef struct _E_Move_Event_Motion_Info E_Move_Event_Motion_Info;
 
-typedef enum   _E_Move_Event_Type        E_Move_Event_Type;
-typedef enum   _E_Move_Event_State       E_Move_Event_State;
-typedef enum   _E_Move_Event_Data_Type   E_Move_Event_Data_Type;
+typedef enum   _E_Move_Event_Type           E_Move_Event_Type;
+typedef enum   _E_Move_Event_State          E_Move_Event_State;
+typedef enum   _E_Move_Event_Data_Type      E_Move_Event_Data_Type;
+typedef enum   _E_Move_Event_Propagate_Type E_Move_Event_Propagate_Type;
 
-typedef Eina_Bool          (*E_Move_Event_Cb)       (void *, void *);
-typedef Eina_Bool          (*E_Move_Event_Angle_Cb) (Ecore_X_Window, int *, int *);
-typedef E_Move_Event_State (*E_Move_Event_Check_Cb) (E_Move_Event *, void *);
+typedef Eina_Bool          (*E_Move_Event_Cb)          (void *, void *);
+typedef Eina_Bool          (*E_Move_Event_Angle_Cb)    (Ecore_X_Window, int *, int *);
+typedef E_Move_Event_State (*E_Move_Event_Check_Cb)    (E_Move_Event *, void *);
+typedef Ecore_X_Window     (*E_Move_Event_Win_Find_Cb) (void *);
 
 enum _E_Move_Event_Type
 {
@@ -46,6 +48,13 @@ enum _E_Move_Event_Data_Type
    E_MOVE_EVENT_DATA_TYPE_WIDGET_INDICATOR
 };
 
+enum _E_Move_Event_Propagate_Type
+{
+   E_MOVE_EVENT_PROPAGATE_TYPE_NONE = 0,
+   E_MOVE_EVENT_PROPAGATE_TYPE_DEFERRED,
+   E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY
+};
+
 /* event management functions */
 EINTERN E_Move_Event       *e_mod_move_event_new(Ecore_X_Window win, Evas_Object *obj);
 EINTERN void                e_mod_move_event_free(E_Move_Event *ev);
@@ -60,9 +69,9 @@ EINTERN int                 e_mod_move_event_angle_get(E_Move_Event *ev);
 EINTERN Eina_Bool           e_mod_move_event_click_set(E_Move_Event *ev, Eina_Bool click);
 EINTERN Eina_Bool           e_mod_move_event_click_get(E_Move_Event *ev);
 EINTERN Eina_Bool           e_mod_move_event_data_clear(E_Move_Event *ev);
-EINTERN Eina_Bool           e_mod_move_event_send_all_set(E_Move_Event *ev, Eina_Bool send_all);
+EINTERN Eina_Bool           e_mod_move_event_propagate_type_set(E_Move_Event *ev, E_Move_Event_Propagate_Type type);
 EINTERN Eina_Bool           e_mod_move_event_data_type_set(E_Move_Event *ev, E_Move_Event_Data_Type type);
-EINTERN Eina_Bool           e_mod_move_event_find_redirect_win_set(E_Move_Event *ev, Eina_Bool find_redirect_win);
-
+EINTERN Eina_Bool           e_mod_move_event_win_find_cb_set(E_Move_Event *ev, E_Move_Event_Win_Find_Cb cb);
+EINTERN Ecore_X_Window      e_mod_move_event_win_get(E_Move_Event *ev);
 #endif
 #endif
index bcd6645..122797d 100644 (file)
@@ -84,13 +84,19 @@ e_mod_move_flick_state_get(E_Move_Border *mb,
    double             speed = 0.0;
    int                dx, dy;
    double             dt;
+   double             tand = 0.0;
+   double             flick_angle = 0.0;
+   double             distance = 0.0;
+   double             flick_distance = 0.0;
    Eina_Bool          state = EINA_FALSE;
 
    E_CHECK_RETURN(mb, EINA_FALSE);
    E_CHECK_RETURN(mb->m, EINA_FALSE);
    E_CHECK_RETURN(mb->flick_data, EINA_FALSE);
    flick = mb->flick_data;
-   flick_speed = mb->m->flick_speed_limit;
+   flick_speed = mb->m->flick_limit.speed;
+   flick_angle = mb->m->flick_limit.angle;
+   flick_distance = mb->m->flick_limit.distance;
 
    dx = flick->ex - flick->sx;
    dy = flick->ey - flick->sy;
@@ -104,24 +110,79 @@ e_mod_move_flick_state_get(E_Move_Border *mb,
           {
            case  90:
            case 270:
-              if ((abs(dy)*3) > abs(dx)) return EINA_FALSE;
+              tand = 1.0 * abs(dx) / abs(dy);
+              if (tand < flick_angle) return EINA_FALSE;
               break;
            case   0:
            case 180:
            default :
-              if ((abs(dx)*3) > abs(dy)) return EINA_FALSE;
+              tand = 1.0 * abs(dy) / abs(dx);
+              if (tand < flick_angle) return EINA_FALSE;
               break;
           }
      }
 
-   speed = sqrt((dx * dx) + (dy * dy)) / dt;
+   distance = sqrt((dx * dx) + (dy * dy));
+   if (distance < flick_distance) return EINA_FALSE;
 
+   speed = distance / dt;
    if (speed > flick_speed) state = EINA_TRUE;
 
    return state;
 }
 
 EINTERN Eina_Bool
+e_mod_move_flick_state_get2(E_Move_Border *mb)
+{
+   E_Move_Flick_Data *flick;
+   Eina_Bool          state = EINA_FALSE;
+   E_Zone            *zone = NULL;
+   double             flick_distance_rate = 0.0;
+   double             check_distance = 0.0;
+   int x = 0, y = 0;
+   int zone_w = 0, zone_h = 0;
+
+   E_CHECK_RETURN(mb, EINA_FALSE);
+   E_CHECK_RETURN(mb->m, EINA_FALSE);
+   E_CHECK_RETURN(mb->bd, EINA_FALSE);
+   E_CHECK_RETURN(mb->bd->zone, EINA_FALSE);
+   E_CHECK_RETURN(mb->flick_data, EINA_FALSE);
+
+   flick = mb->flick_data;
+   x = flick->ex;
+   y = flick->ey;
+
+   zone = mb->bd->zone;
+   zone_w = zone->w;
+   zone_h = zone->h;
+
+   flick_distance_rate = mb->m->flick_limit.distance_rate;
+
+   switch(mb->angle)
+     {
+      case  90:
+         check_distance = zone_w * ( 1.0 - flick_distance_rate);
+         if (check_distance > x ) state = EINA_TRUE;
+         break;
+      case 180:
+         check_distance = zone_h * flick_distance_rate;
+         if (check_distance < y ) state = EINA_TRUE;
+         break;
+      case 270:
+         check_distance = zone_w * flick_distance_rate;
+         if (check_distance < x ) state = EINA_TRUE;
+         break;
+      case   0:
+      default :
+         check_distance = zone_h * ( 1.0 - flick_distance_rate);
+         if (check_distance > y ) state = EINA_TRUE;
+         break;
+     }
+
+   return state;
+}
+
+EINTERN Eina_Bool
 e_mod_move_flick_data_get(E_Move_Border *mb,
                           int           *sx,
                           int           *sy,
index 6c11997..f65b962 100644 (file)
@@ -9,6 +9,7 @@ EINTERN E_Move_Flick_Data *e_mod_move_flick_data_new(E_Move_Border *mb);
 EINTERN Eina_Bool          e_mod_move_flick_data_init(E_Move_Border *mb, int x, int y);
 EINTERN Eina_Bool          e_mod_move_flick_data_update(E_Move_Border *mb, int x, int y);
 EINTERN Eina_Bool          e_mod_move_flick_state_get(E_Move_Border *mb, Eina_Bool direction_check);
+EINTERN Eina_Bool          e_mod_move_flick_state_get2(E_Move_Border *mb);
 EINTERN void               e_mod_move_flick_data_free(E_Move_Border *mb);
 EINTERN Eina_Bool          e_mod_move_flick_data_get(E_Move_Border *mb, int *sx, int *sy, int *ex, int *ey, double *st, double *et);
 
index 6dc5e49..c4fc8e7 100644 (file)
@@ -1067,7 +1067,8 @@ e_mod_move_indicator_ctl_obj_event_setup(E_Move_Border         *mb,
                            _e_mod_move_indicator_cb_motion_move, mb);
    e_mod_move_event_cb_set(mco->event, E_MOVE_EVENT_TYPE_MOTION_END,
                            _e_mod_move_indicator_cb_motion_end, mb);
-   e_mod_move_event_send_all_set(mco->event, EINA_TRUE);
+   e_mod_move_event_propagate_type_set(mco->event,
+                                       E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY);
 
    if (e_mod_move_border_shape_input_new(mb))
      e_mod_move_border_shape_input_rect_set(mb, mb->x, mb->y, mb->w, mb->h);
diff --git a/move-tizen/src/e_mod_move_indicator_controller.c b/move-tizen/src/e_mod_move_indicator_controller.c
deleted file mode 100644 (file)
index 89b335b..0000000
+++ /dev/null
@@ -1,548 +0,0 @@
-#include "e_mod_move_shared_types.h"
-#include "e_mod_move_debug.h"
-#include "e_mod_move.h"
-
-/* local subsystem functions */
-static Eina_Bool _e_mod_move_indi_ctl_event_clear(E_Move_Indicator_Controller *mic);
-static Eina_Bool _e_mod_move_indi_ctl_cb_motion_start(void *data, void *event_info);
-static Eina_Bool _e_mod_move_indi_ctl_cb_motion_move(void *data, void *event_info);
-static Eina_Bool _e_mod_move_indi_ctl_cb_motion_end(void *data, void *event_info);
-static void      _e_mod_move_indi_ctl_obj_event_setup(E_Move_Indicator_Controller *mic, E_Move_Evas_Object *meo);
-
-/* local subsystem functions */
-static Eina_Bool
-_e_mod_move_indi_ctl_event_clear(E_Move_Indicator_Controller *mic)
-{
-   Eina_Bool           click = EINA_FALSE;
-   E_Move_Evas_Object *meo = NULL;
-   Eina_List          *l;
-
-   E_CHECK_RETURN(mic, EINA_FALSE);
-
-   EINA_LIST_FOREACH(mic->objs, l, meo)
-     {
-        if (!meo) continue;
-        click = e_mod_move_event_click_get(meo->event);
-     }
-   E_CHECK_RETURN(click, EINA_FALSE);
-
-   EINA_LIST_FOREACH(mic->objs, l, meo)
-     {
-        if (!meo) continue;
-        e_mod_move_event_data_clear(meo->event);
-        e_mod_move_event_click_set(meo->event, EINA_FALSE);
-     }
-
-   return EINA_TRUE;
-}
-
-static Eina_Bool
-_e_mod_move_indi_ctl_cb_motion_start(void *data,
-                                     void *event_info)
-{
-   E_Move *m = NULL;
-   E_Move_Border *indi_mb = NULL;
-   E_Move_Border *target_mb = NULL;
-   E_Move_Indicator_Controller *mic = (E_Move_Indicator_Controller *)data;
-   E_Move_Event_Motion_Info *info;
-   E_Move_Evas_Object *meo = NULL;
-   Eina_List *l;
-
-   info  = (E_Move_Event_Motion_Info *)event_info;
-   m = e_mod_move_util_get();
-   if (!mic || !info || !m) return EINA_FALSE;
-   L(LT_EVENT_OBJ,
-     "[MOVE] ev:%15.15s  (%d,%d) %s()\n", "EVAS_OBJ",
-     info->coord.x, info->coord.y, __func__);
-
-   // check indicator and if indicator does not exist, then destroy data, and hide
-   target_mb = e_mod_move_border_client_find(mic->target_win);
-   if (!target_mb)
-     {
-        // event clear
-        _e_mod_move_indi_ctl_event_clear(mic);
-        e_mod_move_evas_objs_del(mic->objs);
-        memset(mic, 0, sizeof(E_Move_Indicator_Controller));
-        E_FREE(mic);
-        m->indicator_controller = NULL;
-        return EINA_FALSE;
-     }
-
-   indi_mb = e_mod_move_indicator_find();
-   if (!indi_mb)
-     {
-        //e_mod_move_indicator_controller_unset(m);
-        return EINA_FALSE;
-     }
-
-   // position check & and if position is not at indicator then destroy data, and hide
-   if (!E_INSIDE(info->coord.x, info->coord.y,
-                 indi_mb->x, indi_mb->y, indi_mb->w, indi_mb->h))
-     {
-        //e_mod_move_indicator_controller_unset(m);
-        if (indi_mb->visible)
-          {
-             e_border_hide(indi_mb->bd,2);
-
-             e_mod_move_evas_objs_move(mic->objs, indi_mb->x, indi_mb->y);
-             e_mod_move_evas_objs_resize(mic->objs, indi_mb->w, indi_mb->h);
-             e_mod_move_border_shape_input_rect_set(target_mb,
-                                                    indi_mb->x,
-                                                    indi_mb->y,
-                                                    indi_mb->w,
-                                                    indi_mb->h);
-          }
-        return EINA_FALSE;
-     }
-
-   EINA_LIST_FOREACH(mic->objs, l, meo)
-     {
-        if (!meo) continue;
-        e_mod_move_event_click_set(meo->event, EINA_TRUE);
-     }
-
-   return EINA_TRUE;
-}
-
-static Eina_Bool
-_e_mod_move_indi_ctl_cb_motion_move(void *data,
-                                    void *event_info)
-{
-   E_Move *m = NULL;
-   E_Move_Indicator_Controller *mic = (E_Move_Indicator_Controller *)data;
-   E_Move_Event_Motion_Info *info;
-   E_Move_Evas_Object *meo = NULL;
-   E_Move_Border *indi_mb = NULL;
-   E_Move_Border *target_mb = NULL;
-   Eina_List *l;
-   Eina_Bool click = EINA_FALSE;
-   int angle = 0;
-   int d0, d1;
-   E_Zone *zone = NULL;
-
-   info  = (E_Move_Event_Motion_Info *)event_info;
-   m = e_mod_move_util_get();
-   if (!mic || !info || !m) return EINA_FALSE;
-
-   L(LT_EVENT_OBJ,
-     "[MOVE] ev:%15.15s  (%d,%d) %s()\n", "EVAS_OBJ",
-     info->coord.x, info->coord.y, __func__);
-
-   EINA_LIST_FOREACH(mic->objs, l, meo)
-     {
-        if (!meo) continue;
-       click = e_mod_move_event_click_get(meo->event);
-     }
-   E_CHECK_RETURN(click, EINA_FALSE);
-
-   // check indicator and if indicator does not exist, then destroy data, and hide
-   target_mb = e_mod_move_border_client_find(mic->target_win);
-   if (!target_mb)
-     {
-        // event clear
-        _e_mod_move_indi_ctl_event_clear(mic);
-        e_mod_move_evas_objs_del(mic->objs);
-        memset(mic, 0, sizeof(E_Move_Indicator_Controller));
-        E_FREE(mic);
-        m->indicator_controller = NULL;
-        return EINA_FALSE;
-     }
-
-   indi_mb = e_mod_move_indicator_find();
-   if (!indi_mb)
-     {
-        return EINA_FALSE;
-     }
-
-   EINA_LIST_FOREACH(mic->objs, l, meo)
-     {
-        if (!meo) continue;
-        angle = e_mod_move_event_angle_get(meo->event);
-     }
-
-   zone = indi_mb->bd->zone;
-   d0 = d1 = 0;
-   switch (angle)
-     {
-      case  90:
-         d0 = info->coord.x;
-         d1 = indi_mb->w*2;
-         break;
-      case 180:
-         d0 = zone->h - (indi_mb->h*2);
-         d1 = info->coord.y;
-         break;
-      case 270:
-         d0 =  zone->w - (indi_mb->w*2);
-         d1 = info->coord.x;
-         break;
-      case   0:
-      default :
-         d0 = info->coord.y;
-         d1 = indi_mb->h*2;
-         break;
-     }
-
-   if (d0 > d1)
-     {
-        e_border_show(indi_mb->bd);
-
-        e_mod_move_evas_objs_move(mic->objs, target_mb->x, target_mb->y);
-        e_mod_move_evas_objs_resize(mic->objs, target_mb->w, target_mb->h);
-        e_mod_move_border_shape_input_rect_set(target_mb,
-                                               0,
-                                               0,
-                                               target_mb->w,
-                                               target_mb->h);
-     }
-
-   return EINA_TRUE;
-}
-
-static Eina_Bool
-_e_mod_move_indi_ctl_cb_motion_end(void *data,
-                                   void *event_info)
-{
-   E_Move *m = NULL;
-   E_Move_Indicator_Controller *mic = (E_Move_Indicator_Controller *)data;
-   E_Move_Event_Motion_Info *info;
-   E_Move_Evas_Object *meo = NULL;
-   E_Move_Border *indi_mb = NULL;
-   E_Move_Border *target_mb = NULL;
-   Eina_List *l;
-   Eina_Bool click = EINA_FALSE;
-   int angle = 0;
-   int d0, d1;
-   E_Zone *zone = NULL;
-   Eina_Bool ret = EINA_FALSE;
-
-   info  = (E_Move_Event_Motion_Info *)event_info;
-   m = e_mod_move_util_get();
-   if (!mic || !info || !m) return EINA_FALSE;
-
-   L(LT_EVENT_OBJ,
-     "[MOVE] ev:%15.15s  (%d,%d) %s()\n", "EVAS_OBJ",
-     info->coord.x, info->coord.y, __func__);
-
-   EINA_LIST_FOREACH(mic->objs, l, meo)
-     {
-        if (!meo) continue;
-       click = e_mod_move_event_click_get(meo->event);
-     }
-   E_CHECK_RETURN(click, EINA_FALSE);
-
-   // check indicator and if indicator does not exist, then destroy data, and hide
-   target_mb = e_mod_move_border_client_find(mic->target_win);
-   if (!target_mb)
-     {
-        // event clear
-        _e_mod_move_indi_ctl_event_clear(mic);
-        e_mod_move_evas_objs_del(mic->objs);
-        memset(mic, 0, sizeof(E_Move_Indicator_Controller));
-        E_FREE(mic);
-        m->indicator_controller = NULL;
-        return EINA_FALSE;
-     }
-
-   indi_mb = e_mod_move_indicator_find();
-   E_CHECK_GOTO(indi_mb, finish);
-
-   EINA_LIST_FOREACH(mic->objs, l, meo)
-     {
-        if (!meo) continue;
-        angle = e_mod_move_event_angle_get(meo->event);
-     }
-
-   zone = indi_mb->bd->zone;
-   d0 = d1 = 0;
-   switch (angle)
-     {
-      case  90:
-         d0 = info->coord.x;
-         d1 = indi_mb->w*2;
-         break;
-      case 180:
-         d0 = zone->h - (indi_mb->h*2);
-         d1 = info->coord.y;
-         break;
-      case 270:
-         d0 =  zone->w - (indi_mb->w*2);
-         d1 = info->coord.x;
-         break;
-      case   0:
-      default :
-         d0 = info->coord.y;
-         d1 = indi_mb->h*2;
-         break;
-     }
-
-   if (d0 > d1)
-     {
-        if (!indi_mb->visible)
-          {
-             e_border_show(indi_mb->bd);
-             e_mod_move_evas_objs_move(mic->objs, target_mb->x, target_mb->y);
-             e_mod_move_evas_objs_resize(mic->objs, target_mb->w, target_mb->h);
-             e_mod_move_border_shape_input_rect_set(target_mb,
-                                                    0,
-                                                    0,
-                                                    target_mb->w,
-                                                    target_mb->h);
-             ret = EINA_TRUE;
-          }
-     }
-   else
-     {
-        if (indi_mb->visible)
-          {
-             e_border_hide(indi_mb->bd,2);
-             //e_mod_move_indicator_controller_unset(m);
-             e_mod_move_evas_objs_move(mic->objs, indi_mb->x, indi_mb->y);
-             e_mod_move_evas_objs_resize(mic->objs, indi_mb->w, indi_mb->h);
-             e_mod_move_border_shape_input_rect_set(target_mb,
-                                                    indi_mb->x,
-                                                    indi_mb->y,
-                                                    indi_mb->w,
-                                                    indi_mb->h);
-          }
-     }
-
-finish:
-   EINA_LIST_FOREACH(mic->objs, l, meo)
-     {
-        if (!meo) continue;
-        e_mod_move_event_click_set(meo->event, EINA_FALSE);
-     }
-   return ret;
-}
-
-static void
-_e_mod_move_indi_ctl_obj_event_setup(E_Move_Indicator_Controller *mic,
-                                     E_Move_Evas_Object          *meo)
-{
-   E_CHECK(mic);
-   E_CHECK(meo);
-
-   meo->event = e_mod_move_event_new(mic->target_win, meo->obj);
-   E_CHECK(meo->event);
-
-   e_mod_move_event_data_type_set(meo->event, E_MOVE_EVENT_DATA_TYPE_NONE);
-   e_mod_move_event_angle_cb_set(meo->event,
-                                 e_mod_move_util_win_prop_angle_get);
-   e_mod_move_event_cb_set(meo->event, E_MOVE_EVENT_TYPE_MOTION_START,
-                           _e_mod_move_indi_ctl_cb_motion_start, mic);
-   e_mod_move_event_cb_set(meo->event, E_MOVE_EVENT_TYPE_MOTION_MOVE,
-                           _e_mod_move_indi_ctl_cb_motion_move, mic);
-   e_mod_move_event_cb_set(meo->event, E_MOVE_EVENT_TYPE_MOTION_END,
-                           _e_mod_move_indi_ctl_cb_motion_end, mic);
-   e_mod_move_event_send_all_set(meo->event, EINA_TRUE);
-}
-
-/* externally accessible functions */
-EINTERN Eina_Bool
-e_mod_move_indicator_controller_set(E_Move_Border *target_mb)
-{
-   E_Move *m = NULL;
-   E_Move_Border *indi_mb = NULL;
-   Ecore_X_Window win;
-   E_Move_Indicator_Controller *mic = NULL;
-   E_Move_Evas_Object *meo = NULL;
-   Eina_List *l;
-
-   E_CHECK_RETURN(target_mb, EINA_FALSE);
-   indi_mb = e_mod_move_indicator_find();
-   E_CHECK_RETURN(indi_mb, EINA_FALSE);
-   m = e_mod_move_util_get();
-   E_CHECK_RETURN(m, EINA_FALSE);
-
-   if (e_mod_move_indicator_controller_state_get(m, &win))
-     e_mod_move_indicator_controller_unset(m);
-
-   mic = E_NEW(E_Move_Indicator_Controller, 1);
-   E_CHECK_RETURN(mic, EINA_FALSE);
-
-   mic->target_win = target_mb->bd->client.win;
-   mic->objs = e_mod_move_evas_objs_add(m, NULL);
-   if (mic->objs)
-     {
-        e_mod_move_evas_objs_move(mic->objs, indi_mb->x, indi_mb->y);
-        e_mod_move_evas_objs_resize(mic->objs, indi_mb->w, indi_mb->h);
-        e_mod_move_evas_objs_layer_set(mic->objs, EVAS_LAYER_MAX - 1);
-        e_mod_move_evas_objs_color_set(mic->objs, 0, 0, 0, 0);
-        e_mod_move_evas_objs_show(mic->objs);
-        e_mod_move_evas_objs_raise(mic->objs);
-
-        // Set Input Shape Mask
-        if (e_mod_move_border_shape_input_new(target_mb))
-          {
-             e_mod_move_border_shape_input_rect_set(target_mb,
-                                                    indi_mb->x,
-                                                    indi_mb->y,
-                                                    indi_mb->w,
-                                                    indi_mb->h);
-          }
-
-        // Set Event Handler
-        EINA_LIST_FOREACH(mic->objs, l, meo)
-          {
-             if (!meo) continue;
-             _e_mod_move_indi_ctl_obj_event_setup(mic, meo);
-          }
-
-        m->indicator_controller = mic;
-     }
-   else
-     {
-        memset(mic, 0, sizeof(E_Move_Indicator_Controller));
-        E_FREE(mic);
-        return EINA_FALSE;
-     }
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_move_indicator_controller_unset(E_Move *m)
-{
-   Ecore_X_Window win;
-   E_Move_Indicator_Controller *mic = NULL;
-   E_Move_Border *target_mb = NULL;
-   E_CHECK_RETURN(m, EINA_FALSE);
-   E_CHECK_RETURN(e_mod_move_indicator_controller_state_get(m, &win),
-                  EINA_FALSE);
-
-   mic = m->indicator_controller;
-   E_CHECK_RETURN(mic, EINA_FALSE);
-
-   _e_mod_move_indi_ctl_event_clear(mic);
-   e_mod_move_evas_objs_del(mic->objs);
-
-   // input shape mask clear
-   if ((target_mb = e_mod_move_border_client_find(mic->target_win)))
-     {
-        if (target_mb->shape_input)
-          {
-             e_mod_move_border_shape_input_rect_set(target_mb, 0, 0, 0, 0);
-             e_mod_move_border_shape_input_free(target_mb);
-          }
-     }
-
-   memset(mic, 0, sizeof(E_Move_Indicator_Controller));
-   E_FREE(mic);
-   m->indicator_controller = NULL;
-
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_move_indicator_controller_update(E_Move *m)
-{
-   Ecore_X_Window win;
-   E_Move_Indicator_Controller *mic = NULL;
-   E_Move_Border *indi_mb = NULL;
-   E_Move_Border *target_mb = NULL;
-   E_CHECK_RETURN(m, EINA_FALSE);
-   E_CHECK_RETURN(e_mod_move_indicator_controller_state_get(m, &win),
-                  EINA_FALSE);
-
-   mic = m->indicator_controller;
-   E_CHECK_RETURN(mic, EINA_FALSE);
-
-   indi_mb = e_mod_move_indicator_find();
-   E_CHECK_RETURN(indi_mb, EINA_FALSE);
-   if (indi_mb->visible) return EINA_FALSE;
-
-   e_mod_move_evas_objs_move(mic->objs, indi_mb->x, indi_mb->y);
-   e_mod_move_evas_objs_resize(mic->objs, indi_mb->w, indi_mb->h);
-
-   if ((target_mb = e_mod_move_border_client_find(mic->target_win)))
-     {
-        e_mod_move_border_shape_input_rect_set(target_mb,
-                                               indi_mb->x,
-                                               indi_mb->y,
-                                               indi_mb->w,
-                                               indi_mb->h);
-     }
-   else
-     {
-        L(LT_EVENT_OBJ,
-          "[MOVE] ev:%15.15s w:0x%08x  %s %s()\n", "EVAS_OBJ",
-          mic->target_win,
-          "Indicator Controller Target Window doest not exist!!!!!",
-          __func__);
-        return EINA_FALSE;
-     }
-
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_move_indicator_controller_state_get(E_Move         *m,
-                                          Ecore_X_Window *win)
-{
-   E_Move_Indicator_Controller *mic = NULL;
-   E_CHECK_RETURN(m, EINA_FALSE);
-   E_CHECK_RETURN(win, EINA_FALSE);
-
-   mic = m->indicator_controller;
-   E_CHECK_RETURN(mic, EINA_FALSE);
-
-   *win = mic->target_win;
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_move_indicator_controller_set_policy_check(E_Move_Border *target_mb)
-{
-   E_Move_Border *indi_mb = NULL;
-   E_Zone *zone = NULL;
-   E_CHECK_RETURN(target_mb, EINA_FALSE);
-   if (TYPE_QUICKPANEL_CHECK(target_mb)) return EINA_FALSE;
-   if (TYPE_APPTRAY_CHECK(target_mb)) return EINA_FALSE;
-   if (TYPE_INDICATOR_CHECK(target_mb)) return EINA_FALSE;
-
-   if (target_mb->visibility != E_MOVE_VISIBILITY_STATE_VISIBLE)
-     return EINA_FALSE;
-
-   indi_mb = e_mod_move_indicator_find();
-   E_CHECK_RETURN(indi_mb, EINA_FALSE);
-
-   //if (indi_mb->visible)
-   if (target_mb->indicator_state != E_MOVE_INDICATOR_STATE_OFF)
-      return EINA_FALSE;
-
-   // if full screen indicator show feature is disabled, do not show indicator controller
-   if (target_mb->fullscreen_indicator_show_state == E_MOVE_FULLSCREEN_INDICATOR_SHOW_STATE_OFF)
-      return EINA_FALSE;
-
-   zone = indi_mb->bd->zone;
-   if (target_mb->bd->zone != zone)
-     return EINA_FALSE;
-
-   if ( (zone->x != target_mb->x)
-        || (zone->y != target_mb->y)
-        || (zone->w != target_mb->w)
-        || (zone->h != target_mb->h))
-      return EINA_FALSE;
-
-   return EINA_TRUE;
-}
-
-EINTERN Eina_Bool
-e_mod_move_indicator_controller_unset_policy_check(E_Move_Border *target_mb)
-{
-   E_Move *m = NULL;
-   Ecore_X_Window win;
-   Eina_Bool ret = EINA_FALSE;
-   E_CHECK_RETURN(target_mb, EINA_FALSE);
-
-   m = e_mod_move_util_get();
-   E_CHECK_RETURN(m, EINA_FALSE);
-
-   if (e_mod_move_indicator_controller_state_get(m, &win))
-     {
-        if (win == target_mb->bd->client.win)
-           ret = EINA_TRUE;
-     }
-
-   return ret;
-}
diff --git a/move-tizen/src/e_mod_move_indicator_controller.h b/move-tizen/src/e_mod_move_indicator_controller.h
deleted file mode 100644 (file)
index 97a0162..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifdef E_TYPEDEFS
-#else
-#ifndef E_MOD_MOVE_INDICATOR_CONTROLLER_H
-#define E_MOD_MOVE_INDICATOR_CONTROLLER_H
-
-struct _E_Move_Indicator_Controller
-{
-   Ecore_X_Window target_win; // target client window id
-   Eina_List     *objs; // list of E_Move_Evas_Object.
-};
-
-typedef struct _E_Move_Indicator_Controller E_Move_Indicator_Controller;
-
-EINTERN Eina_Bool e_mod_move_indicator_controller_set(E_Move_Border *target_mb);
-EINTERN Eina_Bool e_mod_move_indicator_controller_unset(E_Move *m);
-EINTERN Eina_Bool e_mod_move_indicator_controller_update(E_Move *m);
-EINTERN Eina_Bool e_mod_move_indicator_controller_state_get(E_Move *m, Ecore_X_Window *win);
-EINTERN Eina_Bool e_mod_move_indicator_controller_set_policy_check(E_Move_Border *target_mb);
-EINTERN Eina_Bool e_mod_move_indicator_controller_unset_policy_check(E_Move_Border *target_mb);
-
-#endif
-#endif
index c47ea82..87f32e8 100644 (file)
@@ -3,20 +3,24 @@
 #include "e_mod_move.h"
 
 /* local subsystem functions */
-static Eina_Bool _e_mod_move_indicator_widget_apptray_move_set(E_Move_Indicator_Widget *indi_widget, Eina_Bool state);
-static Eina_Bool _e_mod_move_indicator_widget_quickpanel_move_set(E_Move_Indicator_Widget *indi_widget, Eina_Bool state);
-static Eina_Bool _e_mod_move_indicator_widget_apptray_move_get(E_Move_Indicator_Widget *indi_widget);
-static Eina_Bool _e_mod_move_indicator_widget_quickpanel_move_get(E_Move_Indicator_Widget *indi_widget);
-static Eina_Bool _e_mod_move_indicator_widget_cb_motion_start_internal_apptray_check(E_Move_Border *at_mb);
-static Eina_Bool _e_mod_move_indicator_widget_cb_motion_start_internal_quickpanel_check(E_Move_Border *qp_mb);
-static Eina_Bool _e_mod_move_indicator_widget_quickpanel_flick_process(E_Move_Indicator_Widget *indi_widget, E_Move_Border *mb2, int angle, Eina_Bool state);
-static Eina_Bool _e_mod_move_indicator_widget_apptray_flick_process(E_Move_Indicator_Widget *indi_widget, E_Move_Border *mb2, int angle, Eina_Bool state);
-static Eina_Bool _e_mod_move_indicator_widget_home_region_release_check(E_Move_Indicator_Widget  *indi_widget, Eina_Bool apptray_move, int angle, Evas_Point pos);
-static Eina_Bool _e_mod_move_indicator_widget_cb_motion_start(void *data, void *event_info);
-static Eina_Bool _e_mod_move_indicator_widget_cb_motion_move(void *data, void *event_info);
-static Eina_Bool _e_mod_move_indicator_widget_cb_motion_end(void *data, void *event_info);
-static void      _e_mod_move_indicator_widget_obj_event_setup(E_Move_Indicator_Widget *indicator_widget, E_Move_Widget_Object *mwo);
-static Eina_Bool _e_mod_move_indicator_widget_scrollable_object_movable_check(E_Move_Border *mb, Evas_Point pos);
+static Eina_Bool      _e_mod_move_indicator_widget_apptray_move_set(E_Move_Indicator_Widget *indi_widget, Eina_Bool state);
+static Eina_Bool      _e_mod_move_indicator_widget_quickpanel_move_set(E_Move_Indicator_Widget *indi_widget, Eina_Bool state);
+static Eina_Bool      _e_mod_move_indicator_widget_apptray_move_get(E_Move_Indicator_Widget *indi_widget);
+static Eina_Bool      _e_mod_move_indicator_widget_quickpanel_move_get(E_Move_Indicator_Widget *indi_widget);
+static Eina_Bool      _e_mod_move_indicator_widget_cb_motion_start_internal_apptray_check(E_Move_Border *at_mb);
+static Eina_Bool      _e_mod_move_indicator_widget_cb_motion_start_internal_quickpanel_check(E_Move_Border *qp_mb);
+static Eina_Bool      _e_mod_move_indicator_widget_quickpanel_flick_process(E_Move_Indicator_Widget *indi_widget, E_Move_Border *mb2, int angle, Eina_Bool state);
+static Eina_Bool      _e_mod_move_indicator_widget_apptray_flick_process(E_Move_Indicator_Widget *indi_widget, E_Move_Border *mb2, int angle, Eina_Bool state);
+static Eina_Bool      _e_mod_move_indicator_widget_home_region_release_check(E_Move_Indicator_Widget  *indi_widget, Eina_Bool apptray_move, int angle, Evas_Point pos);
+static Eina_Bool      _e_mod_move_indicator_widget_cb_motion_start(void *data, void *event_info);
+static Eina_Bool      _e_mod_move_indicator_widget_cb_motion_move(void *data, void *event_info);
+static Eina_Bool      _e_mod_move_indicator_widget_cb_motion_end(void *data, void *event_info);
+static void           _e_mod_move_indicator_widget_obj_event_setup(E_Move_Indicator_Widget *indicator_widget, E_Move_Widget_Object *mwo);
+static Eina_Bool      _e_mod_move_indicator_widget_scrollable_object_movable_check(E_Move_Border *mb, Evas_Point pos);
+static Eina_Bool      _e_mod_move_indicator_widget_target_window_find_by_pointer(Ecore_X_Window *win, int x, int y);
+static Ecore_X_Window _e_mod_move_indicator_widget_event_win_find(void *event_info);
+static Eina_Bool      _e_mod_move_indicator_widget_target_window_policy_check(E_Move_Border *mb);
+static Eina_Bool      _e_mod_move_indicator_widget_event_send_policy_check(E_Move_Indicator_Widget *indi_widget, Evas_Point pos);
 
 /* local subsystem functions */
 static Eina_Bool
@@ -327,6 +331,7 @@ _e_mod_move_indicator_widget_cb_motion_start(void *data,
    E_Move_Indicator_Widget *indi_widget = (E_Move_Indicator_Widget *)data;
 
    E_Move_Border *mb = NULL;
+   E_Move_Border *ev_mb = NULL;
    E_Move_Border *qp_mb = NULL;
    E_Move_Border *at_mb = NULL;
    E_Move_Event_Motion_Info *info;
@@ -335,11 +340,23 @@ _e_mod_move_indicator_widget_cb_motion_start(void *data,
    Eina_Bool clicked = EINA_FALSE;
    Eina_List *l;
    E_Move_Scroll_Region_Indicator scroll_region = E_MOVE_SCROLL_REGION_NONE;
+   Ecore_X_Window ev_win = 0;
 
    info  = (E_Move_Event_Motion_Info *)event_info;
    m = e_mod_move_util_get();
 
    E_CHECK_RETURN(indi_widget, EINA_FALSE);
+
+   // clicked window indicator policy check
+   EINA_LIST_FOREACH(indi_widget->objs, l, mwo)
+     {
+        if (!mwo) continue;
+        ev_win = e_mod_move_event_win_get(mwo->event);
+     }
+   ev_mb = e_mod_move_border_client_find(ev_win);
+   E_CHECK_RETURN(_e_mod_move_indicator_widget_target_window_policy_check(ev_mb),
+                  EINA_FALSE);
+
    mb = e_mod_move_border_client_find(indi_widget->win);
 
    if (!m || !mb || !indi_widget || !info) return EINA_FALSE;
@@ -694,7 +711,7 @@ _e_mod_move_indicator_widget_cb_motion_end(void *data,
    if (!qp_mv_state && !at_mv_state) goto finish;
 
    e_mod_move_flick_data_update(mb, info->coord.x, info->coord.y);
-   flick_state = e_mod_move_flick_state_get(mb, EINA_FALSE);
+   flick_state = e_mod_move_flick_state_get(mb, EINA_TRUE);
 
    if (qp_mv_state)
      {
@@ -969,7 +986,10 @@ _e_mod_move_indicator_widget_obj_event_setup(E_Move_Indicator_Widget *indicator_
    e_mod_move_event_cb_set(mwo->event, E_MOVE_EVENT_TYPE_MOTION_END,
                            _e_mod_move_indicator_widget_cb_motion_end,
                            indicator_widget);
-   e_mod_move_event_send_all_set(mwo->event, EINA_TRUE);
+   e_mod_move_event_win_find_cb_set(mwo->event,
+                                    _e_mod_move_indicator_widget_event_win_find);
+   e_mod_move_event_propagate_type_set(mwo->event,
+                                       E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY);
 }
 
 static Eina_Bool
@@ -1014,6 +1034,148 @@ _e_mod_move_indicator_widget_scrollable_object_movable_check(E_Move_Border *mb,
    return ret;
 }
 
+static Eina_Bool
+_e_mod_move_indicator_widget_target_window_find_by_pointer(Ecore_X_Window *win,
+                                                           int x,
+                                                           int y)
+{
+   E_Move        *m = NULL;
+   E_Move_Border *find_mb = NULL;
+   Eina_Bool      found = EINA_FALSE;
+   Eina_Bool      ret = EINA_FALSE;
+   Ecore_X_Window noti_win = 0;
+   Eina_Bool      noti_win_saved = EINA_FALSE;
+
+   E_CHECK_RETURN(win, EINA_FALSE);
+   m = e_mod_move_util_get();
+   E_CHECK_RETURN(m, EINA_FALSE);
+
+   EINA_INLIST_REVERSE_FOREACH(m->borders, find_mb)
+     {
+        if (!find_mb->bd) continue;
+
+        // finding visible border
+        if (!find_mb->visible) continue;
+
+        // finding pointed border
+        if (!E_INSIDE(x, y, find_mb->bd->x, find_mb->bd->y,
+                            find_mb->bd->w, find_mb->bd->h))
+          continue;
+
+        // if notification , alpha, and indicator_state_none then search again below.
+        if (TYPE_NOTIFICATION_CHECK(find_mb)
+            && (find_mb->argb)
+            && (find_mb->indicator_state == E_MOVE_INDICATOR_STATE_NONE))
+          {
+             if (!noti_win_saved)
+               {
+                  noti_win = find_mb->bd->client.win;
+                  noti_win_saved = EINA_TRUE;
+               }
+             continue;
+          }
+        else
+          {
+             found = EINA_TRUE;
+             break;
+          }
+     }
+
+   if (found)
+     {
+        if ((find_mb)
+            && (find_mb->indicator_state == E_MOVE_INDICATOR_STATE_ON))
+          {
+             *win = find_mb->bd->client.win;
+             ret = EINA_TRUE;
+          }
+        else
+          {
+             if (noti_win_saved)
+               {
+                  *win = noti_win;
+                  ret = EINA_TRUE;
+               }
+             else
+               {
+                  *win = find_mb->bd->client.win;
+                  ret = EINA_TRUE;
+               }
+          }
+     }
+
+   return ret;
+}
+
+static Ecore_X_Window
+_e_mod_move_indicator_widget_event_win_find(void *event_info)
+{
+   E_Move_Event_Motion_Info *info = NULL;
+   E_Border                 *find_bd = NULL;
+   Ecore_X_Window            win = 0, res_win = 0;
+   info  = (E_Move_Event_Motion_Info *)event_info;
+
+   E_CHECK_RETURN(info, 0);
+
+   find_bd = e_mod_move_util_border_find_by_pointer(info->coord.x, info->coord.y);
+
+   if (_e_mod_move_indicator_widget_target_window_find_by_pointer(&win,
+                                                                  info->coord.x,
+                                                                  info->coord.y))
+     {
+         res_win = win;
+     }
+
+   L(LT_EVENT_OBJ,
+     "[MOVE] ev:%15.15s INDICATOR_WIDGET_EVENT_WIN_FIND w:0x%08x (%4d,%4d)\n",
+     "EVAS_OBJ", res_win, info->coord.x, info->coord.y);
+
+   return res_win;
+}
+
+static Eina_Bool
+_e_mod_move_indicator_widget_target_window_policy_check(E_Move_Border *mb)
+{
+   E_Move        *m = e_mod_move_util_get();
+   E_Zone        *zone = NULL;
+   Eina_Bool      ret = EINA_FALSE;
+   E_Border      *bd = NULL;
+
+   E_CHECK_RETURN(m, EINA_FALSE);
+   E_CHECK_RETURN(mb, EINA_FALSE);
+
+   bd = mb->bd;
+   E_CHECK_RETURN(bd, EINA_FALSE);
+   zone = bd->zone;
+   E_CHECK_RETURN(zone, EINA_FALSE);
+
+   if (REGION_EQUAL_TO_ZONE(mb, zone)  // check fullscreen
+       && (zone->id == 0)              // change zone->id comparing to bd's profile property (mobile)
+       && (mb->indicator_state == E_MOVE_INDICATOR_STATE_ON)
+       && (mb->indicator_type == E_MOVE_INDICATOR_TYPE_1))
+     {
+         ret = EINA_TRUE;
+     }
+
+   return ret;
+}
+
+static Eina_Bool
+_e_mod_move_indicator_widget_event_send_policy_check(E_Move_Indicator_Widget *indi_widget,
+                                                     Evas_Point               pos)
+{
+   int x = 0, y = 0, w = 0, h = 0;
+   Eina_Bool ret = EINA_FALSE;
+
+   E_CHECK_RETURN(indi_widget, EINA_FALSE);
+
+   e_mod_move_widget_objs_geometry_get(indi_widget->objs, &x ,&y, &w, &h);
+
+   if (E_INSIDE(pos.x, pos.y, x, y, w, h)) ret = EINA_TRUE;
+
+   return ret;
+}
+
 /* externally accessible functions */
 
 /* set current indicator widget */
@@ -1058,6 +1220,7 @@ e_mod_move_indicator_widget_target_window_find(Ecore_X_Window *win)
    m = e_mod_move_util_get();
    E_CHECK_RETURN(m, EINA_FALSE);
 
+   // fix later
    EINA_INLIST_REVERSE_FOREACH(m->borders, find_mb)
      {
         if (!find_mb->bd) continue;
@@ -1073,9 +1236,9 @@ e_mod_move_indicator_widget_target_window_find(Ecore_X_Window *win)
      }
 
    if (found
-       && (find_mb->indicator_state == E_MOVE_INDICATOR_STATE_ON)
-       && (find_mb->indicator_type == E_MOVE_INDICATOR_TYPE_1)
-       && !(TYPE_INDICATOR_CHECK(find_mb))
+//       && (find_mb->indicator_state == E_MOVE_INDICATOR_STATE_ON)
+//       && (find_mb->indicator_type == E_MOVE_INDICATOR_TYPE_1)
+//       && !(TYPE_INDICATOR_CHECK(find_mb))
        && !(TYPE_APPTRAY_CHECK(find_mb))
        && !(TYPE_QUICKPANEL_CHECK(find_mb)))
      {
@@ -1090,15 +1253,18 @@ e_mod_move_indicator_widget_target_window_find(Ecore_X_Window *win)
 EINTERN void
 e_mod_move_indicator_widget_apply(void)
 {
-   E_Move         *m = NULL;
-   Ecore_X_Window  target_win;
+   E_Move                  *m = NULL;
    E_Move_Indicator_Widget *indi_widget = NULL;
+   Ecore_X_Window           target_win;
+   E_Move_Border           *target_mb = NULL;
 
    m = e_mod_move_util_get();
    E_CHECK(m);
+   if (m->screen_reader_state) return;
 
    if (e_mod_move_indicator_widget_target_window_find(&target_win))
      {
+        target_mb = e_mod_move_border_client_find(target_win);
         // if previous indicator widget is created
         if ((indi_widget = e_mod_move_indicator_widget_get()))
           {
@@ -1110,8 +1276,9 @@ e_mod_move_indicator_widget_apply(void)
                   // if current indicator widget's win is not equal to finded win
                   // then del previous indicator_widget and add new indicator widget.
                   e_mod_move_indicator_widget_del(indi_widget);
-
                   e_mod_move_indicator_widget_set(e_mod_move_indicator_widget_add(target_win));
+                  if (!TYPE_NOTIFICATION_CHECK(target_mb))
+                    e_mod_move_util_prop_active_indicator_win_set(target_win, m);
                }
           }
         else
@@ -1119,6 +1286,8 @@ e_mod_move_indicator_widget_apply(void)
              //if previous indicator widget is not creagted
              //then add new indicator widget.
              e_mod_move_indicator_widget_set(e_mod_move_indicator_widget_add(target_win));
+             if (!TYPE_NOTIFICATION_CHECK(target_mb))
+               e_mod_move_util_prop_active_indicator_win_set(target_win, m);
           }
      }
    else
@@ -1195,13 +1364,14 @@ e_mod_move_indicator_widget_add(Ecore_X_Window win)
         e_mod_move_widget_objs_color_set(indi_widget->objs, 0, 0, 0, 0);
         e_mod_move_widget_objs_show(indi_widget->objs);
         e_mod_move_widget_objs_raise(indi_widget->objs);
-#if 0 // for debug
-        e_mod_move_widget_objs_color_set(indi_widget->objs, 0, 0, 255, 128);
-#endif
 
         // Set Input Shape Mask
-        if (e_mod_move_border_shape_input_new(mb))
-          e_mod_move_border_shape_input_rect_set(mb, x, y, w, h);
+        if ((indi_widget->input_region_id = e_manager_comp_input_region_id_new(m->man)))
+          {
+             e_manager_comp_input_region_id_set(m->man,
+                                                indi_widget->input_region_id,
+                                                x, y, w, h);
+          }
         else
           goto error_cleanup;
      }
@@ -1248,7 +1418,8 @@ e_mod_move_indicator_widget_del(E_Move_Indicator_Widget *indi_widget)
 
    if ((mb = e_mod_move_border_client_find(indi_widget->win)))
      {
-        e_mod_move_border_shape_input_free(mb);
+        if (indi_widget->input_region_id)
+          e_manager_comp_input_region_id_del(m->man, indi_widget->input_region_id);
 
         // if indicaor widget is deleted, then apptray or quickpanel's mirror object hide with animation
         if (indi_widget->quickpanel_move)
@@ -1429,7 +1600,12 @@ e_mod_move_indicator_widget_angle_change(Ecore_X_Window win)
               e_mod_move_widget_objs_resize(indi_widget->objs, w, h);
 
               //change Input Shape Mask
-              e_mod_move_border_shape_input_rect_set(mb, x, y, w, h);
+              if (indi_widget->input_region_id)
+                {
+                   e_manager_comp_input_region_id_set(m->man,
+                                                      indi_widget->input_region_id,
+                                                      x, y, w, h);
+                }
               ret = EINA_TRUE;
            }
      }
@@ -1571,6 +1747,10 @@ e_mod_move_indicator_widget_type_change(Ecore_X_Window win, E_Move_Indicator_Typ
              // indicator type is not type_1 -> delete current indicator widget
              e_mod_move_indicator_widget_del(indi_widget);
              e_mod_move_indicator_widget_set(NULL);
+#if 1
+             // change later
+             e_mod_move_indicator_widget_apply();
+#endif
           }
      }
    else
index 16e45fc..d68b88d 100644 (file)
@@ -10,6 +10,7 @@ struct _E_Move_Indicator_Widget
    Eina_Bool       quickpanel_move;
    Eina_Bool       apptray_move;
    Evas_Point      pos; // mouse position
+   int             input_region_id;
 };
 
 typedef struct _E_Move_Indicator_Widget E_Move_Indicator_Widget;
index f96839e..7bb5951 100644 (file)
@@ -24,6 +24,7 @@ static Eina_Bool      _e_mod_move_mini_apptray_objs_position_get(E_Move_Border *
 static Eina_Bool      _e_mod_move_mini_apptray_objs_animation_frame(void  *data, double pos);
 static Eina_Bool      _e_mod_move_mini_apptray_flick_process(E_Move_Border *mb, int angle, Eina_Bool state);
 static Eina_Bool      _e_mod_move_mini_apptray_dim_objs_apply(E_Move_Border *mb, int x, int y);
+static Eina_Bool      _e_mod_move_mini_apptray_ctl_event_send_policy_check(E_Move_Border *mb, Evas_Point pos);
 
 /* local subsystem functions */
 static Eina_Bool
@@ -82,9 +83,6 @@ _e_mod_move_mini_apptray_cb_motion_start(void *data,
 
    e_mod_move_mini_apptray_objs_add(mb);
 
-   // mini_apptray_objs_animation_layer_set
-   e_mod_move_mini_apptray_objs_animation_layer_set(mb);
-
    // send mini_apptray to "move start message".
    e_mod_move_mini_apptray_anim_state_send(mb, EINA_TRUE);
    return EINA_TRUE;
@@ -109,6 +107,9 @@ _e_mod_move_mini_apptray_cb_motion_move(void *data,
    int angle = 0;
    Eina_Bool click = EINA_FALSE;
    E_Zone *zone = NULL;
+   int x = 0, y = 0;
+   int cx, cy, cw, ch;
+   Eina_Bool contents_region = EINA_FALSE;
 
    info  = (E_Move_Event_Motion_Info *)event_info;
    if (!mb || !info) return EINA_FALSE;
@@ -127,30 +128,86 @@ _e_mod_move_mini_apptray_cb_motion_move(void *data,
         click = e_mod_move_event_click_get(mco->event);
      }
    E_CHECK_RETURN(click, EINA_FALSE);
-/// change later?
-// todo flick-up
+
+   if (_e_mod_move_mini_apptray_ctl_event_send_policy_check(mb, info->coord))
+     {
+        EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
+          {
+             if (!mco) continue;
+             e_mod_move_event_propagate_type_set(mco->event, E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY);
+          }
+     }
+   else
+     {
+        EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
+          {
+             if (!mco) continue;
+             e_mod_move_event_propagate_type_set(mco->event, E_MOVE_EVENT_PROPAGATE_TYPE_NONE);
+          }
+     }
+
+   contents_region = e_mod_move_border_contents_rect_get(mb, &cx, &cy ,&cw, &ch);
+
    switch (angle)
      {
       case   0:
-         if (info->coord.y < mb->h)
-           e_mod_move_mini_apptray_objs_move(mb, 0, info->coord.y - mb->h);
+         if (info->coord.y > (zone->h - mb->h))
+           {
+              if (contents_region)
+                {
+                   if (info->coord.y > cy) y =  info->coord.y - cy;
+                }
+              else
+                {
+                   y =  info->coord.y;
+                }
+           }
          break;
       case  90:
-         if (info->coord.x < mb->w)
-           e_mod_move_mini_apptray_objs_move(mb, info->coord.x - mb->w, 0);
+         if (info->coord.x > (zone->w - mb->w))
+           {
+              if (contents_region)
+                {
+                   if (info->coord.x > cx) x = info->coord.x - cx;
+                }
+              else
+                {
+                   x = info->coord.x;
+                }
+           }
          break;
       case 180:
-         if (info->coord.y > (zone->h - mb->h))
-           e_mod_move_mini_apptray_objs_move(mb, 0, info->coord.y);
+         if (info->coord.y < mb->h)
+           {
+              if (contents_region)
+                {
+                   if (info->coord.y < ch) y = info->coord.y - ch;
+                }
+              else
+                {
+                   y = info->coord.y - mb->h;
+                }
+           }
          break;
       case 270:
-         if (info->coord.x > (zone->w - mb->w))
-           e_mod_move_mini_apptray_objs_move(mb, info->coord.x, 0);
+         if (info->coord.x < mb->w)
+           {
+              if (contents_region)
+                {
+                   if (info->coord.x < cw) x = info->coord.x - cw;
+                }
+              else
+                {
+                   x = info->coord.x - mb->w;
+                }
+           }
          break;
       default :
          break;
      }
 
+   e_mod_move_mini_apptray_objs_move(mb, x, y);
+
    return EINA_TRUE;
 }
 
@@ -192,6 +249,13 @@ _e_mod_move_mini_apptray_cb_motion_end(void *data,
      }
    E_CHECK_GOTO(click, finish);
 
+   // event send all set
+   EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
+     {
+        if (!mco) continue;
+        e_mod_move_event_propagate_type_set(mco->event, E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY);
+     }
+
    e_mod_move_flick_data_update(mb, info->coord.x, info->coord.y);
    flick_state = e_mod_move_flick_state_get(mb, EINA_FALSE);
    if (_e_mod_move_mini_apptray_flick_process(mb, angle, flick_state))
@@ -201,58 +265,56 @@ _e_mod_move_mini_apptray_cb_motion_end(void *data,
 
    switch (angle)
      {
-                // change later
-                // todo flick-up
       case   0:
-         check_h = mb->y + mb->h;
+         check_h = mb->h;
          if (check_h) check_h /= 2;
-         if (info->coord.y < check_h)
+         if (info->coord.y > (zone->h - check_h))
            {
-              e_mod_move_mini_apptray_e_border_move(mb, 0, mb->h * -1);
-              e_mod_move_mini_apptray_objs_animation_move(mb, 0, mb->h * -1);
+              e_mod_move_mini_apptray_e_border_move(mb, 0, zone->h);
+              e_mod_move_mini_apptray_objs_animation_move(mb, 0, zone->h);
            }
          else
            {
-              e_mod_move_mini_apptray_objs_animation_move(mb, 0, 0);
+              e_mod_move_mini_apptray_objs_animation_move(mb, 0, (zone->h - mb->h));
            }
          break;
       case  90:
          check_w = mb->w;
          if (check_w) check_w /= 2;
-         if (info->coord.x < check_w)
+         if (info->coord.x > (zone->w - check_w))
            {
-              e_mod_move_mini_apptray_e_border_move(mb, mb->w * -1, 0);
-              e_mod_move_mini_apptray_objs_animation_move(mb, mb->w * -1, 0);
+              e_mod_move_mini_apptray_e_border_move(mb, zone->w, 0);
+              e_mod_move_mini_apptray_objs_animation_move(mb, zone->w, 0);
            }
          else
            {
-              e_mod_move_mini_apptray_objs_animation_move(mb, 0, 0);
+              e_mod_move_mini_apptray_objs_animation_move(mb, zone->w - mb->w, 0);
            }
          break;
       case 180:
-         check_h = mb->h;
+         check_h = mb->y + mb->h;
          if (check_h) check_h /= 2;
-         if (info->coord.y > (zone->h - check_h))
+         if (info->coord.y < check_h)
            {
-              e_mod_move_mini_apptray_e_border_move(mb, 0, zone->h);
-              e_mod_move_mini_apptray_objs_animation_move(mb, 0, zone->h);
+              e_mod_move_mini_apptray_e_border_move(mb, 0, mb->h * -1);
+              e_mod_move_mini_apptray_objs_animation_move(mb, 0, mb->h * -1);
            }
          else
            {
-              e_mod_move_mini_apptray_objs_animation_move(mb, 0, (zone->h - mb->h));
+              e_mod_move_mini_apptray_objs_animation_move(mb, 0, 0);
            }
          break;
       case 270:
          check_w = mb->w;
          if (check_w) check_w /= 2;
-         if (info->coord.x > (zone->w - check_w))
+         if (info->coord.x < check_w)
            {
-              e_mod_move_mini_apptray_e_border_move(mb, zone->w, 0);
-              e_mod_move_mini_apptray_objs_animation_move(mb, zone->w, 0);
+              e_mod_move_mini_apptray_e_border_move(mb, mb->w * -1, 0);
+              e_mod_move_mini_apptray_objs_animation_move(mb, mb->w * -1, 0);
            }
          else
            {
-              e_mod_move_mini_apptray_objs_animation_move(mb, zone->w - mb->w, 0);
+              e_mod_move_mini_apptray_objs_animation_move(mb, 0, 0);
            }
          break;
       default :
@@ -325,13 +387,9 @@ _e_mod_move_mini_apptray_objs_animation_frame(void  *data,
 
    if (pos >= 1.0)
      {
-        // mini_apptray_objs_animation_layer_unset
-        e_mod_move_mini_apptray_objs_animation_layer_unset(mb);
-
         if (!(REGION_INSIDE_ZONE(mb, mb->bd->zone)))
           {
              e_border_focus_set(mb->bd, 0, 0);
-             e_border_lower(mb->bd);
              e_mod_move_mini_apptray_dim_hide(mb);
           }
 
@@ -371,15 +429,14 @@ _e_mod_move_mini_apptray_flick_process(E_Move_Border *mb,
      }
 
    e_mod_move_flick_data_free(mb);
-// change later
-// doto flick-up
+
    switch (angle)
      {
-      case  90: x = mb->w * -1; y = 0;          break;
-      case 180: x = 0;          y = zone->h;    break;
-      case 270: x = zone->w;    y = 0;          break;
+      case  90: x = zone->w;    y = 0;          break;
+      case 180: x = 0;          y = mb->h * -1; break;
+      case 270:    x = mb->w * -1; y = 0;       break;
       case   0:
-      default : x = 0;          y = mb->h * -1; break;
+      default : x = 0;          y = zone->h;    break;
      }
 
    e_mod_move_mini_apptray_e_border_move(mb, x, y);
@@ -449,6 +506,23 @@ _e_mod_move_mini_apptray_dim_objs_apply(E_Move_Border *mb,
    return EINA_TRUE;
 }
 
+static Eina_Bool
+_e_mod_move_mini_apptray_ctl_event_send_policy_check(E_Move_Border *mb,
+                                                     Evas_Point     pos)
+{
+   int x = 0, y = 0, w = 0, h = 0;
+   Eina_Bool ret = EINA_FALSE;
+
+   E_CHECK_RETURN(mb, EINA_FALSE);
+   E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
+
+   e_mod_move_bd_move_ctl_objs_geometry_get(mb, &x ,&y, &w, &h);
+
+   if (E_INSIDE(pos.x, pos.y, x, y, w, h)) ret = EINA_TRUE;
+
+   return ret;
+}
+
 /* externally accessible functions */
 EINTERN void
 e_mod_move_mini_apptray_ctl_obj_event_setup(E_Move_Border         *mb,
@@ -470,7 +544,8 @@ e_mod_move_mini_apptray_ctl_obj_event_setup(E_Move_Border         *mb,
                            _e_mod_move_mini_apptray_cb_motion_move, mb);
    e_mod_move_event_cb_set(mco->event, E_MOVE_EVENT_TYPE_MOTION_END,
                            _e_mod_move_mini_apptray_cb_motion_end, mb);
-   e_mod_move_event_send_all_set(mco->event, EINA_TRUE);
+   e_mod_move_event_propagate_type_set(mco->event,
+                                       E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY);
 }
 
 EINTERN E_Move_Border *
@@ -548,6 +623,27 @@ e_mod_move_mini_apptray_objs_add(E_Move_Border *mb)
         e_mod_move_bd_move_objs_move(mb, mb->x, mb->y);
         e_mod_move_bd_move_objs_resize(mb, mb->w, mb->h);
         e_mod_move_bd_move_objs_show(mb);
+        if (mb->objs) e_mod_move_util_rotation_lock(mb->m);
+     }
+   return EINA_TRUE;
+}
+
+EINTERN Eina_Bool
+e_mod_move_mini_apptray_objs_add_with_pos(E_Move_Border *mb,
+                                          int            x,
+                                          int            y)
+{
+   Eina_Bool mirror = EINA_TRUE;
+   E_CHECK_RETURN(mb, EINA_FALSE);
+   E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
+
+   if (!(mb->objs))
+     {
+        mb->objs = e_mod_move_bd_move_objs_add(mb, mirror);
+        e_mod_move_bd_move_objs_move(mb, x, y);
+        e_mod_move_bd_move_objs_resize(mb, mb->w, mb->h);
+        e_mod_move_bd_move_objs_show(mb);
+        if (mb->objs) e_mod_move_util_rotation_lock(mb->m);
      }
    return EINA_TRUE;
 }
@@ -558,6 +654,7 @@ e_mod_move_mini_apptray_objs_del(E_Move_Border *mb)
    E_CHECK_RETURN(mb, EINA_FALSE);
    E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
    e_mod_move_bd_move_objs_del(mb, mb->objs);
+   e_mod_move_util_rotation_unlock(mb->m);
    mb->objs = NULL;
    return EINA_TRUE;
 }
@@ -720,6 +817,7 @@ e_mod_move_mini_apptray_internal_data_del(E_Move_Border *mb)
    e_mod_move_mini_apptray_dim_hide(mb);
    E_FREE(mini_apptray_data);
    mb->data = NULL;
+   e_mod_move_mini_apptray_widget_apply();// disable/destory mini_apptray_widget related datas
    return EINA_TRUE;
 }
 
@@ -741,7 +839,6 @@ e_mod_move_mini_apptray_e_border_move(E_Move_Border *mb,
                   zone->w, zone->h,
                   x, y, mb->w, mb->h))
      {
-        e_border_raise(mb->bd);
         e_border_focus_set(mb->bd, 1, 1);
      }
    else
@@ -799,7 +896,6 @@ e_mod_move_mini_apptray_dim_show(E_Move_Border *mb)
         e_mod_move_bd_move_dim_objs_show(mini_apptray_data->dim_objs);
         mini_apptray_data->opacity = dim_min;
         mb->data = mini_apptray_data;
-        e_mod_move_util_rotation_lock(mb->m);
      }
    else
      {
@@ -809,8 +905,6 @@ e_mod_move_mini_apptray_dim_show(E_Move_Border *mb)
              e_mod_move_util_compositor_composite_mode_set(mb->m, EINA_TRUE);
 
              mini_apptray_data->dim_objs = e_mod_move_bd_move_dim_objs_add(mb);
-             if (mini_apptray_data->dim_objs)
-                e_mod_move_util_rotation_lock(mb->m);
           }
         if (mini_apptray_data->dim_objs)
           {
@@ -843,8 +937,6 @@ e_mod_move_mini_apptray_dim_hide(E_Move_Border *mb)
    mini_apptray_data->dim_objs = NULL;
    mini_apptray_data->opacity = dim_min;
 
-   e_mod_move_util_rotation_unlock(mb->m);
-
    // Composite mode set false
    e_mod_move_util_compositor_composite_mode_set(mb->m, EINA_FALSE);
 
@@ -861,21 +953,37 @@ e_mod_move_mini_apptray_objs_animation_start_position_set(E_Move_Border *mb,
 {
    E_Zone *zone;
    int x, y;
+   int cx, cy, cw, ch;
+   Eina_Bool contents_region = EINA_FALSE;
 
    E_CHECK_RETURN(mb, EINA_FALSE);
    E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
 
    angle = ((angle % 360) / 90) * 90;
    zone = mb->bd->zone;
+   contents_region = e_mod_move_border_contents_rect_get(mb, &cx, &cy ,&cw, &ch);
+
 // change later
 // todo flick-up position
    switch (angle)
      {
-      case  90: x = zone->x + zone->w; y = 0;                 break;
-      case 180: x = 0;                 y = mb->h * -1;        break;
-      case 270: x = mb->w * -1;        y = 0;                 break;
+      case  90:
+         if (contents_region) { x = zone->x + zone->w - cx; y = 0; }
+         else                 { x = zone->x + zone->w;      y = 0; }
+         break;
+      case 180:
+         if (contents_region) { x = 0; y = mb->h * -1 + (mb->h - ch); }
+         else                 { x = 0; y = mb->h * -1;                }
+         break;
+      case 270:
+         if (contents_region) { x = mb->w * -1 + (mb->w - cw); y = 0; }
+         else                 { x = mb->w * -1;                y = 0; }
+         break;
       case   0:
-      default : x = 0;                 y = zone->y + zone->h; break;
+      default :
+         if (contents_region) { x = 0; y = zone->y + zone->h - cy; }
+         else                 { x = 0; y = zone->y + zone->h;      }
+         break;
      }
 
    _e_mod_move_mini_apptray_objs_position_set(mb, x, y);
index eb299ae..08c93ef 100644 (file)
@@ -29,6 +29,7 @@ EINTERN E_Move_Border *e_mod_move_mini_apptray_find(void);
 EINTERN Eina_Bool e_mod_move_mini_apptray_click_get(void);
 EINTERN Eina_Bool e_mod_move_mini_apptray_event_clear(void);
 EINTERN Eina_Bool e_mod_move_mini_apptray_objs_add(E_Move_Border *mb);
+EINTERN Eina_Bool e_mod_move_mini_apptray_objs_add_with_pos(E_Move_Border *mb, int x, int y);
 EINTERN Eina_Bool e_mod_move_mini_apptray_objs_del(E_Move_Border *mb);
 EINTERN Eina_Bool e_mod_move_mini_apptray_objs_move(E_Move_Border *mb, int x, int y);
 EINTERN Eina_Bool e_mod_move_mini_apptray_objs_raise(E_Move_Border *mb);
index 9f4bbc6..f6f7acf 100644 (file)
@@ -3,14 +3,16 @@
 #include "e_mod_move.h"
 
 /* local subsystem functions */
-static Eina_Bool _e_mod_move_mini_apptray_widget_mini_apptray_move_set(E_Move_Mini_Apptray_Widget *mini_apptray_widget, Eina_Bool state);
-static Eina_Bool _e_mod_move_mini_apptray_widget_mini_apptray_move_get(E_Move_Mini_Apptray_Widget *mini_apptray_widget);
-static Eina_Bool _e_mod_move_mini_apptray_widget_cb_motion_start_internal_mini_apptray_check(E_Move_Border *mini_apptray_mb);
-static Eina_Bool _e_mod_move_mini_apptray_widget_mini_apptray_flick_process(E_Move_Mini_Apptray_Widget *mini_apptray_widget, E_Move_Border *mb2, int angle, Eina_Bool state);
-static Eina_Bool _e_mod_move_mini_apptray_widget_cb_motion_start(void *data, void *event_info);
-static Eina_Bool _e_mod_move_mini_apptray_widget_cb_motion_move(void *data, void *event_info);
-static Eina_Bool _e_mod_move_mini_apptray_widget_cb_motion_end(void *data, void *event_info);
-static void      _e_mod_move_mini_apptray_widget_obj_event_setup(E_Move_Mini_Apptray_Widget *mini_apptray_widget, E_Move_Widget_Object *mwo);
+static Eina_Bool      _e_mod_move_mini_apptray_widget_mini_apptray_move_set(E_Move_Mini_Apptray_Widget *mini_apptray_widget, Eina_Bool state);
+static Eina_Bool      _e_mod_move_mini_apptray_widget_mini_apptray_move_get(E_Move_Mini_Apptray_Widget *mini_apptray_widget);
+static Eina_Bool      _e_mod_move_mini_apptray_widget_cb_motion_start_internal_mini_apptray_check(E_Move_Border *mini_apptray_mb);
+static Eina_Bool      _e_mod_move_mini_apptray_widget_mini_apptray_flick_process(E_Move_Mini_Apptray_Widget *mini_apptray_widget, E_Move_Border *mb2, int angle, Eina_Bool state);
+static Eina_Bool      _e_mod_move_mini_apptray_widget_cb_motion_start(void *data, void *event_info);
+static Eina_Bool      _e_mod_move_mini_apptray_widget_cb_motion_move(void *data, void *event_info);
+static Eina_Bool      _e_mod_move_mini_apptray_widget_cb_motion_end(void *data, void *event_info);
+static Ecore_X_Window _e_mod_move_mini_apptray_event_win_find(void *event_info);
+static void           _e_mod_move_mini_apptray_widget_obj_event_setup(E_Move_Mini_Apptray_Widget *mini_apptray_widget, E_Move_Widget_Object *mwo);
+static Eina_Bool      _e_mod_move_mini_apptray_widget_event_send_policy_check(E_Move_Mini_Apptray_Widget *mini_apptray_widget, Evas_Point pos);
 
 /* local subsystem functions */
 static Eina_Bool
@@ -56,18 +58,21 @@ _e_mod_move_mini_apptray_widget_cb_motion_start_internal_mini_apptray_check(E_Mo
               break;
           }
      }
+
    if (found
-        && (find_mb->bd->client.netwm.type == ECORE_X_WINDOW_TYPE_NOTIFICATION))
+        && (find_mb->bd->client.netwm.type == ECORE_X_WINDOW_TYPE_NOTIFICATION)
+        && REGION_EQUAL_TO_ZONE(find_mb, find_mb->bd->zone))
      {
         return EINA_FALSE;
      }
    // check if notification window is on-screen.
 
    e_mod_move_mini_apptray_dim_show(mini_apptray_mb);
-   e_mod_move_mini_apptray_objs_add(mini_apptray_mb);
 
-   // mini_apptray_objs_animation_layer_set
-   e_mod_move_mini_apptray_objs_animation_layer_set(mini_apptray_mb);
+   if (REGION_INSIDE_ZONE(mini_apptray_mb, mini_apptray_mb->bd->zone))
+     e_mod_move_mini_apptray_objs_add_with_pos(mini_apptray_mb, -10000, -10000);
+   else
+     e_mod_move_mini_apptray_objs_add(mini_apptray_mb);
 
    return EINA_TRUE;
 }
@@ -146,13 +151,27 @@ _e_mod_move_mini_apptray_widget_cb_motion_start(void *data,
    Evas_Event_Mouse_Down *mouse_down_event = NULL;
    Eina_Bool clicked = EINA_FALSE;
    Eina_List *l;
+   E_Move_Border *ev_mb = NULL;
+   Ecore_X_Window ev_win = 0;
 
    info  = (E_Move_Event_Motion_Info *)event_info;
    m = e_mod_move_util_get();
 
    E_CHECK_RETURN(mini_apptray_widget, EINA_FALSE);
-   mb = e_mod_move_border_client_find(mini_apptray_widget->win);
 
+   // clicked window indicator policy check
+   EINA_LIST_FOREACH(mini_apptray_widget->objs, l, mwo)
+     {
+        if (!mwo) continue;
+        ev_win = e_mod_move_event_win_get(mwo->event);
+     }
+   ev_mb = e_mod_move_border_client_find(ev_win);
+   // Check Mini Apptray State ( property )
+   if ((ev_mb)
+        && (ev_mb->mini_apptray_state == E_MOVE_MINI_APPTRAY_STATE_OFF))
+     return EINA_FALSE;
+
+   mb = e_mod_move_border_client_find(mini_apptray_widget->win);
    if (!m || !mb || !mini_apptray_widget || !info) return EINA_FALSE;
 
    mouse_down_event = info->event_info;
@@ -178,7 +197,7 @@ _e_mod_move_mini_apptray_widget_cb_motion_start(void *data,
    /* check if apptray exists on the current zone */
    mini_apptray_mb = e_mod_move_mini_apptray_find();
    if ((mini_apptray_mb) &&
-       (REGION_INSIDE_ZONE(mini_apptray_mb, mb->bd->zone)))
+       (mini_apptray_mb->visibility == E_MOVE_VISIBILITY_STATE_VISIBLE))
      {
         L(LT_EVENT_OBJ,
           "[MOVE] ev:%15.15s w:0x%08x MINI_APPTRAY_WIDGET_MOTION_START %s\n",
@@ -187,6 +206,12 @@ _e_mod_move_mini_apptray_widget_cb_motion_start(void *data,
         return EINA_FALSE;
      }
 
+   if ((mini_apptray_mb) &&
+       (REGION_INSIDE_ZONE(mini_apptray_mb, mb->bd->zone)))
+     {
+        e_mod_move_mini_apptray_e_border_move(mini_apptray_mb, -10000, -10000);
+     }
+
    EINA_LIST_FOREACH(mini_apptray_widget->objs, l, mwo)
      {
         if (!mwo) continue;
@@ -201,7 +226,7 @@ _e_mod_move_mini_apptray_widget_cb_motion_start(void *data,
         goto error_cleanup;
      }
 
-   e_mod_move_mini_apptray_e_border_raise(mini_apptray_mb);
+   //e_mod_move_mini_apptray_e_border_raise(mini_apptray_mb);
    _e_mod_move_mini_apptray_widget_mini_apptray_move_set(mini_apptray_widget, EINA_TRUE);
    e_mod_move_mini_apptray_objs_animation_start_position_set(mini_apptray_mb,
                                                              mb->angle);
@@ -239,6 +264,8 @@ _e_mod_move_mini_apptray_widget_cb_motion_move(void *data,
    Eina_List                   *l;
    Eina_Bool                    click = EINA_FALSE;
    int                          angle;
+   Eina_Bool                    flick_state = EINA_FALSE;
+   E_Move_Border               *mini_apptray_mb = NULL;
 
    info  = (E_Move_Event_Motion_Info *)event_info;
    m = e_mod_move_util_get();
@@ -261,10 +288,24 @@ _e_mod_move_mini_apptray_widget_cb_motion_move(void *data,
         if (!mwo) continue;
         click = e_mod_move_event_click_get(mwo->event);
      }
-
    E_CHECK_RETURN(click, EINA_FALSE);
 
-// do not work on moving just work on flick action
+   // do not work on moving just work on flick action
+   e_mod_move_flick_data_update(mb, info->coord.x, info->coord.y);
+   flick_state = e_mod_move_flick_state_get2(mb);
+
+   if (_e_mod_move_mini_apptray_widget_mini_apptray_move_get(mini_apptray_widget))
+     {
+        mini_apptray_mb = e_mod_move_mini_apptray_find();
+
+        if (_e_mod_move_mini_apptray_widget_mini_apptray_flick_process(mini_apptray_widget,
+                                                                       mini_apptray_mb,
+                                                                       angle, flick_state))
+          {
+             return EINA_TRUE;
+          }
+     }
+
 #if 0
    if (_e_mod_move_mini_apptray_widget_mini_apptray_move_get(mini_apptray_widget))
      {
@@ -308,8 +349,9 @@ _e_mod_move_mini_apptray_widget_cb_motion_move(void *data,
         if (need_move)
           e_mod_move_mini_apptray_objs_move(mini_apptray_mb, x, y);
      }
-#endif
+
    mini_apptray_widget->pos = info->coord; // save mouse move position
+#endif
 
    return EINA_TRUE;
 }
@@ -330,6 +372,7 @@ _e_mod_move_mini_apptray_widget_cb_motion_end(void *data,
    Eina_Bool                    click = EINA_FALSE;
    Eina_Bool                    flick_state = EINA_FALSE;
    int                          angle = 0;
+   Ecore_X_Window               ev_win = 0;
 
    info  = (E_Move_Event_Motion_Info *)event_info;
    m = e_mod_move_util_get();
@@ -360,7 +403,7 @@ _e_mod_move_mini_apptray_widget_cb_motion_end(void *data,
    E_CHECK_GOTO(click, error_cleanup);
 
    e_mod_move_flick_data_update(mb, info->coord.x, info->coord.y);
-   flick_state = e_mod_move_flick_state_get(mb, EINA_TRUE);
+   flick_state = e_mod_move_flick_state_get2(mb);
 
    if (_e_mod_move_mini_apptray_widget_mini_apptray_move_get(mini_apptray_widget))
      {
@@ -377,9 +420,7 @@ _e_mod_move_mini_apptray_widget_cb_motion_end(void *data,
              // if mini_apptray animation is not called, must destory datas explicit
              if (mini_apptray_mb)
                {
-                  e_mod_move_mini_apptray_objs_animation_layer_unset(mini_apptray_mb);
                   e_border_focus_set(mini_apptray_mb ->bd, 0, 0);
-                  e_border_lower(mini_apptray_mb ->bd);
                   e_mod_move_mini_apptray_dim_hide(mini_apptray_mb );
                   e_mod_move_mini_apptray_objs_del(mini_apptray_mb );
                }
@@ -462,6 +503,21 @@ _e_mod_move_mini_apptray_widget_cb_motion_end(void *data,
      }
 #endif
 
+   // if flick check fail then, redirect event
+   EINA_LIST_FOREACH(mini_apptray_widget->objs, l, mwo)
+     {
+        if (!mwo) continue;
+        ev_win = e_mod_move_event_win_get(mwo->event);
+     }
+
+   if (ev_win)
+     {
+        e_mod_move_mouse_event_send(ev_win, E_MOVE_MOUSE_EVENT_MOVE, mini_apptray_widget->pos);
+        e_mod_move_mouse_event_send(ev_win, E_MOVE_MOUSE_EVENT_DOWN, mini_apptray_widget->pos);
+        e_mod_move_mouse_event_send(ev_win, E_MOVE_MOUSE_EVENT_MOVE, info->coord);
+        e_mod_move_mouse_event_send(ev_win, E_MOVE_MOUSE_EVENT_UP, info->coord);
+     }
+
    mini_apptray_widget->pos = info->coord; // save mouse up position
 
    EINA_LIST_FOREACH(mini_apptray_widget->objs, l, mwo)
@@ -477,6 +533,28 @@ error_cleanup:
    return EINA_TRUE;
 }
 
+static Ecore_X_Window
+_e_mod_move_mini_apptray_event_win_find(void *event_info)
+{
+   E_Move_Event_Motion_Info *info = NULL;
+   E_Border                 *find_bd = NULL;
+   Ecore_X_Window            win = 0;
+   info  = (E_Move_Event_Motion_Info *)event_info;
+
+   E_CHECK_RETURN(info, 0);
+
+   find_bd = e_mod_move_util_border_find_by_pointer(info->coord.x, info->coord.y);
+
+   if (find_bd) win = find_bd->client.win;
+   else win = 0;
+
+   L(LT_EVENT_OBJ,
+     "[MOVE] ev:%15.15s MINI_APPTRAY_EVENT_WIN_FIND w:0x%08x (%4d,%4d)\n",
+     "EVAS_OBJ", win, info->coord.x, info->coord.y);
+
+   return win;
+}
+
 static void
 _e_mod_move_mini_apptray_widget_obj_event_setup(E_Move_Mini_Apptray_Widget *mini_apptray_widget,
                                                 E_Move_Widget_Object    *mwo)
@@ -501,8 +579,26 @@ _e_mod_move_mini_apptray_widget_obj_event_setup(E_Move_Mini_Apptray_Widget *mini
    e_mod_move_event_cb_set(mwo->event, E_MOVE_EVENT_TYPE_MOTION_END,
                            _e_mod_move_mini_apptray_widget_cb_motion_end,
                            mini_apptray_widget);
-   e_mod_move_event_send_all_set(mwo->event, EINA_TRUE);
-   e_mod_move_event_find_redirect_win_set(mwo->event, EINA_TRUE);
+   e_mod_move_event_propagate_type_set(mwo->event,
+                                       E_MOVE_EVENT_PROPAGATE_TYPE_NONE);
+   e_mod_move_event_win_find_cb_set(mwo->event,
+                                    _e_mod_move_mini_apptray_event_win_find);
+}
+
+static Eina_Bool
+_e_mod_move_mini_apptray_widget_event_send_policy_check(E_Move_Mini_Apptray_Widget *mini_apptray_widget,
+                                                        Evas_Point                  pos)
+{
+   int x = 0, y = 0, w = 0, h = 0;
+   Eina_Bool ret = EINA_FALSE;
+
+   E_CHECK_RETURN(mini_apptray_widget, EINA_FALSE);
+
+   e_mod_move_widget_objs_geometry_get(mini_apptray_widget->objs, &x ,&y, &w, &h);
+
+   if (E_INSIDE(pos.x, pos.y, x, y, w, h)) ret = EINA_TRUE;
+
+   return ret;
 }
 
 /* externally accessible functions */
@@ -550,6 +646,7 @@ e_mod_move_mini_apptray_widget_target_window_find(Ecore_X_Window *win)
    m = e_mod_move_util_get();
    E_CHECK_RETURN(m, EINA_FALSE);
 
+   // fix later
    EINA_INLIST_REVERSE_FOREACH(m->borders, find_mb)
      {
         if (!find_mb->bd) continue;
@@ -582,14 +679,23 @@ e_mod_move_mini_apptray_widget_target_window_find(Ecore_X_Window *win)
 EINTERN void
 e_mod_move_mini_apptray_widget_apply(void)
 {
-   E_Move         *m = NULL;
-   Ecore_X_Window  target_win;
+   E_Move                     *m = NULL;
    E_Move_Mini_Apptray_Widget *mini_apptray_widget = NULL;
+   E_Move_Border              *mini_apptray_mb = NULL;
+   Ecore_X_Window              target_win;
 
    m = e_mod_move_util_get();
    E_CHECK(m);
 
-   E_CHECK(e_mod_move_mini_apptray_find());
+   if (m->screen_reader_state) return;
+
+   mini_apptray_mb = e_mod_move_mini_apptray_find();
+   if (!mini_apptray_mb)
+     {
+        if ((mini_apptray_widget = e_mod_move_mini_apptray_widget_get()))
+          e_mod_move_mini_apptray_widget_del(mini_apptray_widget);
+        return;
+     }
 
    if (e_mod_move_mini_apptray_widget_target_window_find(&target_win))
      {
@@ -693,21 +799,16 @@ e_mod_move_mini_apptray_widget_add(Ecore_X_Window win)
         e_mod_move_widget_objs_raise(mini_apptray_widget->objs);
 
         // Set Input Shape Mask
-        switch (e_mod_move_util_root_angle_get())
+        // change later
+        if ((mini_apptray_widget->input_region_id = e_manager_comp_input_region_id_new(m->man)))
           {
-           case  90:
-           case 180:
-           case 270:
-              // currently, support angle 0 only. because, application is not ready yet.
-              break;
-           case   0:
-           default :
-              e_manager_comp_input_region_set(m->man,
-                                              m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].x,
-                                              m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].y,
-                                              m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].w,
-                                              m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].h);
-              break;
+             e_manager_comp_input_region_id_set(m->man,
+                                                mini_apptray_widget->input_region_id,
+                                                x, y, w, h);
+          }
+        else
+          {
+             goto error_cleanup;
           }
      }
    else
@@ -743,16 +844,15 @@ e_mod_move_mini_apptray_widget_del(E_Move_Mini_Apptray_Widget *mini_apptray_widg
    E_CHECK(mini_apptray_widget);
    m = e_mod_move_util_get();
 
-   if (e_mod_move_mini_apptray_widget_click_get(mini_apptray_widget))
-     ecore_x_mouse_up_send(mini_apptray_widget->win,
-                           mini_apptray_widget->pos.x,
-                           mini_apptray_widget->pos.y,
-                           1);
-
    if ((mb = e_mod_move_border_client_find(mini_apptray_widget->win)))
      {
         // compositor's input region free
-        e_manager_comp_input_region_set(m->man, 0, 0, 0, 0);
+        // change later
+        if (mini_apptray_widget->input_region_id)
+          {
+             e_manager_comp_input_region_id_del(m->man,
+                                                mini_apptray_widget->input_region_id);
+          }
 
         // if mini_apptray_widget is deleted, then mini_apptray's mirror object hide with animation
         if (mini_apptray_widget->mini_apptray_move)
@@ -761,28 +861,24 @@ e_mod_move_mini_apptray_widget_del(E_Move_Mini_Apptray_Widget *mini_apptray_widg
              E_CHECK_GOTO(mini_apptray_mb, error_cleanup);
              zone = mini_apptray_mb->bd->zone;
 
-// following geometry will be changed. for flick-down effect
              switch (mb->angle)
                {
-                case   0:
-                   x = 0;
-                   y = mini_apptray_mb->h * -1;
-                   break;
                 case  90:
-                   x = mini_apptray_mb->w * -1;
+                   x = zone->w;
                    y = 0;
                    break;
                 case 180:
                    x = 0;
-                   y = zone->h;
+                   y = mini_apptray_mb->h * -1;
                    break;
                 case 270:
-                   x = zone->w;
+                   x = mini_apptray_mb->w * -1;
                    y = 0;
                    break;
+                case   0:
                 default :
                    x = 0;
-                   y = mini_apptray_mb->h * -1;
+                   y = zone->h;
                    break;
                }
              if (e_mod_move_mini_apptray_objs_animation_state_get(mini_apptray_mb))
@@ -792,9 +888,6 @@ e_mod_move_mini_apptray_widget_del(E_Move_Mini_Apptray_Widget *mini_apptray_widg
                }
              e_mod_move_mini_apptray_objs_add(mini_apptray_mb);
 
-             // mini_apptray_objs_animation_layer_set
-             e_mod_move_mini_apptray_objs_animation_layer_set(mini_apptray_mb);
-
              e_mod_move_mini_apptray_e_border_move(mini_apptray_mb, x, y);
              e_mod_move_mini_apptray_objs_animation_move(mini_apptray_mb, x, y);
              L(LT_EVENT_OBJ,
@@ -864,21 +957,12 @@ e_mod_move_mini_apptray_widget_angle_change(Ecore_X_Window win)
               e_mod_move_widget_objs_resize(mini_apptray_widget->objs, w, h);
 
               // Set Input Shape Mask
-              switch (e_mod_move_util_root_angle_get())
+              // change later
+              if (mini_apptray_widget->input_region_id)
                 {
-                 case  90:
-                 case 180:
-                 case 270:
-                    // currently, support angle 0 only. because, application is not ready yet.
-                    break;
-                 case   0:
-                 default :
-                    e_manager_comp_input_region_set(m->man,
-                                                    m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].x,
-                                                    m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].y,
-                                                    m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].w,
-                                                    m->mini_apptray_widget_geometry[E_MOVE_ANGLE_0].h);
-                    break;
+                   e_manager_comp_input_region_id_set(m->man,
+                                                      mini_apptray_widget->input_region_id,
+                                                      x, y, w, h);
                 }
 
               ret = EINA_TRUE;
index b763579..36cc1d8 100644 (file)
@@ -9,6 +9,7 @@ struct _E_Move_Mini_Apptray_Widget
    Ecore_X_Window  win;
    Eina_Bool       mini_apptray_move;
    Evas_Point      pos; // mouse position
+   int             input_region_id;
 };
 
 typedef struct _E_Move_Mini_Apptray_Widget E_Move_Mini_Apptray_Widget;
index e5f51ea..c2a4225 100644 (file)
@@ -46,7 +46,8 @@ e_mod_move_obj_add(E_Move_Border *mb,
              mo->obj = e_manager_comp_src_shadow_get(m->man, comp_src);
              E_CHECK_GOTO(mo->obj, error_cleanup);
              evas_object_data_set(mo->obj,"comp_shadow_obj", mo->obj);
-
+             //comp's shadow obj move lock
+             e_manager_comp_src_move_lock(m->man, comp_src);
              evas_object_event_callback_add(mo->obj, EVAS_CALLBACK_DEL,
                                             _e_mod_move_cb_comp_object_del, mb);
           }
@@ -121,12 +122,32 @@ EINTERN void
 e_mod_move_bd_move_objs_del(E_Move_Border *mb,
                             Eina_List     *objs)
 {
+   E_Move *m = NULL;
+   E_Manager_Comp_Source *comp_src = NULL;
    E_Move_Object *mo;
+
    E_CHECK(mb);
    E_CHECK(objs);
+
+   m = mb->m;
+   E_CHECK(m);
+
    EINA_LIST_FREE(objs, mo)
      {
         if (mo->mirror) e_mod_move_util_border_hidden_set(mb, EINA_FALSE);
+        else
+          {
+              if (mb->bd)
+                {
+                   comp_src = e_manager_comp_src_get(m->man, mb->bd->win);
+                   if (comp_src)
+                     {
+                        e_mod_move_bd_move_objs_move(mb, mb->x, mb->y);
+                        //comp's shadow obj move unlock
+                        e_manager_comp_src_move_unlock(m->man, comp_src);
+                     }
+                }
+          }
         e_mod_move_obj_del(mo);
      }
 }
@@ -150,6 +171,9 @@ e_mod_move_bd_move_objs_move(E_Move_Border *mb,
              zy = mo->zone->y;
           }
         evas_object_move(mo->obj, x - zx, y - zy);
+
+        mo->geometry.x = x;
+        mo->geometry.y = y;
      }
 }
 
@@ -166,6 +190,9 @@ e_mod_move_bd_move_objs_resize(E_Move_Border *mb,
         if (!mo) continue;
         if (!mo->obj) continue;
         evas_object_resize(mo->obj, w, h);
+
+        mo->geometry.w = w;
+        mo->geometry.h = h;
      }
 }
 
@@ -409,6 +436,32 @@ e_mod_move_bd_move_objs_clipper_resize(E_Move_Border *mb,
      }
 }
 
+EINTERN void
+e_mod_move_bd_move_objs_geometry_get(E_Move_Border *mb,
+                                     int           *x,
+                                     int           *y,
+                                     int           *w,
+                                     int           *h)
+{
+   Eina_List *l;
+   E_Move_Object *mo;
+
+   E_CHECK(mb);
+   E_CHECK(x);
+   E_CHECK(y);
+   E_CHECK(w);
+   E_CHECK(h);
+
+   EINA_LIST_FOREACH(mb->objs, l, mo)
+     {
+        if (!mo) continue;
+        *x = mo->geometry.x;
+        *y = mo->geometry.y;
+        *w = mo->geometry.w;
+        *h = mo->geometry.h;
+     }
+}
+
 /* local subsystem functions */
 static void
 _e_mod_move_cb_comp_object_del(void            *data,
index d61ebee..c817b66 100644 (file)
@@ -13,6 +13,13 @@ struct _E_Move_Object
    Evas_Object   *obj;    // compositor's evas(window) object
    Eina_Bool      mirror; // TRUE: use compositor's mirror_obj / FALSE: use compositor's shadow_obj
    Evas_Object   *clipper;// clipping evas object
+
+   struct {
+     int x;
+     int y;
+     int w;
+     int h;
+   } geometry;
 };
 
 EINTERN E_Move_Object *e_mod_move_obj_add(E_Move_Border *mb, E_Move_Canvas *canvas, Eina_Bool mirror);
@@ -36,6 +43,7 @@ EINTERN void           e_mod_move_bd_move_objs_clipper_show(E_Move_Border *mb);
 EINTERN void           e_mod_move_bd_move_objs_clipper_hide(E_Move_Border *mb);
 EINTERN void           e_mod_move_bd_move_objs_clipper_move(E_Move_Border *mb, int x, int y);
 EINTERN void           e_mod_move_bd_move_objs_clipper_resize(E_Move_Border *mb, int w, int h);
+EINTERN void           e_mod_move_bd_move_objs_geometry_get(E_Move_Border *mb, int *x, int *y, int *w, int *h);
 
 #endif
 #endif
index 0850798..8c404a5 100644 (file)
@@ -668,6 +668,8 @@ _e_mod_move_quickpanel_objs_animation_frame(void  *data,
                 }
               // Set No Composite Mode & Rotation UnLock & Destroy below win's mirror object
               e_mod_move_quickpanel_stage_deinit(mb);
+
+              ecore_x_e_illume_quickpanel_state_set(zone->black_win, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
            }
 
          // if scroll with clipping use case, hold below windows until only animation is working
@@ -947,10 +949,16 @@ _e_mod_move_quickpanel_below_window_objs_add(void)
                   L(LT_EVENT_OBJ,
                     "[MOVE] ev:%15.15s w:0x%08x %s() \n",
                     "EVAS_OBJ", mb->bd->win, __func__);
-                  mb->objs = e_mod_move_bd_move_objs_add(mb, mirror);
-                  e_mod_move_bd_move_objs_move(mb, mb->x, mb->y);
-                  e_mod_move_bd_move_objs_resize(mb, mb->w, mb->h);
-                  e_mod_move_bd_move_objs_show(mb);
+
+                  if (TYPE_NOTIFICATION_CHECK(mb))
+                    mb->objs = e_mod_move_bd_move_objs_add(mb, !mirror);
+                  else
+                    {
+                       mb->objs = e_mod_move_bd_move_objs_add(mb, mirror);
+                       e_mod_move_bd_move_objs_move(mb, mb->x, mb->y);
+                       e_mod_move_bd_move_objs_resize(mb, mb->w, mb->h);
+                       e_mod_move_bd_move_objs_show(mb);
+                    }
                }
           }
      }
@@ -1524,7 +1532,8 @@ e_mod_move_quickpanel_ctl_obj_event_setup(E_Move_Border         *mb,
                            _e_mod_move_quickpanel_cb_motion_move, mb);
    e_mod_move_event_cb_set(mco->event, E_MOVE_EVENT_TYPE_MOTION_END,
                            _e_mod_move_quickpanel_cb_motion_end, mb);
-   e_mod_move_event_send_all_set(mco->event, EINA_TRUE);
+   e_mod_move_event_propagate_type_set(mco->event,
+                                       E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY);
 }
 
 EINTERN E_Move_Border *
@@ -1622,6 +1631,8 @@ e_mod_move_quickpanel_objs_add(E_Move_Border *mb)
         e_mod_move_bd_move_objs_resize(mb, mb->w, mb->h);
         e_mod_move_bd_move_objs_show(mb);
 
+        if (mb->objs) e_mod_move_util_rotation_lock(mb->m);
+
         if (m->qp_scroll_with_clipping)
           {
              e_mod_move_quickpanel_objs_clipper_add(mb);
@@ -1653,6 +1664,7 @@ e_mod_move_quickpanel_objs_del(E_Move_Border *mb)
      }
 
    e_mod_move_bd_move_objs_del(mb, mb->objs);
+   e_mod_move_util_rotation_unlock(mb->m);
 
    mb->objs = NULL;
 
@@ -1963,6 +1975,8 @@ e_mod_move_quickpanel_e_border_move(E_Move_Border *mb,
                                                             ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
                }
           }
+
+        ecore_x_e_illume_quickpanel_state_set(zone->black_win, ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
      }
 
    e_border_move(bd, x, y);
@@ -2248,7 +2262,6 @@ e_mod_move_quickpanel_stage_init(E_Move_Border *mb)
 
    // Composite mode set true
    e_mod_move_util_compositor_composite_mode_set(m, EINA_TRUE);
-   e_mod_move_util_rotation_lock(m);
 
    return EINA_TRUE;
 }
@@ -2269,8 +2282,6 @@ e_mod_move_quickpanel_stage_deinit(E_Move_Border *mb)
         _e_mod_move_quickpanel_below_window_unset();
      }
 
-   e_mod_move_util_rotation_unlock(m);
-
    // Composite mode set false
    e_mod_move_util_compositor_composite_mode_set(m, EINA_FALSE);
    return EINA_TRUE;
index 19ffd6d..b229281 100644 (file)
@@ -33,7 +33,6 @@ typedef enum _E_Move_Mini_Apptray_State              E_Move_Mini_Apptray_State;
 #include "e_mod_move_flick.h"
 #include "e_mod_move_dim_object.h"
 #include "e_mod_move_evas_object.h"
-#include "e_mod_move_indicator_controller.h"
 #include "e_mod_move_widget_object.h"
 #include "e_mod_move_indicator_widget.h"
 #include "e_mod_move_mini_apptray_widget.h"
@@ -112,19 +111,25 @@ struct _E_Move
       double landscape;
    } indicator_apptray_region_ratio; // indicator's always region ratio
 
+   struct {
+      double speed;
+      double angle;
+      double distance;
+      double distance_rate;
+   } flick_limit; // indicator / quickpanel / apptray flick limit check
+
    Eina_Bool                    qp_scroll_with_visible_win : 1;
    Eina_Bool                    qp_scroll_with_clipping : 1;
-   double                       flick_speed_limit; // indicator / quickpanel / apptray flick speed limit check
    double                       animation_duration; // apptray / quickpanel move animation duration
    int                          dim_max_opacity; // dim max opacity
    int                          dim_min_opacity; // dim min opacity
-   E_Move_Indicator_Controller *indicator_controller; // indicator_controller
    Eina_Bool                    ev_log : 1; // 1 :ecore & evas_object debug event logging  0: do not log event
    int                          ev_log_cnt; // ecore & evas_object debug event logging count
    Eina_List                   *ev_logs; // debug_event_log list
    Eina_Bool                    elm_indicator_mode : 1; // 1: indicator widget mode / 0: indicator window mode
    E_Move_Indicator_Widget     *indicator_widget; // indicator widget data ( it contains widget object, internal data)
    E_Move_Mini_Apptray_Widget  *mini_apptray_widget; // mini_apptray widget data ( it contains widget object, internal data)
+   Eina_Bool                    screen_reader_state : 1; // screen reader state  enabled  or disabled
 
    struct {
       int x;
@@ -151,6 +156,7 @@ struct _E_Move_Border
    Eina_List                             *objs; // list of E_Move_Object. ( it represts Compositor's Shadow Object or Mirror Object)
    Eina_List                             *ctl_objs; // list of E_Move_Control_Object. E_Move_Control_Object has E_Move_Event.
    Eina_Bool                              visible : 1; // is visible. if border is visible, Object could move.
+   Eina_Bool                              argb : 1; // is argb
    E_Move_Border_Type                     type;
    E_Move_Border_Shape_Input             *shape_input; // it reprents window's input shape mask info
    E_Move_Border_Contents                *contents; // it reprents window's contents region info
index f2c476c..8d1bbb2 100644 (file)
@@ -470,3 +470,241 @@ e_mod_move_util_root_angle_get(void)
 
    return angle;
 }
+
+EINTERN void
+e_mod_move_mouse_event_send(Ecore_X_Window          id,
+                            E_Move_Mouse_Event_Type type,
+                            Evas_Point              pt)
+{
+   E_Border  *bd = NULL;
+   Evas_Coord x = 0, y =0, w, h;
+   int        button = 1;
+
+   E_CHECK(id);
+
+   bd = e_border_find_all_by_client_window(id);
+   if (bd)
+     {
+        x = bd->x;
+        y = bd->y;
+        w = bd->w;
+        h = bd->h;
+     }
+   else ecore_x_window_geometry_get(id, &x, &y, &w, &h);
+
+   switch (type)
+     {
+      case E_MOVE_MOUSE_EVENT_DOWN:
+         e_mod_move_util_mouse_down_send(id,
+                                         pt.x - x,
+                                         pt.y - y,
+                                         button);
+         break;
+
+      case E_MOVE_MOUSE_EVENT_UP:
+         e_mod_move_util_mouse_up_send(id,
+                                       pt.x - x,
+                                       pt.y - y,
+                                       button);
+         break;
+
+      case E_MOVE_MOUSE_EVENT_MOVE:
+         e_mod_move_util_mouse_move_send(id,
+                                         pt.x -x,
+                                         pt.y -y);
+         break;
+
+      default:
+         break;
+    }
+}
+
+EINTERN Eina_Bool
+e_mod_move_util_mouse_down_send(Ecore_X_Window id,
+                                int x,
+                                int y,
+                                int button)
+{
+   XEvent xev;
+   Ecore_X_Window root;
+   int root_x = 0, root_y = 0;
+
+   root = ecore_x_window_root_get(id);
+   ecore_x_pointer_last_xy_get(&root_x, &root_y);
+   xev.xbutton.type = ButtonPress;
+   xev.xbutton.window = id;
+   xev.xbutton.root = root;
+   xev.xbutton.subwindow = id;
+   xev.xbutton.time = ecore_x_current_time_get();
+   xev.xbutton.x = x;
+   xev.xbutton.y = y;
+   xev.xbutton.x_root = root_x;
+   xev.xbutton.y_root = root_y;
+   xev.xbutton.state = 1 << button;
+   xev.xbutton.button = button;
+   xev.xbutton.same_screen = 1;
+   return XSendEvent(ecore_x_display_get(), id, True, ButtonPressMask, &xev) ? EINA_TRUE : EINA_FALSE;
+}
+
+EINTERN Eina_Bool
+e_mod_move_util_mouse_up_send(Ecore_X_Window id,
+                              int x,
+                              int y,
+                              int button)
+{
+   XEvent xev;
+   Ecore_X_Window root;
+   int root_x = 0, root_y = 0;
+
+   root = ecore_x_window_root_get(id);
+   ecore_x_pointer_last_xy_get(&root_x, &root_y);
+   xev.xbutton.type = ButtonRelease;
+   xev.xbutton.window = id;
+   xev.xbutton.root = root;
+   xev.xbutton.subwindow = id;
+   xev.xbutton.time = ecore_x_current_time_get();
+   xev.xbutton.x = x;
+   xev.xbutton.y = y;
+   xev.xbutton.x_root = root_x;
+   xev.xbutton.y_root = root_y;
+   xev.xbutton.state = 0;
+   xev.xbutton.button = button;
+   xev.xbutton.same_screen = 1;
+   return XSendEvent(ecore_x_display_get(), id, True, ButtonReleaseMask, &xev) ? EINA_TRUE : EINA_FALSE;
+}
+
+EINTERN Eina_Bool
+e_mod_move_util_mouse_move_send(Ecore_X_Window id,
+                                int x,
+                                int y)
+{
+   XEvent xev;
+   Ecore_X_Window root;
+   int root_x = 0, root_y = 0;
+
+   root = ecore_x_window_root_get(id);
+   ecore_x_pointer_last_xy_get(&root_x, &root_y);
+   xev.xmotion.type = MotionNotify;
+   xev.xmotion.window = id;
+   xev.xmotion.root = root;
+   xev.xmotion.subwindow = id;
+   xev.xmotion.time = ecore_x_current_time_get();
+   xev.xmotion.x = x;
+   xev.xmotion.y = y;
+   xev.xmotion.x_root = root_x;
+   xev.xmotion.y_root = root_y;
+   xev.xmotion.state = 0;
+   xev.xmotion.is_hint = 0;
+   xev.xmotion.same_screen = 1;
+   return XSendEvent(ecore_x_display_get(), id, True, PointerMotionMask, &xev) ? EINA_TRUE : EINA_FALSE;
+}
+
+EINTERN Eina_Bool
+e_mod_move_util_prop_indicator_cmd_win_get(Ecore_X_Window *win,
+                                           E_Move         *m)
+{
+   int            ret = -1;
+   Ecore_X_Window indi_cmd_win;
+
+   E_CHECK_RETURN(win, EINA_FALSE);
+   E_CHECK_RETURN(m, EINA_FALSE);
+
+   ret = ecore_x_window_prop_window_get(m->man->root,
+                                        ATOM_INDICATOR_CMD_WIN,
+                                        &indi_cmd_win, 1);
+
+   if (ret == -1) return EINA_FALSE;
+
+   *win = indi_cmd_win;
+
+   return EINA_TRUE;
+}
+
+EINTERN Eina_Bool
+e_mod_move_util_prop_indicator_cmd_win_set(Ecore_X_Window win,
+                                           E_Move        *m)
+{
+   Ecore_X_Window indi_cmd_win;
+
+   E_CHECK_RETURN(win, EINA_FALSE);
+   E_CHECK_RETURN(m, EINA_FALSE);
+
+   if (e_mod_move_util_prop_indicator_cmd_win_get(&indi_cmd_win, m))
+     {
+        if (indi_cmd_win != win )
+          ecore_x_window_prop_window_set(m->man->root,
+                                         ATOM_INDICATOR_CMD_WIN,
+                                         &win, 1);
+     }
+   else
+     {
+        ecore_x_window_prop_window_set(m->man->root,
+                                       ATOM_INDICATOR_CMD_WIN,
+                                       &win, 1);
+     }
+   return EINA_TRUE;
+}
+
+EINTERN Eina_Bool
+e_mod_move_util_prop_active_indicator_win_get(Ecore_X_Window *win,
+                                              E_Move         *m)
+{
+   int            ret_prop = -1;
+   Eina_Bool      ret = EINA_FALSE;
+   Ecore_X_Window indi_active_win;
+   Ecore_X_Window indi_cmd_win;
+
+   E_CHECK_RETURN(win, EINA_FALSE);
+   E_CHECK_RETURN(m, EINA_FALSE);
+
+   if (e_mod_move_util_prop_indicator_cmd_win_get(&indi_cmd_win, m))
+     {
+        ret_prop = ecore_x_window_prop_window_get(indi_cmd_win,
+                                                  ATOM_ACTIVE_INDICATOR_WIN,
+                                                  &indi_active_win, 1);
+        if (ret_prop != -1)
+          {
+             *win = indi_active_win;
+             ret = EINA_TRUE;
+          }
+     }
+
+   return ret;
+}
+
+EINTERN Eina_Bool
+e_mod_move_util_prop_active_indicator_win_set(Ecore_X_Window win,
+                                              E_Move        *m)
+{
+   Ecore_X_Window indi_active_win;
+   Ecore_X_Window indi_cmd_win;
+   Eina_Bool      ret = EINA_FALSE;
+
+   E_CHECK_RETURN(win, EINA_FALSE);
+   E_CHECK_RETURN(m, EINA_FALSE);
+
+   if (e_mod_move_util_prop_active_indicator_win_get(&indi_active_win, m))
+     {
+        if (indi_active_win != win )
+          {
+            if (e_mod_move_util_prop_indicator_cmd_win_get(&indi_cmd_win, m))
+              {
+                 ecore_x_window_prop_window_set(indi_cmd_win,
+                                                ATOM_ACTIVE_INDICATOR_WIN,
+                                                &win, 1);
+                 ret = EINA_TRUE;
+              }
+          }
+     }
+   else
+     {
+        if (e_mod_move_util_prop_indicator_cmd_win_get(&indi_cmd_win, m))
+          {
+             ecore_x_window_prop_window_set(indi_cmd_win,
+                                            ATOM_ACTIVE_INDICATOR_WIN,
+                                            &win, 1);
+             ret = EINA_TRUE;
+          }
+     }
+   return ret;
+}
index 7ea7046..72ffca4 100644 (file)
@@ -79,6 +79,14 @@ typedef enum _E_Move_Panel_Type
    E_MOVE_PANEL_TYPE_APPTRAY
 } E_Move_Panel_Type;
 
+typedef enum _E_Move_Mouse_Event_Type
+{
+   E_MOVE_MOUSE_EVENT_NONE = 0,
+   E_MOVE_MOUSE_EVENT_DOWN,
+   E_MOVE_MOUSE_EVENT_MOVE,
+   E_MOVE_MOUSE_EVENT_UP
+} E_Move_Mouse_Event_Type;
+
 EINTERN void                           e_mod_move_util_set(E_Move *m, E_Manager *man);
 EINTERN E_Move                        *e_mod_move_util_get(void);
 EINTERN Eina_Bool                      e_mod_move_util_border_visible_get(E_Move_Border *mb);
@@ -98,6 +106,13 @@ EINTERN E_Move_Scroll_Region_Indicator e_mod_move_indicator_region_scroll_check(
 EINTERN Eina_Bool                      e_mod_move_panel_scrollable_state_init(E_Move_Panel_Scrollable_State *panel_scrollable_state);
 EINTERN Eina_Bool                      e_mod_move_panel_scrollable_state_get(Ecore_X_Window win, E_Move_Panel_Scrollable_State *panel_scrollable_state);
 EINTERN Eina_Bool                      e_mod_move_panel_scrollable_get(E_Move_Border *mb, E_Move_Panel_Type type);
-
+EINTERN void                           e_mod_move_mouse_event_send(Ecore_X_Window id, E_Move_Mouse_Event_Type type, Evas_Point pt);
+EINTERN Eina_Bool                      e_mod_move_util_mouse_down_send(Ecore_X_Window id, int x, int y, int button);
+EINTERN Eina_Bool                      e_mod_move_util_mouse_up_send(Ecore_X_Window id, int x, int y, int button);
+EINTERN Eina_Bool                      e_mod_move_util_mouse_move_send(Ecore_X_Window id, int x, int y);
+EINTERN Eina_Bool                      e_mod_move_util_prop_indicator_cmd_win_get(Ecore_X_Window *win, E_Move *m);
+EINTERN Eina_Bool                      e_mod_move_util_prop_indicator_cmd_win_set(Ecore_X_Window win, E_Move *m);
+EINTERN Eina_Bool                      e_mod_move_util_prop_active_indicator_win_get(Ecore_X_Window *win, E_Move *m);
+EINTERN Eina_Bool                      e_mod_move_util_prop_active_indicator_win_set(Ecore_X_Window win, E_Move *m);
 #endif
 #endif
index 7373fb2..7e91e07 100644 (file)
@@ -127,6 +127,8 @@ e_mod_move_widget_objs_move(Eina_List *objs,
              zy = mwo->zone->y;
           }
         evas_object_move(mwo->obj, x - zx, y - zy);
+        mwo->geometry.x = x;
+        mwo->geometry.y = y;
      }
 }
 
@@ -136,13 +138,15 @@ e_mod_move_widget_objs_resize(Eina_List *objs,
                               int        h)
 {
    Eina_List *l;
-   E_Move_Evas_Object *meo;
+   E_Move_Widget_Object *mwo;
    E_CHECK(objs);
-   EINA_LIST_FOREACH(objs, l, meo)
+   EINA_LIST_FOREACH(objs, l, mwo)
      {
-        if (!meo) continue;
-        if (!meo->obj) continue;
-        evas_object_resize(meo->obj, w, h);
+        if (!mwo) continue;
+        if (!mwo->obj) continue;
+        evas_object_resize(mwo->obj, w, h);
+        mwo->geometry.w = w;
+        mwo->geometry.h = h;
      }
 }
 
@@ -267,3 +271,29 @@ e_mod_move_widget_objs_color_set(Eina_List *objs,
         evas_object_color_set(mwo->obj, r, g, b, a);
      }
 }
+
+EINTERN void
+e_mod_move_widget_objs_geometry_get(Eina_List *objs,
+                                    int       *x,
+                                    int       *y,
+                                    int       *w,
+                                    int       *h)
+{
+   Eina_List *l;
+   E_Move_Widget_Object *mwo;
+
+   E_CHECK(objs);
+   E_CHECK(x);
+   E_CHECK(y);
+   E_CHECK(w);
+   E_CHECK(h);
+
+   EINA_LIST_FOREACH(objs, l, mwo)
+     {
+        if (!mwo) continue;
+        *x = mwo->geometry.x;
+        *y = mwo->geometry.y;
+        *w = mwo->geometry.w;
+        *h = mwo->geometry.h;
+     }
+}
index bfd74aa..375a5eb 100644 (file)
@@ -12,6 +12,13 @@ struct _E_Move_Widget_Object
 
    Evas_Object   *obj;    // compositor's evas(window) object
    E_Move_Event  *event;  // evas object's event handler object
+
+   struct {
+     int x;
+     int y;
+     int w;
+     int h;
+   } geometry;
 };
 
 EINTERN E_Move_Widget_Object *e_mod_move_widget_obj_add(E_Move *m, E_Move_Canvas *canvas);
@@ -30,6 +37,7 @@ EINTERN void                  e_mod_move_widget_objs_lower(Eina_List *objs);
 EINTERN void                  e_mod_move_widget_objs_stack_above(Eina_List *objs, Eina_List *objs2);
 EINTERN void                  e_mod_move_widget_objs_layer_set(Eina_List *objs, short l);
 EINTERN void                  e_mod_move_widget_objs_color_set(Eina_List *objs, int r, int g, int b, int a);
+EINTERN void                  e_mod_move_widget_objs_geometry_get(Eina_List *objs, int *x, int *y, int *w, int *h);
 
 #endif
 #endif
index 9d95227..67981e5 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       e17-extra-modules
 Summary:    The E17 Extra Modules The E17 extra modules consists of modules made by SAMSUNG
-Version:    0.10.11
+Version:    0.11.1
 Release:    1
 Group:      System/GUI/Other
 License:    BSD