windowBase->OnEcoreElDBusAccessibilityNotification( context, message );
}
}
+
+// Callback for Ecore ElDBus accessibility quickpanel changed event.
+static void EcoreElDBusAccessibilityQuickpanelChanged( void* context, const Eldbus_Message* message )
+{
+ WindowBaseEcoreWl2* windowBase = static_cast< WindowBaseEcoreWl2* >( context );
+ if( windowBase )
+ {
+ windowBase->OnEcoreElDBusAccessibilityQuickpanelChanged( context, message );
+ }
+}
#endif // DALI_ELDBUS_AVAILABLE
static void RegistryGlobalCallback( void* data, struct wl_registry *registry, uint32_t name, const char* interface, uint32_t version )
void WindowBaseEcoreWl2::OnEcoreElDBusAccessibilityNotification( void* context, const Eldbus_Message* message )
{
#ifdef DALI_ELDBUS_AVAILABLE
- AccessibilityInfo info;
// The string defines the arg-list's respective types.
- if( !eldbus_message_arguments_get( message, "iiiiiiu", &info.gestureValue, &info.startX, &info.startY, &info.endX, &info.endY, &info.state, &info.eventTime ) )
+ if( !eldbus_message_arguments_get( message, "iiiiiiu", &mAccessibilityInfo.gestureValue, &mAccessibilityInfo.startX, &mAccessibilityInfo.startY, &mAccessibilityInfo.endX, &mAccessibilityInfo.endY, &mAccessibilityInfo.state, &mAccessibilityInfo.eventTime ) )
{
DALI_LOG_ERROR( "OnEcoreElDBusAccessibilityNotification: Error getting arguments\n" );
}
- mAccessibilitySignal.Emit( info );
+ mAccessibilitySignal.Emit( mAccessibilityInfo );
+#endif
+}
+
+void WindowBaseEcoreWl2::OnEcoreElDBusAccessibilityQuickpanelChanged( void* context, const Eldbus_Message* message )
+{
+#ifdef DALI_ELDBUS_AVAILABLE
+
+ unsigned int type = 0; // For example, type 1 is QuickPanel, type 3 is AllApps
+ unsigned int state = 0; // 0 is hidden, 1 is shown
+
+ // The string defines the arg-list's respective types.
+ if( !eldbus_message_arguments_get( message, "uu", &type, &state ) )
+ {
+ DALI_LOG_ERROR( "OnEcoreElDBusAccessibilityQuickpanelChanged: Error getting arguments\n" );
+ }
+
+ if( state ) // Shown
+ {
+ mAccessibilityInfo.quickpanelInfo |= 1 << type;
+ }
+ else // Hidden
+ {
+ mAccessibilityInfo.quickpanelInfo &= ~( 1 << type );
+ }
+
+ mQuickPanelSignal.Emit( mAccessibilityInfo.quickpanelInfo );
#endif
}
void WindowBaseEcoreWl2::Show()
{
- if( !mVisible )
+ if(!mVisible)
{
- ecore_wl2_window_geometry_set( mEcoreWindow, mWindowPositionSize.x, mWindowPositionSize.y, mWindowPositionSize.width, mWindowPositionSize.height );
+ // Ecore-wl2 has the original window size
+ // and he always sends the window rotation event with the swapped size.
+ // So, to restore, dali should set the reswapped size(original window size) to ecore-wl2 for restoring.
+ if(mWindowRotationAngle == 0 || mWindowRotationAngle == 180)
+ {
+ ecore_wl2_window_geometry_set(mEcoreWindow, mWindowPositionSize.x, mWindowPositionSize.y, mWindowPositionSize.width, mWindowPositionSize.height);
+ }
+ else
+ {
+ ecore_wl2_window_geometry_set(mEcoreWindow, mWindowPositionSize.x, mWindowPositionSize.y, mWindowPositionSize.height, mWindowPositionSize.width);
+ }
}
mVisible = true;
return;
}
+ // Save dbus proxy on init.
+ mAccessibilityInfo.proxy = manager;
+
if( !eldbus_proxy_signal_handler_add( manager, "GestureDetected", EcoreElDBusAccessibilityNotification, this ) )
{
DALI_LOG_ERROR( "No signal handler returned\n" );
}
+
+ if( !eldbus_proxy_signal_handler_add( manager, "QuickpanelChanged", EcoreElDBusAccessibilityQuickpanelChanged, this ) )
+ {
+ DALI_LOG_ERROR( "No signal handler returned for QuickpanelChanged signal\n" );
+ }
#endif
}