Merge branch 'upstream' into tizen 91/36591/1 accepted/tizen/common/20150311.094946 accepted/tizen/mobile/20150312.012000 accepted/tizen/tv/20150312.010602 accepted/tizen/wearable/20150312.011213 submit/tizen/20150311.085739
authorBoram Park <boram1288.park@samsung.com>
Tue, 10 Mar 2015 10:48:00 +0000 (19:48 +0900)
committerBoram Park <boram1288.park@samsung.com>
Tue, 10 Mar 2015 10:49:07 +0000 (19:49 +0900)
Conflicts:
.gitignore
.mailmap
AUTHORS
NEWS
README
README.wayland
autogen.sh
config/default/e.src
config/default/profile.desktop
config/mobile/e.src
config/mobile/e_bindings.src
config/mobile/profile.desktop
config/standard/e.src
config/standard/e_bindings.src
config/standard/profile.desktop
config/tiling/e.src
config/tiling/e_bindings.src
config/tiling/module.tiling.src
config/tiling/profile.desktop
configure.ac
data/Makefile.mk
data/desktop/enlightenment_filemanager.desktop
data/etc/sysactions.conf.in
data/favorites/desktop.desktop
data/favorites/home.desktop
data/favorites/root.desktop
data/favorites/tmp.desktop
data/input_methods/fcitx.imc
data/input_methods/gcin.imc
data/input_methods/hime.imc
data/tools/enlightenment_remote
data/xsession/enlightenment.desktop.in
netwm.txt
po/POTFILES.in
po/ar.po
po/bg.po
po/ca.po
po/cs.po
po/da.po
po/de.po
po/el.po
po/eo.po
po/es.po
po/et.po
po/fi.po
po/fo.po
po/fr.po
po/fr_CH.po
po/gl.po
po/he.po
po/hr.po
po/hu.po
po/it.po
po/ja.po
po/km.po
po/ko.po
po/lt.po
po/ms.po
po/nb.po
po/nl.po
po/pl.po
po/pt.po
po/pt_BR.po
po/ro.po
po/ru.po
po/sk.po
po/sl.po
po/sr.po
po/sv.po
po/tr.po
po/uk.po
po/zh_CN.po
po/zh_TW.po
src/bin/Makefile.mk
src/bin/e.h
src/bin/e_about.c
src/bin/e_actions.c
src/bin/e_alert.c
src/bin/e_alert_main.c
src/bin/e_atoms.c
src/bin/e_atoms.h
src/bin/e_auth.c
src/bin/e_auth.h
src/bin/e_backlight.c
src/bin/e_bg.c
src/bin/e_bindings.c
src/bin/e_client.c
src/bin/e_client.h
src/bin/e_color_dialog.c
src/bin/e_comp.c
src/bin/e_comp.h
src/bin/e_comp_canvas.c
src/bin/e_comp_canvas.h
src/bin/e_comp_cfdata.c
src/bin/e_comp_cfdata.h
src/bin/e_comp_object.c
src/bin/e_comp_object.h
src/bin/e_comp_wl.c
src/bin/e_comp_wl.h
src/bin/e_comp_wl_data.c
src/bin/e_comp_wl_input.c
src/bin/e_comp_x.c
src/bin/e_comp_x.h
src/bin/e_config.c
src/bin/e_config.h
src/bin/e_config_dialog.c
src/bin/e_config_dialog.h
src/bin/e_configure.c
src/bin/e_configure.h
src/bin/e_confirm_dialog.c
src/bin/e_desk.c
src/bin/e_desklock.c
src/bin/e_deskmirror.c
src/bin/e_desktop_editor.c
src/bin/e_dialog.c
src/bin/e_dialog.h
src/bin/e_dnd.c
src/bin/e_dpms.c
src/bin/e_entry_dialog.c
src/bin/e_exec.c
src/bin/e_fm.c
src/bin/e_fm/Makefile.mk
src/bin/e_fm/e_fm_ipc.c
src/bin/e_fm/e_fm_main_eeze.c
src/bin/e_fm_op.h
src/bin/e_fm_prop.c
src/bin/e_fm_shared_device.c
src/bin/e_font.c
src/bin/e_gadcon.c
src/bin/e_gadcon_popup.c
src/bin/e_grab_dialog.c
src/bin/e_grab_dialog.h
src/bin/e_grabinput.c
src/bin/e_hints.c
src/bin/e_hints.h
src/bin/e_ilist.c
src/bin/e_import_config_dialog.c
src/bin/e_import_config_dialog.h
src/bin/e_import_dialog.c
src/bin/e_import_dialog.h
src/bin/e_includes.h
src/bin/e_init.c
src/bin/e_int_client_locks.c
src/bin/e_int_client_menu.c
src/bin/e_int_client_prop.c
src/bin/e_int_client_remember.c
src/bin/e_int_config_comp.c
src/bin/e_int_config_comp_match.c
src/bin/e_int_config_modules.c
src/bin/e_int_config_modules.h
src/bin/e_int_gadcon_config.c
src/bin/e_int_menus.c
src/bin/e_int_shelf_config.c
src/bin/e_int_toolbar_config.c
src/bin/e_livethumb.c
src/bin/e_main.c
src/bin/e_menu.c
src/bin/e_module.c
src/bin/e_mouse.c
src/bin/e_moveresize.c
src/bin/e_msgbus.c
src/bin/e_notification.c
src/bin/e_obj_dialog.c
src/bin/e_obj_dialog.h
src/bin/e_object.h
src/bin/e_order.c
src/bin/e_pixmap.c
src/bin/e_pixmap.h
src/bin/e_pointer.c
src/bin/e_pointer.h
src/bin/e_remember.c
src/bin/e_scale.c
src/bin/e_screensaver.c
src/bin/e_shelf.c
src/bin/e_signals.c
src/bin/e_start_main.c
src/bin/e_startup.c
src/bin/e_sys.c
src/bin/e_sys_main.c
src/bin/e_test.c
src/bin/e_theme_about.c
src/bin/e_toolbar.c
src/bin/e_toolbar.h
src/bin/e_update.c
src/bin/e_utils.c
src/bin/e_utils.h
src/bin/e_widget.c
src/bin/e_widget_bgpreview.c
src/bin/e_widget_button.c
src/bin/e_widget_config_list.c
src/bin/e_widget_config_list.h
src/bin/e_widget_csel.c
src/bin/e_widget_entry.c
src/bin/e_widget_entry.h
src/bin/e_widget_filepreview.c
src/bin/e_widget_framelist.c
src/bin/e_widget_frametable.c
src/bin/e_widget_fsel.c
src/bin/e_widget_label.c
src/bin/e_widget_list.c
src/bin/e_widget_table.c
src/bin/e_widget_table.h
src/bin/e_widget_textblock.c
src/bin/e_widget_toolbar.c
src/bin/e_widget_toolbook.c
src/bin/e_win.c
src/bin/e_win.h
src/bin/e_xinerama.c
src/bin/e_xsettings.c
src/bin/e_zone.c
src/bin/e_zone.h
src/modules/Makefile.mk
src/modules/Makefile_conf_display.mk
src/modules/Makefile_conf_randr.mk
src/modules/Makefile_everything.mk
src/modules/Makefile_systray.mk
src/modules/access/e_mod_main.c
src/modules/access/module.desktop.in
src/modules/appmenu/e_mod_dbus_registrar_server.c
src/modules/appmenu/module.desktop.in
src/modules/backlight/e_mod_main.c
src/modules/backlight/module.desktop.in
src/modules/battery/e_mod_config.c
src/modules/battery/e_mod_main.c
src/modules/battery/e_mod_main.h
src/modules/battery/module.desktop.in
src/modules/bluez4/agent.c
src/modules/bluez4/e_mod_main.c
src/modules/bluez4/ebluez4.c
src/modules/bluez4/module.desktop.in
src/modules/clock/e_mod_config.c
src/modules/clock/e_mod_main.c
src/modules/clock/e_mod_main.h
src/modules/clock/module.desktop.in
src/modules/conf/e_conf.c
src/modules/conf/e_mod_config.c
src/modules/conf/e_mod_main.c
src/modules/conf/e_mod_main.h
src/modules/conf/module.desktop.in
src/modules/conf_applications/e_int_config_apps.c
src/modules/conf_applications/e_int_config_apps_personal.c
src/modules/conf_applications/e_int_config_defapps.c
src/modules/conf_applications/e_int_config_deskenv.c
src/modules/conf_applications/e_mod_main.h
src/modules/conf_applications/module.desktop.in
src/modules/conf_bindings/e_int_config_acpibindings.c
src/modules/conf_bindings/e_int_config_edgebindings.c
src/modules/conf_bindings/e_int_config_keybindings.c
src/modules/conf_bindings/e_int_config_mousebindings.c
src/modules/conf_bindings/e_int_config_signalbindings.c
src/modules/conf_bindings/e_mod_main.h
src/modules/conf_bindings/module.desktop.in
src/modules/conf_dialogs/e_int_config_dialogs.c
src/modules/conf_dialogs/e_int_config_profiles.c
src/modules/conf_dialogs/e_mod_main.h
src/modules/conf_dialogs/module.desktop.in
src/modules/conf_display/e_int_config_desk.c
src/modules/conf_display/e_int_config_desklock.c
src/modules/conf_display/e_int_config_desklock_fsel.c
src/modules/conf_display/e_int_config_desks.c
src/modules/conf_display/e_int_config_dpms.c
src/modules/conf_display/e_int_config_screensaver.c
src/modules/conf_display/e_mod_main.h
src/modules/conf_display/module.desktop.in
src/modules/conf_interaction/e_int_config_interaction.c
src/modules/conf_interaction/e_int_config_mouse.c
src/modules/conf_interaction/e_mod_main.h
src/modules/conf_interaction/module.desktop.in
src/modules/conf_intl/e_int_config_imc.c
src/modules/conf_intl/e_int_config_imc_import.c
src/modules/conf_intl/e_int_config_intl.c
src/modules/conf_intl/e_mod_main.h
src/modules/conf_intl/module.desktop.in
src/modules/conf_menus/e_int_config_menus.c
src/modules/conf_menus/e_mod_main.h
src/modules/conf_menus/module.desktop.in
src/modules/conf_paths/e_int_config_env.c
src/modules/conf_paths/e_int_config_paths.c
src/modules/conf_paths/e_mod_main.h
src/modules/conf_paths/module.desktop.in
src/modules/conf_performance/e_int_config_performance.c
src/modules/conf_performance/e_int_config_powermanagement.c
src/modules/conf_performance/e_mod_main.h
src/modules/conf_performance/module.desktop.in
src/modules/conf_randr/e_int_config_randr.c
src/modules/conf_randr/e_int_config_randr.h
src/modules/conf_randr/e_mod_main.c
src/modules/conf_randr/e_mod_main.h
src/modules/conf_randr/e_smart_monitor.c
src/modules/conf_randr/e_smart_randr.c
src/modules/conf_randr/module.desktop.in
src/modules/conf_shelves/e_int_config_shelf.c
src/modules/conf_shelves/e_int_config_shelf.h
src/modules/conf_shelves/e_mod_main.c
src/modules/conf_shelves/e_mod_main.h
src/modules/conf_shelves/module.desktop.in
src/modules/conf_theme/e_int_config_borders.c
src/modules/conf_theme/e_int_config_color_classes.c
src/modules/conf_theme/e_int_config_fonts.c
src/modules/conf_theme/e_int_config_scale.c
src/modules/conf_theme/e_int_config_theme.c
src/modules/conf_theme/e_int_config_theme_import.c
src/modules/conf_theme/e_int_config_transitions.c
src/modules/conf_theme/e_int_config_wallpaper.c
src/modules/conf_theme/e_int_config_xsettings.c
src/modules/conf_theme/e_mod_main.c
src/modules/conf_theme/e_mod_main.h
src/modules/conf_theme/module.desktop.in
src/modules/conf_window_manipulation/e_int_config_clientlist.c
src/modules/conf_window_manipulation/e_int_config_focus.c
src/modules/conf_window_manipulation/e_int_config_window_display.c
src/modules/conf_window_manipulation/e_int_config_window_geometry.c
src/modules/conf_window_manipulation/e_int_config_window_process.c
src/modules/conf_window_manipulation/e_mod_main.h
src/modules/conf_window_manipulation/module.desktop.in
src/modules/conf_window_remembers/e_int_config_remembers.c
src/modules/conf_window_remembers/e_mod_main.h
src/modules/conf_window_remembers/module.desktop.in
src/modules/connman/agent.c
src/modules/connman/e_connman.c
src/modules/connman/e_mod_config.c
src/modules/connman/e_mod_main.c
src/modules/connman/e_mod_main.h
src/modules/connman/module.desktop.in
src/modules/contact/e_edges.c
src/modules/contact/e_policy.c
src/modules/contact/module.desktop.in
src/modules/cpufreq/e_mod_config.c
src/modules/cpufreq/e_mod_main.c
src/modules/cpufreq/e_mod_main.h
src/modules/cpufreq/freqset.c
src/modules/cpufreq/module.desktop.in
src/modules/everything/e_mod_main.h
src/modules/everything/evry.c
src/modules/everything/evry_config.c
src/modules/everything/evry_gadget.c
src/modules/everything/evry_history.c
src/modules/everything/evry_plug_actions.c
src/modules/everything/evry_plug_apps.c
src/modules/everything/evry_plug_calc.c
src/modules/everything/evry_plug_clipboard.c
src/modules/everything/evry_plug_files.c
src/modules/everything/evry_types.h
src/modules/everything/evry_view.c
src/modules/everything/evry_view_help.c
src/modules/everything/evry_view_tabs.c
src/modules/everything/module.desktop.in
src/modules/fileman/e_fwin.c
src/modules/fileman/e_fwin_nav.c
src/modules/fileman/e_int_config_mime.c
src/modules/fileman/e_int_config_mime_edit.c
src/modules/fileman/e_mod_config.c
src/modules/fileman/e_mod_dbus.c
src/modules/fileman/e_mod_main.c
src/modules/fileman/e_mod_main.h
src/modules/fileman/e_mod_menu.c
src/modules/fileman/module.desktop.in
src/modules/fileman_opinfo/e_mod_main.c
src/modules/fileman_opinfo/module.desktop.in
src/modules/gadman/e_mod_config.c
src/modules/gadman/e_mod_gadman.c
src/modules/gadman/e_mod_gadman.h
src/modules/gadman/e_mod_main.c
src/modules/gadman/module.desktop.in
src/modules/ibar/e_mod_config.c
src/modules/ibar/e_mod_main.c
src/modules/ibar/module.desktop.in
src/modules/ibox/e_mod_config.c
src/modules/ibox/e_mod_main.c
src/modules/ibox/module.desktop.in
src/modules/illume-bluetooth/module.desktop.in
src/modules/illume-home-toggle/module.desktop.in
src/modules/illume-home/e_busycover.c
src/modules/illume-home/e_mod_config.c
src/modules/illume-home/e_mod_main.c
src/modules/illume-home/module.desktop.in
src/modules/illume-indicator/e_mod_ind_win.c
src/modules/illume-indicator/e_mod_notify.c
src/modules/illume-indicator/module.desktop.in
src/modules/illume-kbd-toggle/module.desktop.in
src/modules/illume-keyboard/e_kbd_int.c
src/modules/illume-keyboard/e_mod_config.c
src/modules/illume-keyboard/module.desktop.in
src/modules/illume-mode-toggle/module.desktop.in
src/modules/illume-softkey/e_mod_sft_win.c
src/modules/illume-softkey/module.desktop.in
src/modules/illume2/e_mod_config_animation.c
src/modules/illume2/e_mod_config_policy.c
src/modules/illume2/e_mod_config_windows.c
src/modules/illume2/e_mod_main.c
src/modules/illume2/module.desktop.in
src/modules/layout/module.desktop.in
src/modules/lokker/e_mod_main.h
src/modules/lokker/lokker.c
src/modules/mixer/app_mixer.c
src/modules/mixer/conf_gadget.c
src/modules/mixer/conf_module.c
src/modules/mixer/e_mod_main.c
src/modules/mixer/e_mod_main.h
src/modules/mixer/module.desktop.in
src/modules/mixer/pa.c
src/modules/msgbus/module.desktop.in
src/modules/msgbus/msgbus_audit.c
src/modules/msgbus/msgbus_desktop.c
src/modules/music-control/e_mod_main.c
src/modules/music-control/gen/eldbus_media_player2_player.c
src/modules/music-control/gen/eldbus_mpris_media_player2.c
src/modules/music-control/module.desktop.in
src/modules/music-control/ui.c
src/modules/notification/e_mod_config.c
src/modules/notification/e_mod_main.c
src/modules/notification/e_mod_main.h
src/modules/notification/e_mod_popup.c
src/modules/notification/module.desktop.in
src/modules/packagekit/e_mod_config.c
src/modules/packagekit/e_mod_packagekit.c
src/modules/packagekit/module.desktop.in
src/modules/pager/e_mod_config.c
src/modules/pager/e_mod_main.c
src/modules/pager/module.desktop.in
src/modules/pager_plain/e_mod_config.c
src/modules/pager_plain/e_mod_main.c
src/modules/pager_plain/module.desktop.in
src/modules/policy_mobile/e_mod_config.c
src/modules/policy_mobile/e_mod_main.c
src/modules/policy_mobile/e_mod_main.h
src/modules/quickaccess/e_mod_config.c
src/modules/quickaccess/e_mod_main.h
src/modules/quickaccess/e_mod_quickaccess.c
src/modules/quickaccess/module.desktop.in
src/modules/shot/e_mod_main.c
src/modules/shot/module.desktop.in
src/modules/start/module.desktop.in
src/modules/syscon/e_int_config_syscon.c
src/modules/syscon/e_mod_main.h
src/modules/syscon/module.desktop.in
src/modules/systray/e_mod_main.c
src/modules/systray/e_mod_main.h
src/modules/systray/e_mod_notifier_host.c
src/modules/systray/e_mod_notifier_watcher.c
src/modules/systray/module.desktop.in
src/modules/tasks/e_mod_config.c
src/modules/tasks/e_mod_main.c
src/modules/tasks/module.desktop.in
src/modules/teamwork/e_mod_config.c
src/modules/teamwork/e_mod_main.h
src/modules/teamwork/e_mod_tw.c
src/modules/teamwork/module.desktop.in
src/modules/temperature/e_mod_main.h
src/modules/temperature/module.desktop.in
src/modules/tiling/e_mod_config.c
src/modules/tiling/e_mod_tiling.c
src/modules/tiling/e_mod_tiling.h
src/modules/tiling/module.desktop.in
src/modules/tiling/window_tree.c
src/modules/tiling/window_tree.h
src/modules/winlist/e_int_config_winlist.c
src/modules/winlist/e_mod_main.h
src/modules/winlist/e_winlist.c
src/modules/winlist/module.desktop.in
src/modules/wizard/data/desktop/home.desktop
src/modules/wizard/data/desktop/root.desktop
src/modules/wizard/data/desktop/tmp.desktop
src/modules/wizard/e_wizard.c
src/modules/wizard/module.desktop.in
src/modules/wizard/page_010.c
src/modules/wl_desktop_shell/e_desktop_shell_protocol.c
src/modules/wl_desktop_shell/e_desktop_shell_protocol.h
src/modules/wl_desktop_shell/e_mod_main.c
src/modules/wl_desktop_shell/module.desktop.in
src/modules/wl_drm/e_mod_main.c
src/modules/wl_fb/e_mod_main.c
src/modules/wl_screenshot/module.desktop.in
src/modules/wl_x11/e_mod_main.c
src/modules/xkbswitch/e_mod_config.c
src/modules/xkbswitch/e_mod_main.c
src/modules/xkbswitch/e_mod_main.h
src/modules/xkbswitch/module.desktop.in

Change-Id: I48aa3471cf5fb5521116027596e592e873c3d8ee

22 files changed:
1  2 
configure.ac
data/dbus/org.enlightenment.wm.conf
src/bin/Makefile.mk
src/bin/e_backlight.c
src/bin/e_client.c
src/bin/e_client.h
src/bin/e_comp.h
src/bin/e_comp_canvas.c
src/bin/e_comp_object.c
src/bin/e_comp_x.c
src/bin/e_comp_x.h
src/bin/e_config.c
src/bin/e_config.h
src/bin/e_hints.c
src/bin/e_hints.h
src/bin/e_includes.h
src/bin/e_main.c
src/bin/e_menu.c
src/bin/e_pixmap.c
src/bin/e_pixmap.h
src/bin/e_zone.c
src/bin/e_zone.h

diff --cc configure.ac
Simple merge
index 39a31209ba12295d644d452ca0eb2308f8b0e3e2,0000000000000000000000000000000000000000..868d78fe0956c0822d51b289ea5933af03805f24
mode 100644,000000..100644
--- /dev/null
@@@ -1,14 -1,0 +1,13 @@@
 +<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
 +<busconfig>
 +    <policy user="root">
 +        <allow own="org.enlightenment.wm"/>
 +    </policy>
 +    <policy at_console="true">
 +        <allow send_destination="org.enlightenment.wm"/>
 +    </policy>
 +    <policy context="default">
 +        <allow send_destination="org.enlightenment.wm"/>
 +    </policy>
 +</busconfig>
index 86755dc2c2a7e99246f493e73b1ff9a252583857,8d85ba16cdbe4cf9df15e5a5770e336a12c75555..4b0d13fe9fb93a0f290a88c2bf151e1f8c08e4e7
@@@ -157,9 -156,7 +156,8 @@@ src/bin/e_slidesel.h 
  src/bin/e_spectrum.h \
  src/bin/e_startup.h \
  src/bin/e_sys.h \
- src/bin/e_table.h \
  src/bin/e_test.h \
 +src/bin/e_test_helper.h \
  src/bin/e_theme_about.h \
  src/bin/e_theme.h \
  src/bin/e_thumb.h \
@@@ -326,9 -319,7 +320,8 @@@ src/bin/e_slidesel.c 
  src/bin/e_spectrum.c \
  src/bin/e_startup.c \
  src/bin/e_sys.c \
- src/bin/e_table.c \
  src/bin/e_test.c \
 +src/bin/e_test_helper.c \
  src/bin/e_theme_about.c \
  src/bin/e_theme.c \
  src/bin/e_thumb.c \
Simple merge
index aa18f0b0257effbdedb33a0fc4b8412c598a685d,ab0681c6ae59e0c45c3f00a09f8273c269d41cf3..3174d0aec96bb9e1a57caee8ea279b5fe723cb50
@@@ -2237,183 -2264,6 +2273,177 @@@ _e_client_frame_update(E_Client *ec
     e_client_border_set(ec, bordername);
  }
  
-    const Eina_List *cl;
-    E_Comp *c;
 +static Eina_Bool
 +_e_client_type_match(E_Client *ec, E_Config_Client_Type *m)
 +{
 +   if (!ec || !m) return EINA_FALSE;
 +   if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE;
 +
 +   if ((int)ec->netwm.type != m->window_type)
 +     return EINA_FALSE;
 +
 +   if (((m->clas) && (!ec->icccm.class)) ||
 +       ((ec->icccm.class) && (m->clas) && (!e_util_glob_match(ec->icccm.class, m->clas))))
 +     return EINA_FALSE;
 +
 +   if (((m->name) && (!ec->icccm.name)) ||
 +       ((ec->icccm.name) && (m->name) && (!e_util_glob_match(ec->icccm.name, m->name))))
 +     return EINA_FALSE;
 +
 +   return EINA_TRUE;
 +}
 +
 +static int
 +_e_client_type_get(E_Client *ec)
 +{
 +   E_Config_Client_Type *m;
 +   Eina_List *l;
 +   int type = 0;
 +
 +   if (!e_config->client_types) return 0;
 +
 +   EINA_LIST_FOREACH(e_config->client_types, l, m)
 +     {
 +        if (!_e_client_type_match(ec, m)) continue;
 +        else
 +          {
 +             type = m->client_type;
 +             break;
 +          }
 +     }
 +
 +   ec->client_type = type;
 +
 +   return ec->client_type;
 +}
 +
 +static void
 +_e_client_visibility_zone_calculate(E_Zone *zone)
 +{
 +   E_Client *ec;
 +   Evas_Object *o;
 +   Eina_Tiler *t;
 +   Eina_Rectangle r, *_r;
 +   Eina_Iterator *itr;
 +   Eina_Bool is_intersected = EINA_FALSE;
 +   const int edge = 1;
 +
 +   if (!zone) return;
 +
 +   t = eina_tiler_new(zone->w + edge, zone->h + edge);
 +   eina_tiler_tile_size_set(t, 1, 1);
 +
 +   EINA_RECTANGLE_SET(&r, zone->x, zone->y, zone->w, zone->h);
 +   eina_tiler_rect_add(t, &r);
 +
 +   for (o = evas_object_top_get(zone->comp->evas); o; o = evas_object_below_get(o))
 +     {
 +        ec = evas_object_data_get(o, "E_Client");
 +
 +        /* check e_client and skip e_clients not intersects with zone */
 +        if (!ec) continue;
 +        if (e_client_util_ignored_get(ec)) continue;
 +        if (ec->zone != zone) continue;
 +        if (!E_INTERSECTS(ec->x, ec->y, ec->w, ec->h,
 +                          zone->x, zone->y, zone->w, zone->h))
 +          continue;
 +
 +        /* check if internal animation is running */
 +        if (e_comp_object_is_animating(ec->frame)) continue;
 +
 +        /* check if external animation is running */
 +        if (evas_object_data_get(ec->frame, "effect_running")) continue;
 +
 +        /* check intersects */
 +        if (eina_tiler_empty(t)) is_intersected = EINA_FALSE;
 +
 +        itr = eina_tiler_iterator_new(t);
 +        EINA_ITERATOR_FOREACH(itr, _r)
 +          {
 +             if (E_INTERSECTS(ec->x, ec->y, ec->w, ec->h,
 +                              _r->x, _r->y, _r->w, _r->h))
 +               {
 +                  is_intersected = EINA_TRUE;
 +                  break;
 +               }
 +          }
 +        eina_iterator_free(itr);
 +
 +        /* check some visible state */
 +        if ((!ec->visible) || (ec->iconic) ||
 +            (!evas_object_visible_get(ec->frame)) ||
 +            (e_object_is_del(E_OBJECT(ec))))
 +          is_intersected = EINA_FALSE;
 +
 +#ifndef HAVE_WAYLAND_ONLY
 +        /* check if it entered to hide process
 +         * TODO: support wayland
 +         */
 +        if (ec->icccm.state ==  ECORE_X_WINDOW_STATE_HINT_WITHDRAWN)
 +          is_intersected = EINA_FALSE;
 +#endif
 +        if (is_intersected)
 +          {
 +             Eina_Bool opaque = EINA_FALSE;
 +             /* unobscured case */
 +             if (ec->visibility.obscured == 0)
 +               {
 +                  /* previous state is unobscured */
 +                  /* do nothing */
 +               }
 +             else
 +               {
 +                  /* previous state is obscured */
 +                  ec->visibility.obscured = 0;
 +                  _e_client_event_simple(ec, E_EVENT_CLIENT_VISIBILITY_CHANGE);
 +               }
 +
 +             /* check alpha window is opaque or not. */
 +             if ((ec->visibility.opaque > 0) && (ec->argb)) opaque = EINA_TRUE;
 +
 +             /* if e_client is not alpha or opaque then delete intersect rect */
 +             if ((!ec->argb) || (opaque))
 +               {
 +                  EINA_RECTANGLE_SET(&r,
 +                                     ec->x, ec->y,
 +                                     ec->w + edge, ec->h + edge);
 +                  eina_tiler_rect_del(t, &r);
 +               }
 +          }
 +        else
 +          {
 +             /* obscured case */
 +             if (ec->visibility.obscured != 1)
 +               {
 +                  /* previous state is unobscured */
 +                  ec->visibility.obscured = 1;
 +                  _e_client_event_simple(ec, E_EVENT_CLIENT_VISIBILITY_CHANGE);
 +               }
 +             else
 +               {
 +                  /* previous state is obscured */
 +                  /* do nothing */
 +               }
 +          }
 +     }
 +
 +   eina_tiler_free(t);
 +}
 +
 +EAPI void
 +e_client_visibility_calculate(E_Client *ec)
 +{
-    EINA_LIST_FOREACH(e_comp_list(), cl, c)
++   E_Zone *zone;
++   Eina_List *zl;
 +
 +   if (e_object_is_del(E_OBJECT(ec))) return;
 +
-         E_Zone *zone;
-         Eina_List *zl;
-         EINA_LIST_FOREACH(c->zones, zl, zone)
-           {
-              _e_client_visibility_zone_calculate(zone);
-           }
++   EINA_LIST_FOREACH(e_comp->zones, zl, zone)
 +     {
++        _e_client_visibility_zone_calculate(zone);
 +     }
 +}
 +
  ////////////////////////////////////////////////
  EINTERN void
  e_client_idler_before(void)
  
     if (!eina_hash_population(clients_hash)) return;
  
-    EINA_LIST_FOREACH(e_comp_list(), l, c)
+    EINA_LIST_FOREACH(e_comp->clients, l, ec)
       {
-         Eina_List *ll;
-         E_Client *ec;
+         Eina_Stringshare *title;
++        int client_type;
++
+         // pass 1 - eval0. fetch properties on new or on change and
+         // call hooks to decide what to do - maybe move/resize
+         if (!ec->changed) continue;
  
-         EINA_LIST_FOREACH(c->clients, ll, ec)
+         if (!_e_client_hook_call(E_CLIENT_HOOK_EVAL_PRE_FETCH, ec)) continue;
+         /* FETCH is hooked by the compositor to get client hints */
+         title = e_client_util_name_get(ec);
+         if (!_e_client_hook_call(E_CLIENT_HOOK_EVAL_FETCH, ec)) continue;
+         if (title != e_client_util_name_get(ec))
+           _e_client_event_property(ec, E_CLIENT_PROPERTY_TITLE);
++
++        client_type = ec->client_type;
++        if (client_type != _e_client_type_get(ec))
++           _e_client_event_property(ec, E_CLIENT_PROPERTY_CLIENT_TYPE);
++
++        /* calculate visibility of the client" */
++        e_client_visibility_calculate(ec);
++
+         /* PRE_POST_FETCH calls e_remember apply for new client */
+         if (!_e_client_hook_call(E_CLIENT_HOOK_EVAL_PRE_POST_FETCH, ec)) continue;
+         if (!_e_client_hook_call(E_CLIENT_HOOK_EVAL_POST_FETCH, ec)) continue;
+         if (!_e_client_hook_call(E_CLIENT_HOOK_EVAL_PRE_FRAME_ASSIGN, ec)) continue;
+         if ((ec->border.changed) && (!ec->shaded) && ((!ec->override) || ec->internal) &&
+             (!(((ec->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN))))
+           _e_client_frame_update(ec);
+         ec->border.changed = 0;
+         _e_client_hook_call(E_CLIENT_HOOK_EVAL_POST_FRAME_ASSIGN, ec);
+      }
+    E_CLIENT_FOREACH(e_comp, ec)
+      {
+         // pass 2 - show windows needing show
+         if ((ec->changes.visible) && (ec->visible) &&
+             (!ec->new_client) && (!ec->changes.pos) &&
+             (!ec->changes.size))
            {
-              Eina_Stringshare *title;
-              int client_type;
-              // pass 1 - eval0. fetch properties on new or on change and
-              // call hooks to decide what to do - maybe move/resize
-              if (!ec->changed) continue;
-              if (!_e_client_hook_call(E_CLIENT_HOOK_EVAL_PRE_FETCH, ec)) continue;
-              /* FETCH is hooked by the compositor to get client hints */
-              title = e_client_util_name_get(ec);
-              if (!_e_client_hook_call(E_CLIENT_HOOK_EVAL_FETCH, ec)) continue;
-              if (title != e_client_util_name_get(ec))
-                _e_client_event_property(ec, E_CLIENT_PROPERTY_TITLE);
-              client_type = ec->client_type;
-              if (client_type != _e_client_type_get(ec))
-                _e_client_event_property(ec, E_CLIENT_PROPERTY_CLIENT_TYPE);
-              /* calculate visibility of the client" */
-              e_client_visibility_calculate(ec);
-              /* PRE_POST_FETCH calls e_remember apply for new client */
-              if (!_e_client_hook_call(E_CLIENT_HOOK_EVAL_PRE_POST_FETCH, ec)) continue;
-              if (!_e_client_hook_call(E_CLIENT_HOOK_EVAL_POST_FETCH, ec)) continue;
-              if (!_e_client_hook_call(E_CLIENT_HOOK_EVAL_PRE_FRAME_ASSIGN, ec)) continue;
-              if ((ec->border.changed) && (!ec->shaded) && (!ec->override) &&
-                  (!(((ec->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN))))
-                _e_client_frame_update(ec);
-              ec->border.changed = 0;
-              _e_client_hook_call(E_CLIENT_HOOK_EVAL_POST_FRAME_ASSIGN, ec);
+              evas_object_show(ec->frame);
+              ec->changes.visible = !evas_object_visible_get(ec->frame);
            }
  
-         E_CLIENT_FOREACH(c, ec)
+         if ((!ec->new_client) && (!e_client_util_ignored_get(ec)) &&
+             (!E_INSIDE(ec->x, ec->y, 0, 0, ec->comp->man->w - 5, ec->comp->man->h - 5)) &&
+             (!E_INSIDE(ec->x, ec->y, 0 - ec->w + 5, 0 - ec->h + 5, ec->comp->man->w - 5, ec->comp->man->h - 5))
+             )
            {
-              // pass 2 - show windows needing show
-              if ((ec->changes.visible) && (ec->visible) &&
-                  (!ec->new_client) && (!ec->changes.pos) &&
-                  (!ec->changes.size))
-                {
-                   evas_object_show(ec->frame);
-                   ec->changes.visible = !evas_object_visible_get(ec->frame);
-                }
-              if ((!ec->new_client) && (!e_client_util_ignored_get(ec)) &&
-                  (!E_INSIDE(ec->x, ec->y, 0, 0, ec->comp->man->w - 5, ec->comp->man->h - 5)) &&
-                  (!E_INSIDE(ec->x, ec->y, 0 - ec->w + 5, 0 - ec->h + 5, ec->comp->man->w - 5, ec->comp->man->h - 5))
-                  )
-                {
-                   if (e_config->screen_limits != E_SCREEN_LIMITS_COMPLETELY)
-                     _e_client_move_lost_window_to_center(ec);
-                }
+              if (e_config->screen_limits != E_CLIENT_OFFSCREEN_LIMIT_ALLOW_FULL)
+                _e_client_move_lost_window_to_center(ec);
            }
+      }
  
-         if (_e_client_layout_cb)
-           _e_client_layout_cb(c);
+    if (_e_client_layout_cb)
+      _e_client_layout_cb(e_comp);
  
-         // pass 3 - hide windows needing hide and eval (main eval)
-         E_CLIENT_FOREACH(c, ec)
-           {
-              if (e_object_is_del(E_OBJECT(ec))) continue;
+    // pass 3 - hide windows needing hide and eval (main eval)
+    E_CLIENT_FOREACH(e_comp, ec)
+      {
+         if (e_object_is_del(E_OBJECT(ec))) continue;
  
-              if ((ec->changes.visible) && (!ec->visible))
-                {
-                   evas_object_hide(ec->frame);
-                   ec->changes.visible = 0;
-                }
+         if ((ec->changes.visible) && (!ec->visible))
+           {
+              evas_object_hide(ec->frame);
+              ec->changes.visible = 0;
+           }
  
-              if (ec->changed)
-                _e_client_eval(ec);
+         if (ec->changed)
+           _e_client_eval(ec);
  
-              if ((ec->changes.visible) && (ec->visible) && (!ec->changed))
-                {
-                   evas_object_show(ec->frame);
-                   ec->changes.visible = !evas_object_visible_get(ec->frame);
-                   ec->changed = ec->changes.visible;
-                }
+         if ((ec->changes.visible) && (ec->visible) && (!ec->changed))
+           {
+              evas_object_show(ec->frame);
+              ec->changes.visible = !evas_object_visible_get(ec->frame);
+              ec->changed = ec->changes.visible;
            }
       }
  }
@@@ -2662,12 -2496,9 +2692,12 @@@ e_client_new(E_Comp *c EINA_UNUSED, E_P
     ec->netwm.action.close = 0;
     ec->netwm.opacity = 255;
  
 +   ec->visibility.obscured = -1;
 +   ec->visibility.opaque = -1;
 +
     EC_CHANGED(ec);
  
-    c->clients = eina_list_append(c->clients, ec);
+    e_comp->clients = eina_list_append(e_comp->clients, ec);
     eina_hash_add(clients_hash, &ec->pixmap, ec);
  
     _e_client_event_simple(ec, E_EVENT_CLIENT_ADD);
            focus_stack = eina_list_append(focus_stack, ec);
       }
  
+    e_hints_client_list_set();
++
 +#ifdef _F_E_CLIENT_NEW_CLIENT_POST_HOOK_
 +   _e_client_hook_call(E_CLIENT_HOOK_NEW_CLIENT_POST, ec);
 +#endif
 +
     return ec;
  }
  
index 727a03fd25ebe4768be620e5cda6620c8a8f9f03,561ca59c769e53ef9158add7c4033270efd7cf51..7126d77b23d8c417bb7dfa6321255dcaabd14f1a
@@@ -637,21 -568,10 +636,19 @@@ struct E_Clien
        Eina_Bool internal_state : 1;
        Eina_Bool need_maximize : 1;
        Eina_Bool need_unmaximize : 1;
 +#ifdef _F_ZONE_WINDOW_ROTATION_
 +      Eina_Bool rotation : 1;
 +#endif
     } changes;
  
 +   struct
 +  {
 +     int opaque;
 +     int obscured;
 +  } visibility;
 +
     unsigned int       visible : 1; // client is set to be visible by display server (never use this)
     unsigned int       hidden : 1; // set when window has been hidden by api and should not be shown
-    unsigned int       await_hide_event;
     unsigned int       moving : 1;
     unsigned int       focused : 1;
     unsigned int       new_client : 1;
@@@ -906,7 -819,8 +903,9 @@@ EAPI Eina_Bool e_client_is_stacking(con
  EAPI Eina_Bool e_client_desk_window_profile_available_check(E_Client *ec, const char *profile);
  EAPI void      e_client_desk_window_profile_wait_desk_set(E_Client *ec, E_Desk *desk);
  EAPI void      e_client_layout_cb_set(E_Client_Layout_Cb cb);
 +EAPI void      e_client_visibility_calculate(E_Client *ec);
  
+ YOLO EAPI void e_client_focus_stack_set(Eina_List *l);
  #include "e_client.x"
  #endif
Simple merge
Simple merge
index 0f5925f4d5d36433bc2178b2251002746403db5b,fea2f81b1e3ab56a8a55d6b33b542073f677479f..4a6b28bf5782c6408fe019c7c21894c58b0601f7
@@@ -2326,39 -2286,9 +2368,39 @@@ _e_comp_object_util_moveresize(void *da
       }
       
     if (evas_object_visible_get(obj))
-      e_comp_shape_queue(e_comp_util_evas_object_comp_get(obj));
+      e_comp_shape_queue(e_comp);
  }
  
 +#ifdef _F_E_COMP_OBJECT_INTERCEPT_HOOK_
 +EAPI E_Comp_Object_Intercept_Hook *
 +e_comp_object_intercept_hook_add(E_Comp_Object_Intercept_Hook_Point hookpoint, E_Comp_Object_Intercept_Hook_Cb func, const void *data)
 +{
 +   E_Comp_Object_Intercept_Hook *ch;
 +
 +   EINA_SAFETY_ON_TRUE_RETURN_VAL(hookpoint >= E_COMP_OBJECT_INTERCEPT_HOOK_LAST, NULL);
 +   ch = E_NEW(E_Comp_Object_Intercept_Hook, 1);
 +   if (!ch) return NULL;
 +   ch->hookpoint = hookpoint;
 +   ch->func = func;
 +   ch->data = (void*)data;
 +   _e_comp_object_intercept_hooks[hookpoint] = eina_inlist_append(_e_comp_object_intercept_hooks[hookpoint], EINA_INLIST_GET(ch));
 +   return ch;
 +}
 +
 +EAPI void
 +e_comp_object_intercept_hook_del(E_Comp_Object_Intercept_Hook *ch)
 +{
 +   ch->delete_me = 1;
 +   if (_e_comp_object_intercept_hooks_walking == 0)
 +     {
 +        _e_comp_object_intercept_hooks[ch->hookpoint] = eina_inlist_remove(_e_comp_object_intercept_hooks[ch->hookpoint], EINA_INLIST_GET(ch));
 +        free(ch);
 +     }
 +   else
 +     _e_comp_object_intercept_hooks_delete++;
 +}
 +#endif
 +
  EAPI Evas_Object *
  e_comp_object_util_add(Evas_Object *obj, E_Comp_Object_Type type)
  {
@@@ -3602,15 -3512,10 +3644,16 @@@ _e_comp_object_effect_end_cb(void *data
       {
          cw->comp->animating--;
          cw->animating--;
-         e_object_unref(E_OBJECT(cw->ec));
+         if (e_object_unref(E_OBJECT(cw->ec)))
+           e_comp_shape_queue(cw->comp);
       }
  
 +   if (evas_object_data_get(cw->smart_obj, "effect_running"))
 +     {
 +        evas_object_data_del(cw->smart_obj, "effect_running");
 +        e_client_visibility_calculate(cw->ec);
 +     }
 +
     end_cb = evas_object_data_get(obj, "_e_comp.end_cb");
     if (!end_cb) return;
     end_data = evas_object_data_get(obj, "_e_comp.end_data");
@@@ -3833,14 -3727,6 +3871,14 @@@ e_comp_object_util_autoclose(Evas_Objec
     if (evas_object_visible_get(obj))
       _e_comp_object_autoclose_setup(obj);
     else
-      evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _e_comp_object_autoclose_show, c);
-    evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _e_comp_object_autoclose_del, c);
+      evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _e_comp_object_autoclose_show, e_comp);
+    evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _e_comp_object_autoclose_del, e_comp);
  }
 +
 +EAPI unsigned int
 +e_comp_object_is_animating(Evas_Object *obj)
 +{
 +   SOFT_ENTRY(0);
 +
 +   return cw->animating;
 +}
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index bdb83d8788e73cfa38c1251996a7b4b19800c423,01475b853bc53ffbd8c987a5942f35b3dc35bf87..684dbd83ebfe949fa3e4c70ae296e05b1a067b1f
@@@ -2314,8 -2206,8 +2207,9 @@@ _e_menu_item_activate_nth(int n
       {
          if (!mi->separator) i++;
          if (i == n) break;
 +        if (mi == last_mi) return;
       }
+    if (!mi) return;
     e_menu_item_active_set(mi, 1);
     _e_menu_item_ensure_onscreen(mi);
  }
index 744a329049c5af6db557a4b50ca6e6d2dfc894fd,dbefc9971a6a26595eb1433e82552df0ccf28832..a53aa6806c12fcd92c07f2f54b7c57ace16aecc7
@@@ -838,32 -832,48 +846,78 @@@ e_pixmap_image_draw(E_Pixmap *cp, cons
     return EINA_FALSE;
  }
  
 +EAPI Eina_Bool
 +e_pixmap_validate_check(const E_Pixmap *cp)
 +{
 +   Eina_Bool success = EINA_FALSE;
 +   EINA_SAFETY_ON_NULL_RETURN_VAL(cp, EINA_FALSE);
 +
 +   switch (cp->type)
 +      {
 +       case E_PIXMAP_TYPE_X:
 +#ifndef HAVE_WAYLAND_ONLY
 +         {
 +            int pw, ph;
 +            if (!cp->pixmap) break;
 +            ecore_x_pixmap_geometry_get(cp->pixmap, NULL, NULL, &pw, &ph);
 +            success = (pw > 0) && (ph > 0);
 +         }
 +#endif
 +         break;
 +       case E_PIXMAP_TYPE_WL:
 +#if defined(HAVE_WAYLAND_CLIENTS) || defined(HAVE_WAYLAND_ONLY)
 +         _e_pixmap_update_wl(cp);
 +         success = (cp->w > 0) && (cp->h > 0);
 +#endif
 +         break;
 +       default:
 +         break;
 +      }
 +   return success;
 +}
++
+ EAPI void 
+ e_pixmap_image_draw_done(E_Pixmap *cp)
+ {
+    EINA_SAFETY_ON_NULL_RETURN(cp);
+ #if defined(HAVE_WAYLAND_CLIENTS) || defined(HAVE_WAYLAND_ONLY)
+    struct wl_shm_buffer *shm_buffer;
+    shm_buffer = wl_shm_buffer_get(cp->buffer_ref.buffer->resource);
+    if (!shm_buffer) return;
+    wl_shm_buffer_end_access(shm_buffer);
+ #endif
+ }
+ EAPI void
+ e_pixmap_image_opaque_set(E_Pixmap *cp, int x, int y, int w, int h)
+ {
+    EINA_SAFETY_ON_NULL_RETURN(cp);
+ #if defined(HAVE_WAYLAND_CLIENTS) || defined(HAVE_WAYLAND_ONLY)
+    EINA_RECTANGLE_SET(&cp->opaque, x, y, w, h);
+ #else
+    (void)x;
+    (void)y;
+    (void)w;
+    (void)h;
+ #endif
+ }
+ EAPI void
+ e_pixmap_image_opaque_get(E_Pixmap *cp, int *x, int *y, int *w, int *h)
+ {
+    EINA_SAFETY_ON_NULL_RETURN(cp);
+ #if defined(HAVE_WAYLAND_CLIENTS) || defined(HAVE_WAYLAND_ONLY)
+    if (x) *x = cp->opaque.x;
+    if (y) *y = cp->opaque.y;
+    if (w) *w = cp->opaque.w;
+    if (h) *h = cp->opaque.h;
+ #else
+    if (x) *x = 0;
+    if (y) *y = 0;
+    if (w) *w = 0;
+    if (h) *h = 0;
+ #endif
+ }
index ce73aa5af27f7b5f52b7b6d9a9517b51c94c66f9,1bf387862efab5f965642b516ee926c5021636db..f13025192cc0b9a263f85d882a9d261150b6ef92
@@@ -44,8 -44,10 +44,11 @@@ EAPI Eina_Bool e_pixmap_image_is_argb(c
  EAPI void *e_pixmap_image_data_get(E_Pixmap *cp);
  EAPI Eina_Bool e_pixmap_image_data_argb_convert(E_Pixmap *cp, void *pix, void *ipix, Eina_Rectangle *r, int stride);
  EAPI Eina_Bool e_pixmap_image_draw(E_Pixmap *cp, const Eina_Rectangle *r);
 +EAPI Eina_Bool e_pixmap_validate_check(const E_Pixmap *cp);
  
+ EAPI void e_pixmap_image_opaque_set(E_Pixmap *cp, int x, int y, int w, int h);
+ EAPI void e_pixmap_image_opaque_get(E_Pixmap *cp, int *x, int *y, int *w, int *h);
  static inline Eina_Bool
  e_pixmap_is_x(const E_Pixmap *cp)
  {
index d32567cc5dfd44068c2ab6f5a2c0b05518cc3c67,335c5c2c5173063d4ccdd50831fec09c9ee372e2..243683722f6d72cd5cc1cf0bfcd3ceccf183bd6a
@@@ -34,11 -27,8 +27,13 @@@ EAPI int E_EVENT_ZONE_DEL = 0
  EAPI int E_EVENT_ZONE_EDGE_IN = 0;
  EAPI int E_EVENT_ZONE_EDGE_OUT = 0;
  EAPI int E_EVENT_ZONE_EDGE_MOVE = 0;
+ EAPI int E_EVENT_ZONE_STOW = 0;
+ EAPI int E_EVENT_ZONE_UNSTOW = 0;
 +#ifdef _F_ZONE_WINDOW_ROTATION_
 +EAPI int E_EVENT_ZONE_ROTATION_CHANGE_BEGIN = 0;
 +EAPI int E_EVENT_ZONE_ROTATION_CHANGE_CANCEL = 0;
 +EAPI int E_EVENT_ZONE_ROTATION_CHANGE_END = 0;
 +#endif
  
  #define E_ZONE_FLIP_LEFT(zone)  (((e_config->desk_flip_wrap && ((zone)->desk_x_count > 1)) || ((zone)->desk_x_current > 0)) && (zone)->edge.left)
  #define E_ZONE_FLIP_RIGHT(zone) (((e_config->desk_flip_wrap && ((zone)->desk_x_count > 1)) || (((zone)->desk_x_current + 1) < (zone)->desk_x_count)) && (zone)->edge.right)
@@@ -58,11 -48,8 +53,14 @@@ e_zone_init(void
     E_EVENT_ZONE_EDGE_IN = ecore_event_type_new();
     E_EVENT_ZONE_EDGE_OUT = ecore_event_type_new();
     E_EVENT_ZONE_EDGE_MOVE = ecore_event_type_new();
+    E_EVENT_ZONE_STOW = ecore_event_type_new();
+    E_EVENT_ZONE_UNSTOW = ecore_event_type_new();
 +#ifdef _F_ZONE_WINDOW_ROTATION_
 +   E_EVENT_ZONE_ROTATION_CHANGE_BEGIN = ecore_event_type_new();
 +   E_EVENT_ZONE_ROTATION_CHANGE_CANCEL = ecore_event_type_new();
 +   E_EVENT_ZONE_ROTATION_CHANGE_END = ecore_event_type_new();
 +#endif
++
     return 1;
  }
  
index f18733495a562888438f5ae68f9ee82789263cf0,e0e5ca32f94db88e72a9def2b42058a7c821c916..dc2491545670816718fd80dceea4655d1b174633
@@@ -22,11 -22,8 +22,13 @@@ typedef struct _E_Event_Zone_Generi
  /* TODO: Move this to a general place? */
  typedef struct _E_Event_Pointer_Warp        E_Event_Pointer_Warp;
  typedef struct _E_Event_Zone_Edge           E_Event_Zone_Edge;
+ typedef struct _E_Event_Zone_Generic        E_Event_Zone_Stow;
+ typedef struct _E_Event_Zone_Generic        E_Event_Zone_Unstow;
 +#ifdef _F_ZONE_WINDOW_ROTATION_
 +typedef struct _E_Event_Zone_Rotation_Change_Begin  E_Event_Zone_Rotation_Change_Begin;
 +typedef struct _E_Event_Zone_Rotation_Change_Cancel E_Event_Zone_Rotation_Change_Cancel;
 +typedef struct _E_Event_Zone_Rotation_Change_End    E_Event_Zone_Rotation_Change_End;
 +#endif
  
  #else
  #ifndef E_ZONE_H
@@@ -92,35 -89,10 +94,21 @@@ struct _E_Zon
        int       x, y, w, h;
        Eina_Bool dirty : 1;
     } useful_geometry;
+    Eina_Bool      stowed : 1;
 +#ifdef _F_ZONE_WINDOW_ROTATION_
 +   struct
 +   {
 +      int       prev, curr, next, sub;
 +      int       block_count;
 +
 +      Eina_Bool wait_for_done : 1;
 +      Eina_Bool pending : 1;
 +      Eina_Bool unknown_state : 1;
 +   } rot;
 +#endif
  };
  
- struct _E_Event_Zone_Desk_Count_Set
- {
-    E_Zone *zone;
- };
- struct _E_Event_Zone_Move_Resize
- {
-    E_Zone *zone;
- };
- struct _E_Event_Zone_Add
- {
-    E_Zone *zone;
- };
- struct _E_Event_Zone_Del
+ struct _E_Event_Zone_Generic
  {
     E_Zone *zone;
  };
@@@ -203,12 -160,8 +193,14 @@@ extern EAPI int E_EVENT_POINTER_WARP
  extern EAPI int E_EVENT_ZONE_EDGE_IN;
  extern EAPI int E_EVENT_ZONE_EDGE_OUT;
  extern EAPI int E_EVENT_ZONE_EDGE_MOVE;
+ extern EAPI int E_EVENT_ZONE_STOW;
+ extern EAPI int E_EVENT_ZONE_UNSTOW;
  
 +#ifdef _F_ZONE_WINDOW_ROTATION_
 +extern EAPI int E_EVENT_ZONE_ROTATION_CHANGE_BEGIN;
 +extern EAPI int E_EVENT_ZONE_ROTATION_CHANGE_CANCEL;
 +extern EAPI int E_EVENT_ZONE_ROTATION_CHANGE_END;
 +#endif
 +
  #endif
  #endif