[gnome-control-center] region: Don't show IBus sources in the system-wide input chooser
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] region: Don't show IBus sources in the system-wide input chooser
- Date: Tue, 6 Jan 2015 15:50:34 +0000 (UTC)
commit 1029d0c69ae0cc1255188f6ff6a8a5f6144fe573
Author: Rui Matos <tiagomatos gmail com>
Date: Wed Nov 26 17:49:37 2014 +0100
region: Don't show IBus sources in the system-wide input chooser
Since we can't export IBus sources through the localed API we
shouldn't even allow users to choose them.
This allows us to stop having to show an apologising dialog which
makes us look a bit bad and was using deprecated gtk+ API that we're
trying to get rid of. Instead, we show the same information up front,
in the input chooser.
https://bugzilla.gnome.org/show_bug.cgi?id=740986
panels/region/cc-input-chooser.c | 9 ++++++++-
panels/region/cc-input-chooser.h | 1 +
panels/region/cc-region-panel.c | 38 +++++---------------------------------
panels/region/input-chooser.ui | 13 +++++++++++++
4 files changed, 27 insertions(+), 34 deletions(-)
---
diff --git a/panels/region/cc-input-chooser.c b/panels/region/cc-input-chooser.c
index 1b735e2..e559e6e 100644
--- a/panels/region/cc-input-chooser.c
+++ b/panels/region/cc-input-chooser.c
@@ -67,6 +67,8 @@ typedef struct {
gboolean showing_extra;
guint filter_timeout_id;
gchar **filter_words;
+
+ gboolean is_login;
} CcInputChooserPrivate;
#define GET_PRIVATE(chooser) ((CcInputChooserPrivate *) g_object_get_data (G_OBJECT (chooser), "private"))
@@ -882,7 +884,7 @@ get_ibus_locale_infos (GtkWidget *chooser)
const gchar *engine_id;
IBusEngineDesc *engine;
- if (!priv->ibus_engines)
+ if (!priv->ibus_engines || priv->is_login)
return;
g_hash_table_iter_init (&iter, priv->ibus_engines);
@@ -1116,6 +1118,7 @@ cc_input_chooser_private_free (gpointer data)
GtkWidget *
cc_input_chooser_new (GtkWindow *main_window,
+ gboolean is_login,
GnomeXkbInfo *xkb_info,
GHashTable *ibus_engines)
{
@@ -1138,6 +1141,7 @@ cc_input_chooser_new (GtkWindow *main_window,
g_object_set_data_full (G_OBJECT (chooser), "private", priv, cc_input_chooser_private_free);
g_object_set_data_full (G_OBJECT (chooser), "builder", builder, g_object_unref);
+ priv->is_login = is_login;
priv->xkb_info = xkb_info;
priv->ibus_engines = ibus_engines;
@@ -1159,6 +1163,9 @@ cc_input_chooser_new (GtkWindow *main_window,
g_signal_connect_swapped (priv->filter_entry, "search-changed", G_CALLBACK (filter_changed), chooser);
+ if (priv->is_login)
+ gtk_widget_show (WID ("login-label"));
+
get_locale_infos (chooser);
#ifdef HAVE_IBUS
get_ibus_locale_infos (chooser);
diff --git a/panels/region/cc-input-chooser.h b/panels/region/cc-input-chooser.h
index fd6ac97..99f7cfe 100644
--- a/panels/region/cc-input-chooser.h
+++ b/panels/region/cc-input-chooser.h
@@ -27,6 +27,7 @@
G_BEGIN_DECLS
GtkWidget *cc_input_chooser_new (GtkWindow *parent,
+ gboolean is_login,
GnomeXkbInfo *xkb_info,
GHashTable *ibus_engines);
void cc_input_chooser_set_ibus_engines (GtkWidget *chooser,
diff --git a/panels/region/cc-region-panel.c b/panels/region/cc-region-panel.c
index e756dd5..4c20f6e 100644
--- a/panels/region/cc-region-panel.c
+++ b/panels/region/cc-region-panel.c
@@ -1076,31 +1076,6 @@ update_input (CcRegionPanel *self)
}
}
-static void
-apologize_for_no_ibus_login (CcRegionPanel *self)
-{
- GtkWidget *dialog;
- GtkWidget *toplevel;
- GtkWidget *image;
-
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (toplevel),
- GTK_DIALOG_MODAL | GTK_DIALOG_USE_HEADER_BAR,
- GTK_MESSAGE_OTHER,
- GTK_BUTTONS_OK,
- _("Sorry"));
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- "%s", _("Input methods can't be used on the login
screen"));
- image = gtk_image_new_from_icon_name ("face-sad-symbolic",
- GTK_ICON_SIZE_DIALOG);
- gtk_widget_show (image);
- gtk_message_dialog_set_image (GTK_MESSAGE_DIALOG (dialog), image);
-
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
-}
-
static gboolean
input_source_already_added (CcRegionPanel *self,
const gchar *id)
@@ -1124,7 +1099,6 @@ static void
input_response (GtkWidget *chooser, gint response_id, gpointer data)
{
CcRegionPanel *self = data;
- CcRegionPanelPrivate *priv = self->priv;
gchar *type;
gchar *id;
gchar *name;
@@ -1144,13 +1118,10 @@ input_response (GtkWidget *chooser, gint response_id, gpointer data)
type = INPUT_SOURCE_TYPE_XKB;
}
- if (priv->login && g_str_equal (type, INPUT_SOURCE_TYPE_IBUS)) {
- apologize_for_no_ibus_login (self);
- } else {
- add_input_row (self, type, id, name, app_info);
- update_buttons (self);
- update_input (self);
- }
+ add_input_row (self, type, id, name, app_info);
+ update_buttons (self);
+ update_input (self);
+
g_free (id);
g_free (name);
g_clear_object (&app_info);
@@ -1169,6 +1140,7 @@ show_input_chooser (CcRegionPanel *self)
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
chooser = cc_input_chooser_new (GTK_WINDOW (toplevel),
+ priv->login,
priv->xkb_info,
#ifdef HAVE_IBUS
priv->ibus_engines
diff --git a/panels/region/input-chooser.ui b/panels/region/input-chooser.ui
index e93d483..220fbfe 100644
--- a/panels/region/input-chooser.ui
+++ b/panels/region/input-chooser.ui
@@ -69,6 +69,19 @@
<property name="margin-bottom">6</property>
</object>
</child>
+ <child>
+ <object class="GtkLabel" id="login-label">
+ <property name="visible">False</property>
+ <property name="wrap">True</property>
+ <property name="label" translatable="yes">Input methods can't be used on the login
screen</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-bottom">6</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
</object>
</child>
<action-widgets>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]