diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h
index 1b7efd261..7df72f716 100644
--- a/src/backends/meta-monitor-manager-private.h
+++ b/src/backends/meta-monitor-manager-private.h
@@ -129,6 +129,8 @@ struct _MetaMonitorManager
int persistent_timeout_id;
+ guint panel_orientation_managed : 1;
+
MetaMonitorConfigManager *config_manager;
GnomePnpIds *pnp_ids;
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index e2d16b7d0..bddc06808 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -67,6 +67,7 @@ enum
PROP_0,
PROP_BACKEND,
+ PROP_PANEL_ORIENTATION_MANAGED,
PROP_LAST
};
@@ -748,6 +749,28 @@ experimental_features_changed (MetaSettings *settings,
meta_settings_update_ui_scaling_factor (settings);
}
+static void
+update_panel_orientation_managed (MetaMonitorManager *manager)
+{
+ MetaOrientationManager *orientation_manager;
+ gboolean panel_orientation_managed;
+
+ orientation_manager = meta_backend_get_orientation_manager (manager->backend);
+
+ panel_orientation_managed =
+ meta_orientation_manager_has_accelerometer (orientation_manager);
+
+ if (manager->panel_orientation_managed == panel_orientation_managed)
+ return;
+
+ manager->panel_orientation_managed = panel_orientation_managed;
+ g_object_notify_by_pspec (G_OBJECT (manager),
+ obj_props[PROP_PANEL_ORIENTATION_MANAGED]);
+
+ meta_dbus_display_config_set_panel_orientation_managed (manager->display_config,
+ manager->panel_orientation_managed);
+}
+
void
meta_monitor_manager_setup (MetaMonitorManager *manager)
{
@@ -788,6 +811,11 @@ meta_monitor_manager_constructed (GObject *object)
G_CALLBACK (orientation_changed),
manager, 0);
+ g_signal_connect_object (meta_backend_get_orientation_manager (backend),
+ "notify::has-accelerometer",
+ G_CALLBACK (update_panel_orientation_managed), manager,
+ G_CONNECT_SWAPPED);
+
g_signal_connect_object (backend,
"lid-is-closed-changed",
G_CALLBACK (lid_is_closed_changed),
@@ -848,6 +876,7 @@ meta_monitor_manager_set_property (GObject *object,
case PROP_BACKEND:
manager->backend = g_value_get_object (value);
break;
+ case PROP_PANEL_ORIENTATION_MANAGED:
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -866,6 +895,9 @@ meta_monitor_manager_get_property (GObject *object,
case PROP_BACKEND:
g_value_set_object (value, manager->backend);
break;
+ case PROP_PANEL_ORIENTATION_MANAGED:
+ g_value_set_boolean (value, manager->panel_orientation_managed);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -925,6 +957,15 @@ meta_monitor_manager_class_init (MetaMonitorManagerClass *klass)
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS);
+
+ obj_props[PROP_PANEL_ORIENTATION_MANAGED] =
+ g_param_spec_boolean ("panel-orientation-managed",
+ "Panel orientation managed",
+ "Panel orientation is managed",
+ FALSE,
+ G_PARAM_READABLE |
+ G_PARAM_EXPLICIT_NOTIFY |
+ G_PARAM_STATIC_STRINGS);
g_object_class_install_properties (object_class, PROP_LAST, obj_props);
}
@@ -3175,3 +3216,11 @@ meta_monitor_manager_get_vendor_name (MetaMonitorManager *manager,
return gnome_pnp_ids_get_pnp_id (manager->pnp_ids, vendor);
}
+
+gboolean
+meta_monitor_manager_get_panel_orientation_managed (MetaMonitorManager *manager)
+{
+ g_return_val_if_fail (META_IS_MONITOR_MANAGER (manager), FALSE);
+
+ return manager->panel_orientation_managed;
+}
diff --git a/src/meta/meta-monitor-manager.h b/src/meta/meta-monitor-manager.h
index 033309cc8..ce57156be 100644
--- a/src/meta/meta-monitor-manager.h
+++ b/src/meta/meta-monitor-manager.h
@@ -62,4 +62,7 @@ MetaMonitorSwitchConfigType meta_monitor_manager_get_switch_config (MetaMonitorM
META_EXPORT
gint meta_monitor_manager_get_display_configuration_timeout (void);
+META_EXPORT
+gboolean meta_monitor_manager_get_panel_orientation_managed (MetaMonitorManager *manager);
+
#endif /* META_MONITOR_MANAGER_H */
diff --git a/src/org.gnome.Mutter.DisplayConfig.xml b/src/org.gnome.Mutter.DisplayConfig.xml
index ec04649fa..2826370c4 100644
--- a/src/org.gnome.Mutter.DisplayConfig.xml
+++ b/src/org.gnome.Mutter.DisplayConfig.xml
@@ -282,6 +282,14 @@
-->
+
+
+