2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include "window-impl.h"
25 #include <dali/integration-api/core.h>
26 #include <dali/integration-api/system-overlay.h>
27 #include <dali/public-api/render-tasks/render-task.h>
28 #include <dali/public-api/render-tasks/render-task-list.h>
31 #include <window-render-surface.h>
32 #include <drag-and-drop-detector-impl.h>
33 #include <ecore-indicator-impl.h>
34 #include <window-visibility-observer.h>
35 #include <orientation.h>
36 #include <orientation-impl.h>
40 const float INDICATOR_ANIMATION_DURATION( 0.18f ); // 180 milli seconds
41 const float INDICATOR_SHOW_Y_POSITION( 0.0f );
42 const float INDICATOR_HIDE_Y_POSITION( -52.0f );
51 #if defined(DEBUG_ENABLED)
52 Debug::Filter* gWindowLogFilter = Debug::Filter::New(Debug::Concise, false, "LOG_WINDOW");
56 * TODO: Abstract Window class out and move this into a window implementation for Ecore
58 struct Window::EventHandler
62 * @param[in] window A pointer to the window class.
64 EventHandler( Window* window )
66 mWindowPropertyHandler( NULL ),
67 mClientMessagehandler( NULL ),
68 mWindowDeleteRequestHandler( NULL ),
71 // store ecore window handle
72 ECore::WindowRenderSurface* x11Window( dynamic_cast< ECore::WindowRenderSurface * >( mWindow->mSurface ) );
75 mEcoreWindow = x11Window->GetXWindow();
77 DALI_ASSERT_ALWAYS( mEcoreWindow != 0 && "There is no ecore x window");
79 #ifndef DALI_PROFILE_UBUNTU
80 // set property on window to get deiconify approve client message
82 ecore_x_window_prop_card32_set(mEcoreWindow,
83 ECORE_X_ATOM_E_DEICONIFY_APPROVE,
85 #endif // DALI_PROFILE_UBUNTU
87 if( mWindow->mEcoreEventHander )
89 ecore_x_input_multi_select( mEcoreWindow );
91 // This ensures that we catch the window close (or delete) request
92 ecore_x_icccm_protocol_set( mEcoreWindow, ECORE_X_WM_PROTOCOL_DELETE_REQUEST, EINA_TRUE );
94 mWindowPropertyHandler= ecore_event_handler_add( ECORE_X_EVENT_WINDOW_PROPERTY, EcoreEventWindowPropertyChanged, this );
95 mClientMessagehandler = ecore_event_handler_add( ECORE_X_EVENT_CLIENT_MESSAGE, EcoreEventClientMessage, this );
96 mWindowDeleteRequestHandler = ecore_event_handler_add( ECORE_X_EVENT_WINDOW_DELETE_REQUEST, EcoreEventWindowDeleteRequest, this );
105 if ( mWindowPropertyHandler )
107 ecore_event_handler_del( mWindowPropertyHandler );
109 if ( mClientMessagehandler )
111 ecore_event_handler_del( mClientMessagehandler );
113 if ( mWindowDeleteRequestHandler )
115 ecore_event_handler_del( mWindowDeleteRequestHandler );
121 /// Called when the window properties are changed.
122 static Eina_Bool EcoreEventWindowPropertyChanged( void* data, int type, void* event )
124 Ecore_X_Event_Window_Property* propertyChangedEvent( (Ecore_X_Event_Window_Property*)event );
125 EventHandler* handler( (EventHandler*)data );
126 Eina_Bool handled( ECORE_CALLBACK_PASS_ON );
128 if ( handler && handler->mWindow )
130 WindowVisibilityObserver* observer( handler->mWindow->mAdaptor );
131 if ( observer && ( propertyChangedEvent->win == handler->mEcoreWindow ) )
133 Ecore_X_Window_State_Hint state( ecore_x_icccm_state_get( propertyChangedEvent->win ) );
137 case ECORE_X_WINDOW_STATE_HINT_WITHDRAWN:
139 // Window was hidden.
140 observer->OnWindowHidden();
141 DALI_LOG_INFO( gWindowLogFilter, Debug::General, "Window (%d) Withdrawn\n", handler->mEcoreWindow );
142 handled = ECORE_CALLBACK_DONE;
146 case ECORE_X_WINDOW_STATE_HINT_ICONIC:
148 // Window was iconified (minimised).
149 observer->OnWindowHidden();
150 DALI_LOG_INFO( gWindowLogFilter, Debug::General, "Window (%d) Iconfied\n", handler->mEcoreWindow );
151 handled = ECORE_CALLBACK_DONE;
155 case ECORE_X_WINDOW_STATE_HINT_NORMAL:
158 observer->OnWindowShown();
159 DALI_LOG_INFO( gWindowLogFilter, Debug::General, "Window (%d) Shown\n", handler->mEcoreWindow );
160 handled = ECORE_CALLBACK_DONE;
174 /// Called when the window properties are changed.
175 static Eina_Bool EcoreEventClientMessage( void* data, int type, void* event )
177 Eina_Bool handled( ECORE_CALLBACK_PASS_ON );
178 #ifndef DALI_PROFILE_UBUNTU
179 Ecore_X_Event_Client_Message* clientMessageEvent( (Ecore_X_Event_Client_Message*)event );
180 EventHandler* handler( (EventHandler*)data );
182 if (clientMessageEvent->message_type == ECORE_X_ATOM_E_DEICONIFY_APPROVE)
184 ECore::WindowRenderSurface* x11Window( dynamic_cast< ECore::WindowRenderSurface * >( handler->mWindow->mSurface ) );
185 WindowVisibilityObserver* observer( handler->mWindow->mAdaptor );
187 if ( observer && ( (unsigned int)clientMessageEvent->data.l[0] == handler->mEcoreWindow ) )
189 if (clientMessageEvent->data.l[1] == 0) //wm sends request message using value 0
191 observer->OnWindowShown();
193 // request to approve the deiconify. render-surface should send proper event after real rendering
196 x11Window->RequestToApproveDeiconify();
199 handled = ECORE_CALLBACK_DONE;
203 #endif // DALI_PROFILE_UBUNTU
208 /// Called when the window receives a delete request
209 static Eina_Bool EcoreEventWindowDeleteRequest( void* data, int type, void* event )
211 EventHandler* handler( (EventHandler*)data );
212 handler->mWindow->mDeleteRequestSignal.Emit();
213 return ECORE_CALLBACK_DONE;
218 Ecore_Event_Handler* mWindowPropertyHandler;
219 Ecore_Event_Handler* mClientMessagehandler;
220 Ecore_Event_Handler* mWindowDeleteRequestHandler;
221 Ecore_X_Window mEcoreWindow;
225 Window* Window::New(const PositionSize& posSize, const std::string& name, const std::string& className, bool isTransparent)
227 Window* window = new Window();
228 window->mIsTransparent = isTransparent;
229 window->Initialize(posSize, name, className);
233 void Window::SetAdaptor(Dali::Adaptor& adaptor)
235 DALI_ASSERT_ALWAYS( !mStarted && "Adaptor already started" );
238 // Only create one overlay per window
239 Internal::Adaptor::Adaptor& adaptorImpl = Internal::Adaptor::Adaptor::GetImplementation(adaptor);
240 Integration::Core& core = adaptorImpl.GetCore();
241 mOverlay = &core.GetSystemOverlay();
243 Dali::RenderTaskList taskList = mOverlay->GetOverlayRenderTasks();
244 taskList.CreateTask();
246 mAdaptor = &adaptorImpl;
247 mAdaptor->AddObserver( *this );
249 // Can only create the detector when we know the Core has been instantiated.
250 mDragAndDropDetector = DragAndDropDetector::New();
251 mAdaptor->SetDragAndDropDetector( &GetImplementation( mDragAndDropDetector ) );
255 mOrientation->SetAdaptor(adaptor);
258 if( mIndicator != NULL )
260 mIndicator->SetAdaptor(mAdaptor);
264 RenderSurface* Window::GetSurface()
269 void Window::ShowIndicator( Dali::Window::IndicatorVisibleMode visibleMode )
271 DALI_LOG_TRACE_METHOD_FMT( gWindowLogFilter, "visible : %d\n", visibleMode );
272 DALI_ASSERT_DEBUG(mOverlay);
274 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
275 DALI_ASSERT_DEBUG(x11Window);
276 Ecore_X_Window xWinId = x11Window->GetXWindow();
278 mIndicatorVisible = visibleMode;
280 if ( mIndicatorVisible == Dali::Window::VISIBLE )
282 // when the indicator is visible, set proper mode for indicator server according to bg mode
283 if ( mIndicatorOpacityMode == Dali::Window::OPAQUE )
285 ecore_x_e_illume_indicator_opacity_set(xWinId, ECORE_X_ILLUME_INDICATOR_OPAQUE);
287 else if ( mIndicatorOpacityMode == Dali::Window::TRANSLUCENT )
289 ecore_x_e_illume_indicator_opacity_set(xWinId, ECORE_X_ILLUME_INDICATOR_TRANSLUCENT);
291 #if defined(DALI_PROFILE_MOBILE)
292 else if ( mIndicatorOpacityMode == Dali::Window::TRANSPARENT )
294 ecore_x_e_illume_indicator_opacity_set(xWinId, ECORE_X_ILLUME_INDICATOR_OPAQUE);
300 // when the indicator is not visible, set TRANSPARENT mode for indicator server
301 ecore_x_e_illume_indicator_opacity_set(xWinId, ECORE_X_ILLUME_INDICATOR_TRANSPARENT); // it means hidden indicator
304 DoShowIndicator( mIndicatorOrientation );
307 void Window::RotateIndicator(Dali::Window::WindowOrientation orientation)
309 DALI_LOG_TRACE_METHOD_FMT( gWindowLogFilter, "Orientation: %d\n", orientation );
311 DoRotateIndicator( orientation );
314 void Window::SetIndicatorBgOpacity( Dali::Window::IndicatorBgOpacity opacityMode )
316 mIndicatorOpacityMode = opacityMode;
318 if( mIndicator != NULL )
320 mIndicator->SetOpacityMode( opacityMode );
324 void Window::SetClass(std::string name, std::string klass)
326 // Get render surface's x11 window
329 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
332 ecore_x_icccm_name_class_set( x11Window->GetXWindow(), name.c_str(), klass.c_str() );
339 mIndicatorVisible( Dali::Window::INVISIBLE ),
340 mIndicatorIsShown( false ),
341 mShowRotatedIndicatorOnClose( false ),
343 mIsTransparent( false ),
344 mWMRotationAppSet( false ),
345 mEcoreEventHander( true ),
346 mIsFocusAcceptable( true ),
348 mOpaqueState( false ),
350 mIndicatorOrientation( Dali::Window::PORTRAIT ),
351 mNextIndicatorOrientation( Dali::Window::PORTRAIT ),
352 mIndicatorOpacityMode( Dali::Window::OPAQUE ),
355 mType( Dali::DevelWindow::NORMAL ),
356 mEventHandler( NULL ),
357 mPreferredOrientation( Dali::Window::PORTRAIT ),
358 mSupportedAuxiliaryHints(),
362 // Detect if we're not running in a ecore main loop (e.g. libuv).
363 // Typically ecore_x_init is called by app_efl_main->elm_init
364 // but if we're not using app_efl_main then we have to call it ourselves
365 // This is a hack until we create a pure X Window class
366 if( ecore_x_display_get() == NULL )
368 mEcoreEventHander = false;
369 ecore_x_init (NULL); // internally calls _ecore_x_input_init
376 delete mEventHandler;
380 mOverlay->Remove( mIndicator->GetActor() );
381 Dali::RenderTaskList taskList = mOverlay->GetOverlayRenderTasks();
382 Dali::RenderTask indicatorTask = taskList.GetTask(0);
383 mOverlay->GetOverlayRenderTasks().RemoveTask(indicatorTask);
390 mAdaptor->RemoveObserver( *this );
391 mAdaptor->SetDragAndDropDetector( NULL );
398 void Window::Initialize(const PositionSize& windowPosition, const std::string& name, const std::string& className)
400 // create an X11 window by default
402 ECore::WindowRenderSurface* windowSurface = new ECore::WindowRenderSurface( windowPosition, surface, name, className, mIsTransparent );
403 windowSurface->Map();
405 mSurface = windowSurface;
407 mOrientation = Orientation::New(this);
409 // create event handler for X11 window
410 mEventHandler = new EventHandler( this );
413 void Window::DoShowIndicator( Dali::Window::WindowOrientation lastOrientation )
415 if( mIndicator == NULL )
417 if( mIndicatorVisible != Dali::Window::INVISIBLE )
419 mIndicator = new Indicator( mAdaptor, mIndicatorOrientation, this );
420 mIndicator->SetOpacityMode( mIndicatorOpacityMode );
421 Dali::Actor actor = mIndicator->GetActor();
422 SetIndicatorActorRotation();
423 mOverlay->Add(actor);
425 // else don't create a hidden indicator
427 else // Already have indicator
429 if( mIndicatorVisible == Dali::Window::VISIBLE )
431 // If we are resuming, and rotation has changed,
432 if( mIndicatorIsShown == false && mIndicatorOrientation != mNextIndicatorOrientation )
434 // then close current indicator and open new one
435 mShowRotatedIndicatorOnClose = true;
436 mIndicator->Close(); // May synchronously call IndicatorClosed() callback & 1 level of recursion
437 // Don't show actor - will contain indicator for old orientation.
442 // set indicator visible mode
443 if( mIndicator != NULL )
445 mIndicator->SetVisible( mIndicatorVisible );
448 bool show = (mIndicatorVisible != Dali::Window::INVISIBLE );
449 SetIndicatorProperties( show, lastOrientation );
450 mIndicatorIsShown = show;
453 void Window::DoRotateIndicator( Dali::Window::WindowOrientation orientation )
455 if( mIndicatorIsShown )
457 mShowRotatedIndicatorOnClose = true;
458 mNextIndicatorOrientation = orientation;
459 mIndicator->Close(); // May synchronously call IndicatorClosed() callback
463 // Save orientation for when the indicator is next shown
464 mShowRotatedIndicatorOnClose = false;
465 mNextIndicatorOrientation = orientation;
469 void Window::SetIndicatorProperties( bool isShow, Dali::Window::WindowOrientation lastOrientation )
471 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
474 Ecore_X_Window win = x11Window->GetXWindow();
476 int show_state = static_cast<int>( isShow );
477 ecore_x_window_prop_property_set( win,
478 ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE,
479 ECORE_X_ATOM_CARDINAL, 32, &show_state, 1);
483 ecore_x_e_illume_indicator_state_set(win, ECORE_X_ILLUME_INDICATOR_STATE_ON);
487 ecore_x_e_illume_indicator_state_set(win, ECORE_X_ILLUME_INDICATOR_STATE_OFF);
492 void Window::IndicatorTypeChanged(Indicator::Type type)
494 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
497 #ifndef DALI_PROFILE_UBUNTU
498 Ecore_X_Window win = x11Window->GetXWindow();
501 case Indicator::INDICATOR_TYPE_1:
502 ecore_x_e_illume_indicator_type_set( win, ECORE_X_ILLUME_INDICATOR_TYPE_1 );
505 case Indicator::INDICATOR_TYPE_2:
506 ecore_x_e_illume_indicator_type_set( win, ECORE_X_ILLUME_INDICATOR_TYPE_2 );
509 case Indicator::INDICATOR_TYPE_UNKNOWN:
513 #endif // DALI_PROFILE_UBUNTU
517 void Window::IndicatorClosed( IndicatorInterface* indicator )
519 DALI_LOG_TRACE_METHOD( gWindowLogFilter );
521 if( mShowRotatedIndicatorOnClose )
523 Dali::Window::WindowOrientation currentOrientation = mIndicatorOrientation;
524 mIndicator->Open(mNextIndicatorOrientation);
525 mIndicatorOrientation = mNextIndicatorOrientation;
526 SetIndicatorActorRotation();
527 DoShowIndicator(currentOrientation);
531 void Window::IndicatorVisibilityChanged(bool isVisible)
533 mIndicatorVisibilityChangedSignal.Emit(isVisible);
536 void Window::SetIndicatorActorRotation()
538 DALI_LOG_TRACE_METHOD( gWindowLogFilter );
539 DALI_ASSERT_DEBUG( mIndicator != NULL );
541 Dali::Actor actor = mIndicator->GetActor();
542 switch( mIndicatorOrientation )
544 case Dali::Window::PORTRAIT:
545 actor.SetParentOrigin( ParentOrigin::TOP_CENTER );
546 actor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
547 actor.SetOrientation( Degree(0), Vector3::ZAXIS );
549 case Dali::Window::PORTRAIT_INVERSE:
550 actor.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
551 actor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
552 actor.SetOrientation( Degree(180), Vector3::ZAXIS );
554 case Dali::Window::LANDSCAPE:
555 actor.SetParentOrigin( ParentOrigin::CENTER_LEFT );
556 actor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
557 actor.SetOrientation( Degree(270), Vector3::ZAXIS );
559 case Dali::Window::LANDSCAPE_INVERSE:
560 actor.SetParentOrigin( ParentOrigin::CENTER_RIGHT );
561 actor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
562 actor.SetOrientation( Degree(90), Vector3::ZAXIS );
569 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
572 Ecore_X_Window win = x11Window->GetXWindow();
573 ecore_x_window_raise(win);
579 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
582 Ecore_X_Window win = x11Window->GetXWindow();
583 ecore_x_window_lower(win);
587 void Window::Activate()
589 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
592 Ecore_X_Window win = x11Window->GetXWindow();
593 ecore_x_netwm_client_active_request(ecore_x_window_root_get(win), win, 1 /* request type, 1:application, 2:pager */, 0);
597 Dali::DragAndDropDetector Window::GetDragAndDropDetector() const
599 return mDragAndDropDetector;
602 Dali::Any Window::GetNativeHandle() const
606 return mEventHandler->mEcoreWindow;
614 void Window::OnStart()
616 ShowIndicator( mIndicatorVisible );
619 void Window::OnPause()
623 void Window::OnResume()
625 // resume indicator status
626 if( mIndicator != NULL )
628 // Restore own indicator opacity
629 // Send opacity mode to indicator service when app resumed
630 mIndicator->SetOpacityMode( mIndicatorOpacityMode );
634 void Window::OnStop()
645 void Window::OnDestroy()
650 void Window::AddAvailableOrientation(Dali::Window::WindowOrientation orientation)
654 for( std::size_t i=0; i<mAvailableOrientations.size(); i++ )
656 if(mAvailableOrientations[i] == orientation)
665 mAvailableOrientations.push_back(orientation);
666 SetAvailableOrientations( mAvailableOrientations );
670 void Window::RemoveAvailableOrientation(Dali::Window::WindowOrientation orientation)
672 for( std::vector<Dali::Window::WindowOrientation>::iterator iter = mAvailableOrientations.begin();
673 iter != mAvailableOrientations.end(); ++iter )
675 if( *iter == orientation )
677 mAvailableOrientations.erase( iter );
681 SetAvailableOrientations( mAvailableOrientations );
684 void Window::SetAvailableOrientations(const std::vector<Dali::Window::WindowOrientation>& orientations)
686 DALI_ASSERT_ALWAYS( mAvailableOrientations.size() <= 4 && "Incorrect number of available orientations" );
688 mAvailableOrientations = orientations;
689 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
692 #ifndef DALI_PROFILE_UBUNTU
693 Ecore_X_Window ecoreWindow = x11Window->GetXWindow();
694 if( ! mWMRotationAppSet )
696 mWMRotationAppSet = true;
697 ecore_x_e_window_rotation_app_set(ecoreWindow, EINA_TRUE);
701 for( std::size_t i=0; i<mAvailableOrientations.size(); i++ )
703 rotations[i] = static_cast<int>(mAvailableOrientations[i]);
705 ecore_x_e_window_rotation_available_rotations_set(ecoreWindow, rotations, mAvailableOrientations.size() );
706 #endif // DALI_PROFILE_UBUNTU
710 const std::vector<Dali::Window::WindowOrientation>& Window::GetAvailableOrientations()
712 return mAvailableOrientations;
715 void Window::SetPreferredOrientation(Dali::Window::WindowOrientation orientation)
717 mPreferredOrientation = orientation;
719 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
722 #ifndef DALI_PROFILE_UBUNTU
723 Ecore_X_Window ecoreWindow = x11Window->GetXWindow();
725 if( ! mWMRotationAppSet )
727 mWMRotationAppSet = true;
728 ecore_x_e_window_rotation_app_set(ecoreWindow, EINA_TRUE);
731 ecore_x_e_window_rotation_preferred_rotation_set(ecoreWindow, orientation);
732 #endif // DALI_PROFILE_UBUNTU
736 Dali::Window::WindowOrientation Window::GetPreferredOrientation()
738 return mPreferredOrientation;
741 void Window::SetAcceptFocus( bool accept )
743 mIsFocusAcceptable = accept;
746 bool Window::IsFocusAcceptable()
748 return mIsFocusAcceptable;
753 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
756 Ecore_X_Window win = x11Window->GetXWindow();
757 ecore_x_window_show( win );
759 // Need an update request
762 mAdaptor->RequestUpdateOnce();
769 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
772 Ecore_X_Window win = x11Window->GetXWindow();
773 ecore_x_window_hide( win );
777 bool Window::IsVisible() const
779 bool visible = false;
781 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
784 Ecore_X_Window win = x11Window->GetXWindow();
785 visible = static_cast< bool >( ecore_x_window_visible_get( win ) );
790 void Window::RotationDone( int orientation, int width, int height )
792 // Tell window manager we're done
793 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
796 #ifndef DALI_PROFILE_UBUNTU
797 Ecore_X_Window ecoreWindow = x11Window->GetXWindow();
798 Ecore_X_Window root = ecore_x_window_root_get(ecoreWindow);
801 * send rotation done message to wm, even if window is already rotated.
802 * that's why wm must be wait for comming rotation done message
803 * after sending rotation request.
805 ecore_x_e_window_rotation_change_done_send(root, ecoreWindow, orientation, width, height);
808 * set rotate window property
810 int angles[2] = { orientation, orientation };
811 ecore_x_window_prop_property_set( ecoreWindow,
812 ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
813 ECORE_X_ATOM_CARDINAL, 32, &angles, 2 );
814 #endif // DALI_PROFILE_UBUNTU
818 unsigned int Window::GetSupportedAuxiliaryHintCount()
823 std::string Window::GetSupportedAuxiliaryHint( unsigned int index )
825 return std::string();
828 unsigned int Window::AddAuxiliaryHint( const std::string& hint, const std::string& value )
833 bool Window::RemoveAuxiliaryHint( unsigned int id )
838 bool Window::SetAuxiliaryHintValue( unsigned int id, const std::string& value )
843 std::string Window::GetAuxiliaryHintValue( unsigned int id ) const
845 return std::string();
848 unsigned int Window::GetAuxiliaryHintId( const std::string& hint ) const
853 void Window::SetInputRegion( const Rect< int >& inputRegion )
857 void Window::SetType( Dali::DevelWindow::Type type )
862 Dali::DevelWindow::Type Window::GetType() const
867 bool Window::SetNotificationLevel( Dali::DevelWindow::NotificationLevel::Type level )
872 Dali::DevelWindow::NotificationLevel::Type Window::GetNotificationLevel()
874 return Dali::DevelWindow::NotificationLevel::NONE;
877 void Window::SetOpaqueState( bool opaque )
879 mOpaqueState = opaque;
882 bool Window::IsOpaqueState()
887 bool Window::SetScreenMode( Dali::DevelWindow::ScreenMode::Type screenMode )
892 Dali::DevelWindow::ScreenMode::Type Window::GetScreenMode()
894 return Dali::DevelWindow::ScreenMode::DEFAULT;
897 bool Window::SetBrightness( int brightness )
902 int Window::GetBrightness()
907 void* Window::GetNativeWindowHandler()
909 return &(mEventHandler->mEcoreWindow);