Merge remote-tracking branch 'upstream/master' into scaling
This commit is contained in:
@ -100,6 +100,9 @@ eekboard_context_service_dispose (GObject *object)
|
||||
static void
|
||||
settings_get_layout(GSettings *settings, char **type, char **layout)
|
||||
{
|
||||
if (!settings) {
|
||||
return;
|
||||
}
|
||||
GVariant *inputs = g_settings_get_value(settings, "sources");
|
||||
if (g_variant_n_children(inputs) == 0) {
|
||||
g_warning("No system layout present");
|
||||
@ -238,14 +241,29 @@ static void
|
||||
eekboard_context_service_init (EekboardContextService *self)
|
||||
{
|
||||
self->priv = EEKBOARD_CONTEXT_SERVICE_GET_PRIVATE(self);
|
||||
|
||||
self->priv->settings = g_settings_new ("org.gnome.desktop.input-sources");
|
||||
gulong conn_id = g_signal_connect(self->priv->settings, "change-event",
|
||||
G_CALLBACK(settings_handle_layout_changed),
|
||||
self);
|
||||
if (conn_id == 0) {
|
||||
g_warning ("Could not connect to gsettings updates, layout"
|
||||
" changing unavailable");
|
||||
const char *schema_name = "org.gnome.desktop.input-sources";
|
||||
GSettingsSchemaSource *ssrc = g_settings_schema_source_get_default();
|
||||
if (ssrc) {
|
||||
GSettingsSchema *schema = g_settings_schema_source_lookup(ssrc,
|
||||
schema_name,
|
||||
TRUE);
|
||||
if (schema) {
|
||||
// Not referencing the found schema directly,
|
||||
// because it's not clear how...
|
||||
self->priv->settings = g_settings_new (schema_name);
|
||||
gulong conn_id = g_signal_connect(self->priv->settings, "change-event",
|
||||
G_CALLBACK(settings_handle_layout_changed),
|
||||
self);
|
||||
if (conn_id == 0) {
|
||||
g_warning ("Could not connect to gsettings updates, "
|
||||
"automatic layout changing unavailable");
|
||||
}
|
||||
} else {
|
||||
g_warning("Gsettings schema %s is not installed on the system. "
|
||||
"Layout switching unavailable", schema_name);
|
||||
}
|
||||
} else {
|
||||
g_warning("No gsettings schemas installed. Layout switching unavailable.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user