X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=adaptors%2Fecore%2Fwayland%2Fwindow-impl-ecore-wl.cpp;h=04bfc83ad06982a7849cbd39623212f3b0340767;hb=0d26a26e6601ffc17af69c745847d5e56c739c31;hp=4738eecf21c3bc81374814ac2e297d0313b8db6d;hpb=b46cd79dd6c74a453f5bcb852d51fbdc626eba85;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/adaptors/ecore/wayland/window-impl-ecore-wl.cpp b/adaptors/ecore/wayland/window-impl-ecore-wl.cpp index 4738eec..04bfc83 100644 --- a/adaptors/ecore/wayland/window-impl-ecore-wl.cpp +++ b/adaptors/ecore/wayland/window-impl-ecore-wl.cpp @@ -63,7 +63,7 @@ struct Window::EventHandler EventHandler( Window* window ) : mWindow( window ), mWindowPropertyHandler( NULL ), - mClientMessageHandler( NULL ), + mWindowIconifyStateHandler( NULL ), mEcoreWindow( 0 ) { // store ecore window handle @@ -73,6 +73,14 @@ struct Window::EventHandler mEcoreWindow = wlWindow->GetWlWindow(); } DALI_ASSERT_ALWAYS( mEcoreWindow != 0 && "There is no ecore Wl window"); + +#ifndef DALI_PROFILE_UBUNTU + if( mWindow->mEcoreEventHander ) + { + mWindowIconifyStateHandler = ecore_event_handler_add( ECORE_WL_EVENT_WINDOW_ICONIFY_STATE_CHANGE, EcoreEventWindowIconifyStateChanged, this ); + } +#endif + } /** @@ -84,9 +92,9 @@ struct Window::EventHandler { ecore_event_handler_del( mWindowPropertyHandler ); } - if ( mClientMessageHandler ) + if ( mWindowIconifyStateHandler ) { - ecore_event_handler_del( mClientMessageHandler ); + ecore_event_handler_del( mWindowIconifyStateHandler ); } } @@ -98,16 +106,41 @@ struct Window::EventHandler return EINA_FALSE; } - /// Called when the window properties are changed. - static Eina_Bool EcoreEventClientMessage( void* data, int type, void* event ) +#ifndef DALI_PROFILE_UBUNTU + /// Called when the window iconify state is changed. + static Eina_Bool EcoreEventWindowIconifyStateChanged( void* data, int type, void* event ) { - return EINA_FALSE; + Ecore_Wl_Event_Window_Iconify_State_Change* iconifyChangedEvent( (Ecore_Wl_Event_Window_Iconify_State_Change*)event ); + EventHandler* handler( (EventHandler*)data ); + Eina_Bool handled( ECORE_CALLBACK_PASS_ON ); + + if ( handler && handler->mWindow ) + { + WindowVisibilityObserver* observer( handler->mWindow->mAdaptor ); + if ( observer && ( iconifyChangedEvent->win == (unsigned int) ecore_wl_window_id_get( handler->mEcoreWindow ) ) ) + { + if( iconifyChangedEvent->iconified == EINA_TRUE ) + { + observer->OnWindowHidden(); + DALI_LOG_INFO( gWindowLogFilter, Debug::General, "Window (%d) Iconfied\n", handler->mEcoreWindow ); + } + else + { + observer->OnWindowShown(); + DALI_LOG_INFO( gWindowLogFilter, Debug::General, "Window (%d) Shown\n", handler->mEcoreWindow ); + } + handled = ECORE_CALLBACK_DONE; + } + } + + return handled; } +#endif // Data Window* mWindow; Ecore_Event_Handler* mWindowPropertyHandler; - Ecore_Event_Handler* mClientMessageHandler; + Ecore_Event_Handler* mWindowIconifyStateHandler; Ecore_Wl_Window* mEcoreWindow; };