diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c index 26198166f..2ecbfe741 100644 --- a/src/backends/meta-backend.c +++ b/src/backends/meta-backend.c @@ -560,6 +560,8 @@ meta_backend_real_post_init (MetaBackend *backend) reset_pointer_position (backend); priv->is_pointer_position_initialized = TRUE; } + + meta_monitor_manager_post_init (priv->monitor_manager); } static gboolean diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h index 7df72f716..ac3bc94d6 100644 --- a/src/backends/meta-monitor-manager-private.h +++ b/src/backends/meta-monitor-manager-private.h @@ -407,4 +407,6 @@ meta_find_output_assignment (MetaOutputAssignment **outputs, return NULL; } +void meta_monitor_manager_post_init (MetaMonitorManager *manager); + #endif /* META_MONITOR_MANAGER_PRIVATE_H */ diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index 35d8e6087..1beb658bd 100644 --- a/src/backends/meta-monitor-manager.c +++ b/src/backends/meta-monitor-manager.c @@ -756,12 +756,18 @@ static void update_panel_orientation_managed (MetaMonitorManager *manager) { MetaOrientationManager *orientation_manager; + ClutterBackend *clutter_backend; + ClutterSeat *seat; gboolean panel_orientation_managed; + clutter_backend = meta_backend_get_clutter_backend (manager->backend); + seat = clutter_backend_get_default_seat (clutter_backend); + orientation_manager = meta_backend_get_orientation_manager (manager->backend); panel_orientation_managed = - meta_orientation_manager_has_accelerometer (orientation_manager); + (clutter_seat_get_touch_mode (seat) && + meta_orientation_manager_has_accelerometer (orientation_manager)); if (manager->panel_orientation_managed == panel_orientation_managed) return; @@ -3227,3 +3233,17 @@ meta_monitor_manager_get_panel_orientation_managed (MetaMonitorManager *manager) return manager->panel_orientation_managed; } + +void +meta_monitor_manager_post_init (MetaMonitorManager *manager) +{ + ClutterBackend *clutter_backend; + ClutterSeat *seat; + + clutter_backend = meta_backend_get_clutter_backend (manager->backend); + seat = clutter_backend_get_default_seat (clutter_backend); + + g_signal_connect_object (seat, "notify::touch-mode", + G_CALLBACK (update_panel_orientation_managed), manager, + G_CONNECT_SWAPPED); +}