[libgnomekbd] added gkbd_configuration start/stop_listen functions
- From: Sergey V. Udaltsov <svu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgnomekbd] added gkbd_configuration start/stop_listen functions
- Date: Tue, 4 Jan 2011 21:59:40 +0000 (UTC)
commit 642753b78ba00be0e51722ea234ceaeaedeeb148
Author: Sergey V. Udaltsov <svu gnome org>
Date: Tue Jan 4 21:59:12 2011 +0000
added gkbd_configuration start/stop_listen functions
Again, for js
libgnomekbd/gkbd-configuration.c | 63 ++++++++++++++++++++++++++++---------
libgnomekbd/gkbd-configuration.h | 6 +++
2 files changed, 53 insertions(+), 16 deletions(-)
---
diff --git a/libgnomekbd/gkbd-configuration.c b/libgnomekbd/gkbd-configuration.c
index a592683..55a350b 100644
--- a/libgnomekbd/gkbd-configuration.c
+++ b/libgnomekbd/gkbd-configuration.c
@@ -109,10 +109,8 @@ gkbd_configuration_load_group_names (GkbdConfiguration * configuration,
xklrec->layouts,
(const char **)
xklrec->variants,
- &priv->
- short_group_names,
- &priv->
- full_group_names))
+ &priv->short_group_names,
+ &priv->full_group_names))
{
/* We just populate no short names (remain NULL) -
* full names are going to be used anyway */
@@ -358,8 +356,8 @@ gkbd_configuration_get_image_filename (GkbdConfiguration * configuration,
{
if (!configuration->priv->ind_cfg.show_flags)
return NULL;
- return (gchar *) g_slist_nth_data (configuration->priv->ind_cfg.
- image_filenames, group);
+ return (gchar *) g_slist_nth_data (configuration->priv->
+ ind_cfg.image_filenames, group);
}
/**
@@ -385,8 +383,8 @@ gkbd_configuration_get_current_tooltip (GkbdConfiguration * configuration)
return NULL;
return g_strdup_printf (configuration->priv->tooltips_format,
- configuration->priv->
- full_group_names[state->group]);
+ configuration->
+ priv->full_group_names[state->group]);
}
gboolean
@@ -407,8 +405,8 @@ gkbd_configuration_extract_layout_name (GkbdConfiguration * configuration,
if (xkl_engine_get_features (engine) &
XKLF_MULTIPLE_LAYOUTS_SUPPORTED) {
char *full_layout_name =
- configuration->priv->kbd_cfg.
- layouts_variants[group];
+ configuration->priv->
+ kbd_cfg.layouts_variants[group];
char *variant_name;
if (!gkbd_keyboard_config_split_items
(full_layout_name, &layout_name,
@@ -519,10 +517,10 @@ gkbd_configuration_load_images (GkbdConfiguration * configuration)
GSList *image_filename, *images;
images = NULL;
- gkbd_indicator_config_load_image_filenames (&configuration->
- priv->ind_cfg,
- &configuration->
- priv->kbd_cfg);
+ gkbd_indicator_config_load_image_filenames (&configuration->priv->
+ ind_cfg,
+ &configuration->priv->
+ kbd_cfg);
if (!configuration->priv->ind_cfg.show_flags)
return NULL;
@@ -558,8 +556,8 @@ gkbd_configuration_free_images (GkbdConfiguration * configuration,
GdkPixbuf *pi;
GSList *img_node;
- gkbd_indicator_config_free_image_filenames (&configuration->
- priv->ind_cfg);
+ gkbd_indicator_config_free_image_filenames (&configuration->priv->
+ ind_cfg);
while ((img_node = images) != NULL) {
pi = GDK_PIXBUF (img_node->data);
@@ -617,3 +615,36 @@ gkbd_configuration_if_any_object_exists (GkbdConfiguration * configuration)
&& (g_slist_length (configuration->priv->widget_instances) !=
0);
}
+
+static GdkFilterReturn
+gkbd_configuration_filter_x_evt (GdkXEvent * xev, GdkEvent * event,
+ GkbdConfiguration * configuration)
+{
+ xkl_engine_filter_events (configuration->priv->engine,
+ (XEvent *) xev);
+ return GDK_FILTER_CONTINUE;
+}
+
+void
+gkbd_configuration_start_listen (GkbdConfiguration * configuration)
+{
+ gdk_window_add_filter (NULL, (GdkFilterFunc)
+ gkbd_configuration_filter_x_evt,
+ configuration);
+ gdk_window_add_filter (gdk_get_default_root_window (),
+ (GdkFilterFunc)
+ gkbd_configuration_filter_x_evt,
+ configuration);
+}
+
+void
+gkbd_configuration_stop_listen (GkbdConfiguration * configuration)
+{
+ gdk_window_remove_filter (NULL, (GdkFilterFunc)
+ gkbd_configuration_filter_x_evt,
+ configuration);
+ gdk_window_remove_filter (gdk_get_default_root_window (),
+ (GdkFilterFunc)
+ gkbd_configuration_filter_x_evt,
+ configuration);
+}
diff --git a/libgnomekbd/gkbd-configuration.h b/libgnomekbd/gkbd-configuration.h
index f6c573a..6271889 100644
--- a/libgnomekbd/gkbd-configuration.h
+++ b/libgnomekbd/gkbd-configuration.h
@@ -87,6 +87,12 @@ extern void gkbd_configuration_lock_group (GkbdConfiguration *
extern guint gkbd_configuration_get_current_group (GkbdConfiguration *
configuration);
+extern void gkbd_configuration_start_listen (GkbdConfiguration *
+ configuration);
+
+extern void gkbd_configuration_stop_listen (GkbdConfiguration *
+ configuration);
+
extern GkbdIndicatorConfig
* gkbd_configuration_get_indicator_config (GkbdConfiguration *
configuration);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]