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"
22 // Ecore is littered with C style cast
23 #pragma GCC diagnostic push
24 #pragma GCC diagnostic ignored "-Wold-style-cast"
28 #include <dali/integration-api/core.h>
29 #include <dali/integration-api/system-overlay.h>
30 #include <dali/public-api/render-tasks/render-task.h>
31 #include <dali/public-api/render-tasks/render-task-list.h>
34 #include <window-render-surface.h>
35 #include <drag-and-drop-detector-impl.h>
36 #include <ecore-indicator-impl.h>
37 #include <window-visibility-observer.h>
38 #include <orientation.h>
39 #include <orientation-impl.h>
43 const float INDICATOR_ANIMATION_DURATION( 0.18f ); // 180 milli seconds
44 const float INDICATOR_SHOW_Y_POSITION( 0.0f );
45 const float INDICATOR_HIDE_Y_POSITION( -52.0f );
54 #if defined(DEBUG_ENABLED)
55 Debug::Filter* gWindowLogFilter = Debug::Filter::New(Debug::Concise, false, "LOG_WINDOW");
59 * TODO: Abstract Window class out and move this into a window implementation for Ecore
61 struct Window::EventHandler
65 * @param[in] window A pointer to the window class.
67 EventHandler( Window* window )
69 mWindowPropertyHandler( NULL ),
70 mClientMessagehandler( NULL ),
71 mWindowDeleteRequestHandler( NULL ),
74 // store ecore window handle
75 ECore::WindowRenderSurface* x11Window( dynamic_cast< ECore::WindowRenderSurface * >( mWindow->mSurface ) );
78 mEcoreWindow = x11Window->GetXWindow();
80 DALI_ASSERT_ALWAYS( mEcoreWindow != 0 && "There is no ecore x window");
82 #ifndef DALI_PROFILE_UBUNTU
83 // set property on window to get deiconify approve client message
85 ecore_x_window_prop_card32_set(mEcoreWindow,
86 ECORE_X_ATOM_E_DEICONIFY_APPROVE,
88 #endif // DALI_PROFILE_UBUNTU
90 if( mWindow->mEcoreEventHander )
92 ecore_x_input_multi_select( mEcoreWindow );
94 // This ensures that we catch the window close (or delete) request
95 ecore_x_icccm_protocol_set( mEcoreWindow, ECORE_X_WM_PROTOCOL_DELETE_REQUEST, EINA_TRUE );
97 mWindowPropertyHandler= ecore_event_handler_add( ECORE_X_EVENT_WINDOW_PROPERTY, EcoreEventWindowPropertyChanged, this );
98 mClientMessagehandler = ecore_event_handler_add( ECORE_X_EVENT_CLIENT_MESSAGE, EcoreEventClientMessage, this );
99 mWindowDeleteRequestHandler = ecore_event_handler_add( ECORE_X_EVENT_WINDOW_DELETE_REQUEST, EcoreEventWindowDeleteRequest, this );
108 if ( mWindowPropertyHandler )
110 ecore_event_handler_del( mWindowPropertyHandler );
112 if ( mClientMessagehandler )
114 ecore_event_handler_del( mClientMessagehandler );
116 if ( mWindowDeleteRequestHandler )
118 ecore_event_handler_del( mWindowDeleteRequestHandler );
124 /// Called when the window properties are changed.
125 static Eina_Bool EcoreEventWindowPropertyChanged( void* data, int type, void* event )
127 Ecore_X_Event_Window_Property* propertyChangedEvent( (Ecore_X_Event_Window_Property*)event );
128 EventHandler* handler( (EventHandler*)data );
129 Eina_Bool handled( ECORE_CALLBACK_PASS_ON );
131 if ( handler && handler->mWindow )
133 WindowVisibilityObserver* observer( handler->mWindow->mAdaptor );
134 if ( observer && ( propertyChangedEvent->win == handler->mEcoreWindow ) )
136 Ecore_X_Window_State_Hint state( ecore_x_icccm_state_get( propertyChangedEvent->win ) );
140 case ECORE_X_WINDOW_STATE_HINT_WITHDRAWN:
142 // Window was hidden.
143 observer->OnWindowHidden();
144 DALI_LOG_INFO( gWindowLogFilter, Debug::General, "Window (%d) Withdrawn\n", handler->mEcoreWindow );
145 handled = ECORE_CALLBACK_DONE;
149 case ECORE_X_WINDOW_STATE_HINT_ICONIC:
151 // Window was iconified (minimised).
152 observer->OnWindowHidden();
153 DALI_LOG_INFO( gWindowLogFilter, Debug::General, "Window (%d) Iconfied\n", handler->mEcoreWindow );
154 handled = ECORE_CALLBACK_DONE;
158 case ECORE_X_WINDOW_STATE_HINT_NORMAL:
161 observer->OnWindowShown();
162 DALI_LOG_INFO( gWindowLogFilter, Debug::General, "Window (%d) Shown\n", handler->mEcoreWindow );
163 handled = ECORE_CALLBACK_DONE;
177 /// Called when the window properties are changed.
178 static Eina_Bool EcoreEventClientMessage( void* data, int type, void* event )
180 Eina_Bool handled( ECORE_CALLBACK_PASS_ON );
181 #ifndef DALI_PROFILE_UBUNTU
182 Ecore_X_Event_Client_Message* clientMessageEvent( (Ecore_X_Event_Client_Message*)event );
183 EventHandler* handler( (EventHandler*)data );
185 if (clientMessageEvent->message_type == ECORE_X_ATOM_E_DEICONIFY_APPROVE)
187 ECore::WindowRenderSurface* x11Window( dynamic_cast< ECore::WindowRenderSurface * >( handler->mWindow->mSurface ) );
188 WindowVisibilityObserver* observer( handler->mWindow->mAdaptor );
190 if ( observer && ( (unsigned int)clientMessageEvent->data.l[0] == handler->mEcoreWindow ) )
192 if (clientMessageEvent->data.l[1] == 0) //wm sends request message using value 0
194 observer->OnWindowShown();
196 // request to approve the deiconify. render-surface should send proper event after real rendering
199 x11Window->RequestToApproveDeiconify();
202 handled = ECORE_CALLBACK_DONE;
206 #endif // DALI_PROFILE_UBUNTU
211 /// Called when the window receives a delete request
212 static Eina_Bool EcoreEventWindowDeleteRequest( void* data, int type, void* event )
214 EventHandler* handler( (EventHandler*)data );
215 handler->mWindow->mDeleteRequestSignal.Emit();
216 return ECORE_CALLBACK_DONE;
221 Ecore_Event_Handler* mWindowPropertyHandler;
222 Ecore_Event_Handler* mClientMessagehandler;
223 Ecore_Event_Handler* mWindowDeleteRequestHandler;
224 Ecore_X_Window mEcoreWindow;
228 Window* Window::New(const PositionSize& posSize, const std::string& name, const std::string& className, bool isTransparent)
230 Window* window = new Window();
231 window->mIsTransparent = isTransparent;
232 window->Initialize(posSize, name, className);
236 void Window::SetAdaptor(Dali::Adaptor& adaptor)
238 DALI_ASSERT_ALWAYS( !mStarted && "Adaptor already started" );
241 // Only create one overlay per window
242 Internal::Adaptor::Adaptor& adaptorImpl = Internal::Adaptor::Adaptor::GetImplementation(adaptor);
243 Integration::Core& core = adaptorImpl.GetCore();
244 mOverlay = &core.GetSystemOverlay();
246 Dali::RenderTaskList taskList = mOverlay->GetOverlayRenderTasks();
247 taskList.CreateTask();
249 mAdaptor = &adaptorImpl;
250 mAdaptor->AddObserver( *this );
252 // Can only create the detector when we know the Core has been instantiated.
253 mDragAndDropDetector = DragAndDropDetector::New();
254 mAdaptor->SetDragAndDropDetector( &GetImplementation( mDragAndDropDetector ) );
258 mOrientation->SetAdaptor(adaptor);
261 if( mIndicator != NULL )
263 mIndicator->SetAdaptor(mAdaptor);
267 RenderSurface* Window::GetSurface()
272 void Window::ShowIndicator( Dali::Window::IndicatorVisibleMode visibleMode )
274 DALI_LOG_TRACE_METHOD_FMT( gWindowLogFilter, "visible : %d\n", visibleMode );
275 DALI_ASSERT_DEBUG(mOverlay);
277 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
278 DALI_ASSERT_DEBUG(x11Window);
279 Ecore_X_Window xWinId = x11Window->GetXWindow();
281 mIndicatorVisible = visibleMode;
283 if ( mIndicatorVisible == Dali::Window::VISIBLE )
285 // when the indicator is visible, set proper mode for indicator server according to bg mode
286 if ( mIndicatorOpacityMode == Dali::Window::OPAQUE )
288 ecore_x_e_illume_indicator_opacity_set(xWinId, ECORE_X_ILLUME_INDICATOR_OPAQUE);
290 else if ( mIndicatorOpacityMode == Dali::Window::TRANSLUCENT )
292 ecore_x_e_illume_indicator_opacity_set(xWinId, ECORE_X_ILLUME_INDICATOR_TRANSLUCENT);
294 #if defined(DALI_PROFILE_MOBILE)
295 else if ( mIndicatorOpacityMode == Dali::Window::TRANSPARENT )
297 ecore_x_e_illume_indicator_opacity_set(xWinId, ECORE_X_ILLUME_INDICATOR_OPAQUE);
303 // when the indicator is not visible, set TRANSPARENT mode for indicator server
304 ecore_x_e_illume_indicator_opacity_set(xWinId, ECORE_X_ILLUME_INDICATOR_TRANSPARENT); // it means hidden indicator
307 DoShowIndicator( mIndicatorOrientation );
310 void Window::RotateIndicator(Dali::Window::WindowOrientation orientation)
312 DALI_LOG_TRACE_METHOD_FMT( gWindowLogFilter, "Orientation: %d\n", orientation );
314 DoRotateIndicator( orientation );
317 void Window::SetIndicatorBgOpacity( Dali::Window::IndicatorBgOpacity opacityMode )
319 mIndicatorOpacityMode = opacityMode;
321 if( mIndicator != NULL )
323 mIndicator->SetOpacityMode( opacityMode );
327 void Window::SetClass(std::string name, std::string klass)
329 // Get render surface's x11 window
332 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
335 ecore_x_icccm_name_class_set( x11Window->GetXWindow(), name.c_str(), klass.c_str() );
342 mIndicatorVisible( Dali::Window::INVISIBLE ),
343 mIndicatorIsShown( false ),
344 mShowRotatedIndicatorOnClose( false ),
346 mIsTransparent( false ),
347 mWMRotationAppSet( false ),
348 mEcoreEventHander( true ),
349 mIsFocusAcceptable( true ),
351 mOpaqueState( false ),
353 mIndicatorOrientation( Dali::Window::PORTRAIT ),
354 mNextIndicatorOrientation( Dali::Window::PORTRAIT ),
355 mIndicatorOpacityMode( Dali::Window::OPAQUE ),
358 mType( Dali::DevelWindow::NORMAL ),
359 mEventHandler( NULL ),
360 mPreferredOrientation( Dali::Window::PORTRAIT ),
361 mSupportedAuxiliaryHints(),
365 // Detect if we're not running in a ecore main loop (e.g. libuv).
366 // Typically ecore_x_init is called by app_efl_main->elm_init
367 // but if we're not using app_efl_main then we have to call it ourselves
368 // This is a hack until we create a pure X Window class
369 if( ecore_x_display_get() == NULL )
371 mEcoreEventHander = false;
372 ecore_x_init (NULL); // internally calls _ecore_x_input_init
379 delete mEventHandler;
383 mOverlay->Remove( mIndicator->GetActor() );
384 Dali::RenderTaskList taskList = mOverlay->GetOverlayRenderTasks();
385 Dali::RenderTask indicatorTask = taskList.GetTask(0);
386 mOverlay->GetOverlayRenderTasks().RemoveTask(indicatorTask);
393 mAdaptor->RemoveObserver( *this );
394 mAdaptor->SetDragAndDropDetector( NULL );
401 void Window::Initialize(const PositionSize& windowPosition, const std::string& name, const std::string& className)
403 // create an X11 window by default
405 ECore::WindowRenderSurface* windowSurface = new ECore::WindowRenderSurface( windowPosition, surface, name, className, mIsTransparent );
406 windowSurface->Map();
408 mSurface = windowSurface;
410 mOrientation = Orientation::New(this);
412 // create event handler for X11 window
413 mEventHandler = new EventHandler( this );
416 void Window::DoShowIndicator( Dali::Window::WindowOrientation lastOrientation )
418 if( mIndicator == NULL )
420 if( mIndicatorVisible != Dali::Window::INVISIBLE )
422 mIndicator = new Indicator( mAdaptor, mIndicatorOrientation, this );
423 mIndicator->SetOpacityMode( mIndicatorOpacityMode );
424 Dali::Actor actor = mIndicator->GetActor();
425 SetIndicatorActorRotation();
426 mOverlay->Add(actor);
428 // else don't create a hidden indicator
430 else // Already have indicator
432 if( mIndicatorVisible == Dali::Window::VISIBLE )
434 // If we are resuming, and rotation has changed,
435 if( mIndicatorIsShown == false && mIndicatorOrientation != mNextIndicatorOrientation )
437 // then close current indicator and open new one
438 mShowRotatedIndicatorOnClose = true;
439 mIndicator->Close(); // May synchronously call IndicatorClosed() callback & 1 level of recursion
440 // Don't show actor - will contain indicator for old orientation.
445 // set indicator visible mode
446 if( mIndicator != NULL )
448 mIndicator->SetVisible( mIndicatorVisible );
451 bool show = (mIndicatorVisible != Dali::Window::INVISIBLE );
452 SetIndicatorProperties( show, lastOrientation );
453 mIndicatorIsShown = show;
456 void Window::DoRotateIndicator( Dali::Window::WindowOrientation orientation )
458 if( mIndicatorIsShown )
460 mShowRotatedIndicatorOnClose = true;
461 mNextIndicatorOrientation = orientation;
462 mIndicator->Close(); // May synchronously call IndicatorClosed() callback
466 // Save orientation for when the indicator is next shown
467 mShowRotatedIndicatorOnClose = false;
468 mNextIndicatorOrientation = orientation;
472 void Window::SetIndicatorProperties( bool isShow, Dali::Window::WindowOrientation lastOrientation )
474 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
477 Ecore_X_Window win = x11Window->GetXWindow();
479 int show_state = static_cast<int>( isShow );
480 ecore_x_window_prop_property_set( win,
481 ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE,
482 ECORE_X_ATOM_CARDINAL, 32, &show_state, 1);
486 ecore_x_e_illume_indicator_state_set(win, ECORE_X_ILLUME_INDICATOR_STATE_ON);
490 ecore_x_e_illume_indicator_state_set(win, ECORE_X_ILLUME_INDICATOR_STATE_OFF);
495 void Window::IndicatorTypeChanged(Indicator::Type type)
497 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
500 #ifndef DALI_PROFILE_UBUNTU
501 Ecore_X_Window win = x11Window->GetXWindow();
504 case Indicator::INDICATOR_TYPE_1:
505 ecore_x_e_illume_indicator_type_set( win, ECORE_X_ILLUME_INDICATOR_TYPE_1 );
508 case Indicator::INDICATOR_TYPE_2:
509 ecore_x_e_illume_indicator_type_set( win, ECORE_X_ILLUME_INDICATOR_TYPE_2 );
512 case Indicator::INDICATOR_TYPE_UNKNOWN:
516 #endif // DALI_PROFILE_UBUNTU
520 void Window::IndicatorClosed( IndicatorInterface* indicator )
522 DALI_LOG_TRACE_METHOD( gWindowLogFilter );
524 if( mShowRotatedIndicatorOnClose )
526 Dali::Window::WindowOrientation currentOrientation = mIndicatorOrientation;
527 mIndicator->Open(mNextIndicatorOrientation);
528 mIndicatorOrientation = mNextIndicatorOrientation;
529 SetIndicatorActorRotation();
530 DoShowIndicator(currentOrientation);
534 void Window::IndicatorVisibilityChanged(bool isVisible)
536 mIndicatorVisibilityChangedSignal.Emit(isVisible);
539 void Window::SetIndicatorActorRotation()
541 DALI_LOG_TRACE_METHOD( gWindowLogFilter );
542 DALI_ASSERT_DEBUG( mIndicator != NULL );
544 Dali::Actor actor = mIndicator->GetActor();
545 switch( mIndicatorOrientation )
547 case Dali::Window::PORTRAIT:
548 actor.SetParentOrigin( ParentOrigin::TOP_CENTER );
549 actor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
550 actor.SetOrientation( Degree(0), Vector3::ZAXIS );
552 case Dali::Window::PORTRAIT_INVERSE:
553 actor.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
554 actor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
555 actor.SetOrientation( Degree(180), Vector3::ZAXIS );
557 case Dali::Window::LANDSCAPE:
558 actor.SetParentOrigin( ParentOrigin::CENTER_LEFT );
559 actor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
560 actor.SetOrientation( Degree(270), Vector3::ZAXIS );
562 case Dali::Window::LANDSCAPE_INVERSE:
563 actor.SetParentOrigin( ParentOrigin::CENTER_RIGHT );
564 actor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
565 actor.SetOrientation( Degree(90), Vector3::ZAXIS );
572 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
575 Ecore_X_Window win = x11Window->GetXWindow();
576 ecore_x_window_raise(win);
582 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
585 Ecore_X_Window win = x11Window->GetXWindow();
586 ecore_x_window_lower(win);
590 void Window::Activate()
592 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
595 Ecore_X_Window win = x11Window->GetXWindow();
596 ecore_x_netwm_client_active_request(ecore_x_window_root_get(win), win, 1 /* request type, 1:application, 2:pager */, 0);
600 Dali::DragAndDropDetector Window::GetDragAndDropDetector() const
602 return mDragAndDropDetector;
605 Dali::Any Window::GetNativeHandle() const
609 return mEventHandler->mEcoreWindow;
617 void Window::OnStart()
619 ShowIndicator( mIndicatorVisible );
622 void Window::OnPause()
626 void Window::OnResume()
628 // resume indicator status
629 if( mIndicator != NULL )
631 // Restore own indicator opacity
632 // Send opacity mode to indicator service when app resumed
633 mIndicator->SetOpacityMode( mIndicatorOpacityMode );
637 void Window::OnStop()
648 void Window::OnDestroy()
653 void Window::AddAvailableOrientation(Dali::Window::WindowOrientation orientation)
657 for( std::size_t i=0; i<mAvailableOrientations.size(); i++ )
659 if(mAvailableOrientations[i] == orientation)
668 mAvailableOrientations.push_back(orientation);
669 SetAvailableOrientations( mAvailableOrientations );
673 void Window::RemoveAvailableOrientation(Dali::Window::WindowOrientation orientation)
675 for( std::vector<Dali::Window::WindowOrientation>::iterator iter = mAvailableOrientations.begin();
676 iter != mAvailableOrientations.end(); ++iter )
678 if( *iter == orientation )
680 mAvailableOrientations.erase( iter );
684 SetAvailableOrientations( mAvailableOrientations );
687 void Window::SetAvailableOrientations(const std::vector<Dali::Window::WindowOrientation>& orientations)
689 DALI_ASSERT_ALWAYS( mAvailableOrientations.size() <= 4 && "Incorrect number of available orientations" );
691 mAvailableOrientations = orientations;
692 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
695 #ifndef DALI_PROFILE_UBUNTU
696 Ecore_X_Window ecoreWindow = x11Window->GetXWindow();
697 if( ! mWMRotationAppSet )
699 mWMRotationAppSet = true;
700 ecore_x_e_window_rotation_app_set(ecoreWindow, EINA_TRUE);
704 for( std::size_t i=0; i<mAvailableOrientations.size(); i++ )
706 rotations[i] = static_cast<int>(mAvailableOrientations[i]);
708 ecore_x_e_window_rotation_available_rotations_set(ecoreWindow, rotations, mAvailableOrientations.size() );
709 #endif // DALI_PROFILE_UBUNTU
713 const std::vector<Dali::Window::WindowOrientation>& Window::GetAvailableOrientations()
715 return mAvailableOrientations;
718 void Window::SetPreferredOrientation(Dali::Window::WindowOrientation orientation)
720 mPreferredOrientation = orientation;
722 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
725 #ifndef DALI_PROFILE_UBUNTU
726 Ecore_X_Window ecoreWindow = x11Window->GetXWindow();
728 if( ! mWMRotationAppSet )
730 mWMRotationAppSet = true;
731 ecore_x_e_window_rotation_app_set(ecoreWindow, EINA_TRUE);
734 ecore_x_e_window_rotation_preferred_rotation_set(ecoreWindow, orientation);
735 #endif // DALI_PROFILE_UBUNTU
739 Dali::Window::WindowOrientation Window::GetPreferredOrientation()
741 return mPreferredOrientation;
744 void Window::SetAcceptFocus( bool accept )
746 mIsFocusAcceptable = accept;
749 bool Window::IsFocusAcceptable()
751 return mIsFocusAcceptable;
756 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
759 Ecore_X_Window win = x11Window->GetXWindow();
760 ecore_x_window_show( win );
762 // Need an update request
765 mAdaptor->RequestUpdateOnce();
772 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
775 Ecore_X_Window win = x11Window->GetXWindow();
776 ecore_x_window_hide( win );
780 bool Window::IsVisible() const
782 bool visible = false;
784 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
787 Ecore_X_Window win = x11Window->GetXWindow();
788 visible = static_cast< bool >( ecore_x_window_visible_get( win ) );
793 void Window::RotationDone( int orientation, int width, int height )
795 // Tell window manager we're done
796 ECore::WindowRenderSurface* x11Window = dynamic_cast< ECore::WindowRenderSurface * >( mSurface );
799 #ifndef DALI_PROFILE_UBUNTU
800 Ecore_X_Window ecoreWindow = x11Window->GetXWindow();
801 Ecore_X_Window root = ecore_x_window_root_get(ecoreWindow);
804 * send rotation done message to wm, even if window is already rotated.
805 * that's why wm must be wait for comming rotation done message
806 * after sending rotation request.
808 ecore_x_e_window_rotation_change_done_send(root, ecoreWindow, orientation, width, height);
811 * set rotate window property
813 int angles[2] = { orientation, orientation };
814 ecore_x_window_prop_property_set( ecoreWindow,
815 ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
816 ECORE_X_ATOM_CARDINAL, 32, &angles, 2 );
817 #endif // DALI_PROFILE_UBUNTU
821 unsigned int Window::GetSupportedAuxiliaryHintCount()
826 std::string Window::GetSupportedAuxiliaryHint( unsigned int index )
828 return std::string();
831 unsigned int Window::AddAuxiliaryHint( const std::string& hint, const std::string& value )
836 bool Window::RemoveAuxiliaryHint( unsigned int id )
841 bool Window::SetAuxiliaryHintValue( unsigned int id, const std::string& value )
846 std::string Window::GetAuxiliaryHintValue( unsigned int id ) const
848 return std::string();
851 unsigned int Window::GetAuxiliaryHintId( const std::string& hint ) const
856 void Window::SetInputRegion( const Rect< int >& inputRegion )
860 void Window::SetType( Dali::DevelWindow::Type type )
865 Dali::DevelWindow::Type Window::GetType() const
870 bool Window::SetNotificationLevel( Dali::DevelWindow::NotificationLevel::Type level )
875 Dali::DevelWindow::NotificationLevel::Type Window::GetNotificationLevel()
877 return Dali::DevelWindow::NotificationLevel::NONE;
880 void Window::SetOpaqueState( bool opaque )
882 mOpaqueState = opaque;
885 bool Window::IsOpaqueState()
890 bool Window::SetScreenMode( Dali::DevelWindow::ScreenMode::Type screenMode )
895 Dali::DevelWindow::ScreenMode::Type Window::GetScreenMode()
897 return Dali::DevelWindow::ScreenMode::DEFAULT;
900 bool Window::SetBrightness( int brightness )
905 int Window::GetBrightness()
916 #pragma GCC diagnostic pop