Compare commits

...

No commits in common. "c8" and "c8s" have entirely different histories.
c8 ... c8s

9 changed files with 501 additions and 2 deletions

23
.gitignore vendored
View File

@ -1 +1,22 @@
SOURCES/libgnomekbd-3.26.0.tar.xz
libgnomekbd-2.31.5.tar.bz2
/libgnomekbd-2.32.0.tar.bz2
/libgnomekbd-2.91.1.tar.bz2
/libgnomekbd-2.91.2.tar.bz2
/libgnomekbd-2.91.3.1.tar.bz2
/libgnomekbd-2.91.4.tar.bz2
/libgnomekbd-2.91.5.tar.bz2
/libgnomekbd-2.91.90.tar.bz2
/libgnomekbd-2.91.91.tar.bz2
/libgnomekbd-2.91.92.tar.bz2
/libgnomekbd-3.0.0.tar.bz2
/libgnomekbd-3.1.92.tar.xz
/libgnomekbd-3.2.0.tar.xz
/libgnomekbd-3.3.90.tar.xz
/libgnomekbd-3.4.0.1.tar.xz
/libgnomekbd-3.4.0.2.tar.xz
/libgnomekbd-3.5.2.tar.xz
/libgnomekbd-3.5.90.tar.xz
/libgnomekbd-3.6.0.tar.xz
/libgnomekbd-3.21.92.tar.xz
/libgnomekbd-3.22.0.1.tar.xz
/libgnomekbd-3.26.0.tar.xz

View File

@ -1 +0,0 @@
920a8d41dc932d67836f464bcf4cfa49d292f06f SOURCES/libgnomekbd-3.26.0.tar.xz

View File

@ -0,0 +1,34 @@
From 31c922e6eea3047b784a1f95132d044f3dab58c9 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess@hadess.net>
Date: Thu, 3 Feb 2011 14:54:07 +0000
Subject: [PATCH] Don't use different layouts per window
Using different layouts per-window is confusing for new users. Both
Windows and MacOS X default to using the same layout globally, and
just like them, we offer a graphical way to change the layout (through
a system icon).
Once the user gains profiency in switching layouts, we can offer them
a more complicated way, using separate layouts for each window.
https://bugzilla.gnome.org/show_bug.cgi?id=641351
---
...org.gnome.libgnomekbd.desktop.gschema.xml.in.in | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/libgnomekbd/org.gnome.libgnomekbd.desktop.gschema.xml.in.in b/libgnomekbd/org.gnome.libgnomekbd.desktop.gschema.xml.in.in
index 7be778d..6f42fd7 100644
--- a/libgnomekbd/org.gnome.libgnomekbd.desktop.gschema.xml.in.in
+++ b/libgnomekbd/org.gnome.libgnomekbd.desktop.gschema.xml.in.in
@@ -7,7 +7,7 @@
<_description>Default group, assigned on window creation</_description>
</key>
<key name="group-per-window" type="b">
- <default>true</default>
+ <default>false</default>
<_summary>Keep and manage separate group per window</_summary>
<_description>Keep and manage separate group per window</_description>
</key>
--
1.7.4

View File

@ -0,0 +1,46 @@
From b922ecd4777d80524e91644c98c46f6ed3577f1f Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Tue, 5 Apr 2011 11:06:13 -0400
Subject: [PATCH] Status icon: fix size problems
There are bugs in both the notification area and in GtkStatusIcon
when it comes to size allocation. This patch tries to work around
them in a way that makes the keyboard indicator come up with a
reasonable size initially, and not resize when clicked.
https://bugzilla.gnome.org/show_bug.cgi?id=642703
---
libgnomekbd/gkbd-status.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/libgnomekbd/gkbd-status.c b/libgnomekbd/gkbd-status.c
index 276fe54..2f5b41f 100644
--- a/libgnomekbd/gkbd-status.c
+++ b/libgnomekbd/gkbd-status.c
@@ -393,6 +393,12 @@ void
gkbd_status_reinit_ui (GkbdStatus * gki)
{
gkbd_status_set_current_page (gki);
+ /* To work around combined bugs in notification-area
+ * and GtkStatusIcon, reshow the icon here, to ensure
+ * size changes are picked up.
+ */
+ gtk_status_icon_set_visible (GTK_STATUS_ICON (gki), FALSE);
+ gtk_status_icon_set_visible (GTK_STATUS_ICON (gki), TRUE);
}
/* Should be called once for all widgets */
@@ -509,6 +515,11 @@ static void
gkbd_status_size_changed (GkbdStatus * gki, gint size)
{
xkl_debug (150, "Size changed to %d\n", size);
+ /* Ignore the initial size 200 that we get before
+ * we are embedded
+ */
+ if (!gtk_status_icon_is_embedded (GTK_STATUS_ICON (gki)))
+ return;
if (globals.current_height != size) {
globals.current_height = size;
globals.current_width = size * 3 / 2;
--
1.7.4.2

View File

@ -0,0 +1,44 @@
diff --git a/libgnomekbd/gkbd-keyboard-config.c b/libgnomekbd/gkbd-keyboard-config.c
index bbbc840..fa562f9 100644
--- a/libgnomekbd/gkbd-keyboard-config.c
+++ b/libgnomekbd/gkbd-keyboard-config.c
@@ -328,12 +328,13 @@ gkbd_keyboard_config_load_params (GkbdKeyboardConfig * kbd_config,
gchar *pc;
pc = g_settings_get_string (kbd_config->settings, param_names[0]);
- if (pc == NULL) {
+
+ if (pc == NULL || pc[0] == '\0') {
gkbd_keyboard_config_model_set (kbd_config, NULL);
} else {
gkbd_keyboard_config_model_set (kbd_config, pc);
- g_free (pc);
}
+ g_free (pc);
xkl_debug (150, "Loaded Kbd model: [%s]\n",
kbd_config->model ? kbd_config->model : "(null)");
@@ -342,10 +343,20 @@ gkbd_keyboard_config_load_params (GkbdKeyboardConfig * kbd_config,
kbd_config->layouts_variants =
g_settings_get_strv (kbd_config->settings, param_names[1]);
+ if (kbd_config->layouts_variants != NULL && kbd_config->layouts_variants[0] == NULL) {
+ g_strfreev (kbd_config->layouts_variants);
+ kbd_config->layouts_variants = NULL;
+ }
+
g_strfreev (kbd_config->options);
kbd_config->options =
g_settings_get_strv (kbd_config->settings, param_names[2]);
+
+ if (kbd_config->options != NULL && kbd_config->options[0] == NULL) {
+ g_strfreev (kbd_config->options);
+ kbd_config->options = NULL;
+ }
}
static void
--
1.7.3.5

7
gating.yaml Normal file
View File

@ -0,0 +1,7 @@
--- !Policy
product_versions:
- rhel-8
decision_context: osci_compose_gate
rules:
# - !PassingTestCaseRule {test_case_name: desktop-qe.desktop-ci.tier1-gating.functional}
- !PassingTestCaseRule {test_case_name: manual.sst_desktop.libgnomekbd.sanity}

347
libgnomekbd-colors.patch Normal file
View File

@ -0,0 +1,347 @@
From 0b452d4735c6ef35299e24ffb3faa0cabc5559c3 Mon Sep 17 00:00:00 2001
From: Vincent Untz <vuntz@gnome.org>
Date: Mon, 4 Apr 2011 19:32:56 +0200
Subject: [PATCH] Use the right color for text in GkbdStatus
This is really a big hack: instead of getting the information about how
to draw the font from a GTK+ style, we get it from the GtkStyleContext
from the tray icon widget embedded in the GtkStatusIcon.
To make this happen, we have to fake the GtkStatusIconPrivate structure,
and we rely on the fact that the tray icon widget is the first element
in this structure.
https://bugzilla.gnome.org/show_bug.cgi?id=642703
---
libgnomekbd/gkbd-indicator-config.c | 98 ++++++++++++++++++-----------------
libgnomekbd/gkbd-indicator-config.h | 10 ++++
libgnomekbd/gkbd-status.c | 65 ++++++++++++++---------
3 files changed, 100 insertions(+), 73 deletions(-)
diff --git a/libgnomekbd/gkbd-indicator-config.c b/libgnomekbd/gkbd-indicator-config.c
index fdf008b..c678643 100644
--- a/libgnomekbd/gkbd-indicator-config.c
+++ b/libgnomekbd/gkbd-indicator-config.c
@@ -37,7 +37,6 @@
/**
* GkbdIndicatorConfig
*/
-#define GTK_STYLE_PATH "*PanelWidget*"
const gchar GKBD_INDICATOR_CONFIG_KEY_SHOW_FLAGS[] = "show-flags";
const gchar GKBD_INDICATOR_CONFIG_KEY_ENABLED_PLUGINS[] =
@@ -65,26 +64,8 @@ gkbd_indicator_config_load_font (GkbdIndicatorConfig * ind_config)
g_settings_get_int (ind_config->settings,
GKBD_INDICATOR_CONFIG_KEY_FONT_SIZE);
- if (ind_config->font_family == NULL ||
- ind_config->font_family[0] == '\0') {
- PangoFontDescription *fd = NULL;
- GtkStyle *style =
- gtk_rc_get_style_by_paths (gtk_settings_get_default (),
- GTK_STYLE_PATH,
- GTK_STYLE_PATH,
- GTK_TYPE_LABEL);
- if (style != NULL)
- fd = style->font_desc;
- if (fd != NULL) {
- ind_config->font_family =
- g_strdup (pango_font_description_get_family
- (fd));
- ind_config->font_size =
- pango_font_description_get_size (fd) /
- PANGO_SCALE;
- }
- }
- xkl_debug (150, "font: [%s], size %d\n", ind_config->font_family,
+ xkl_debug (150, "font: [%s], size %d\n",
+ ind_config->font_family ? ind_config->font_family : "(null)",
ind_config->font_size);
}
@@ -96,38 +77,61 @@ gkbd_indicator_config_load_colors (GkbdIndicatorConfig * ind_config)
g_settings_get_string (ind_config->settings,
GKBD_INDICATOR_CONFIG_KEY_FOREGROUND_COLOR);
- if (ind_config->foreground_color == NULL ||
- ind_config->foreground_color[0] == '\0') {
- GtkStyle *style =
- gtk_rc_get_style_by_paths (gtk_settings_get_default (),
- GTK_STYLE_PATH,
- GTK_STYLE_PATH,
- GTK_TYPE_LABEL);
- if (style != NULL) {
- ind_config->foreground_color =
- g_strdup_printf ("%g %g %g", ((double)
- style->fg
- [GTK_STATE_NORMAL].
- red)
- / 0x10000, ((double)
- style->fg
- [GTK_STATE_NORMAL].
- green)
- / 0x10000, ((double)
- style->fg
- [GTK_STATE_NORMAL].
- blue)
- / 0x10000);
- }
-
- }
-
ind_config->background_color =
g_settings_get_string (ind_config->settings,
GKBD_INDICATOR_CONFIG_KEY_BACKGROUND_COLOR);
}
void
+gkbd_indicator_config_get_font_for_widget (GkbdIndicatorConfig * ind_config,
+ GtkWidget * widget,
+ gchar ** font_family,
+ int * font_size)
+{
+ GtkStyleContext *context;
+ const PangoFontDescription *fd = NULL;
+
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+
+ if (ind_config->font_family != NULL &&
+ ind_config->font_family[0] != '\0') {
+ if (font_family)
+ *font_family = g_strdup (ind_config->font_family);
+ if (font_size)
+ *font_size = ind_config->font_size;
+
+ return;
+ }
+
+ context = gtk_widget_get_style_context (widget);
+ fd = gtk_style_context_get_font (context, GTK_STATE_FLAG_NORMAL);
+
+ if (font_family)
+ *font_family = g_strdup (pango_font_description_get_family (fd));
+ if (font_size)
+ *font_size = pango_font_description_get_size (fd) / PANGO_SCALE;
+}
+
+gchar *
+gkbd_indicator_config_get_fg_color_for_widget (GkbdIndicatorConfig * ind_config,
+ GtkWidget * widget)
+{
+ GtkStyleContext *context;
+ GdkRGBA rgba;
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+
+ if (ind_config->foreground_color != NULL &&
+ ind_config->foreground_color[0] != '\0')
+ return g_strdup (ind_config->foreground_color);
+
+ context = gtk_widget_get_style_context (widget);
+ gtk_style_context_get_color (context, GTK_STATE_FLAG_NORMAL, &rgba);
+
+ return g_strdup_printf ("%g %g %g", rgba.red, rgba.green, rgba.blue);
+}
+
+void
gkbd_indicator_config_refresh_style (GkbdIndicatorConfig * ind_config)
{
g_free (ind_config->font_family);
diff --git a/libgnomekbd/gkbd-indicator-config.h b/libgnomekbd/gkbd-indicator-config.h
index 2638895..9b9d935 100644
--- a/libgnomekbd/gkbd-indicator-config.h
+++ b/libgnomekbd/gkbd-indicator-config.h
@@ -62,6 +62,16 @@ extern void gkbd_indicator_config_load (GkbdIndicatorConfig
extern void gkbd_indicator_config_save (GkbdIndicatorConfig *
applet_config);
+extern void
+gkbd_indicator_config_get_font_for_widget (GkbdIndicatorConfig * ind_config,
+ GtkWidget * widget,
+ gchar ** font_family,
+ int * font_size);
+
+extern gchar *
+gkbd_indicator_config_get_fg_color_for_widget (GkbdIndicatorConfig * ind_config,
+ GtkWidget * widget);
+
extern void gkbd_indicator_config_refresh_style (GkbdIndicatorConfig *
applet_config);
diff --git a/libgnomekbd/gkbd-status.c b/libgnomekbd/gkbd-status.c
index 5785e4c..276fe54 100644
--- a/libgnomekbd/gkbd-status.c
+++ b/libgnomekbd/gkbd-status.c
@@ -59,22 +59,26 @@ static gki_globals globals;
G_DEFINE_TYPE (GkbdStatus, gkbd_status, GTK_TYPE_STATUS_ICON)
+typedef struct {
+ GtkWidget *tray_icon;
+} GkbdStatusPrivHack;
+
static void
gkbd_status_global_init (void);
static void
gkbd_status_global_term (void);
static GdkPixbuf *
-gkbd_status_prepare_drawing (int group);
+gkbd_status_prepare_drawing (GkbdStatus * gki, int group);
static void
gkbd_status_set_current_page_for_group (GkbdStatus * gki, int group);
static void
gkbd_status_set_current_page (GkbdStatus * gki);
static void
-gkbd_status_reinit_globals (void);
+gkbd_status_reinit_globals (GkbdStatus * gki);
static void
gkbd_status_cleanup_icons (void);
static void
-gkbd_status_fill_icons (void);
+gkbd_status_fill_icons (GkbdStatus * gki);
static void
gkbd_status_set_tooltips (GkbdStatus * gki, const char *str);
@@ -97,8 +101,8 @@ gkbd_status_cleanup_icons ()
}
}
-void
-gkbd_status_fill_icons ()
+static void
+gkbd_status_fill_icons (GkbdStatus * gki)
{
int grp;
int total_groups =
@@ -106,7 +110,7 @@ gkbd_status_fill_icons ()
(globals.config));
for (grp = 0; grp < total_groups; grp++) {
- GdkPixbuf *page = gkbd_status_prepare_drawing (grp);
+ GdkPixbuf *page = gkbd_status_prepare_drawing (gki, grp);
globals.icons = g_slist_append (globals.icons, page);
}
}
@@ -119,9 +123,12 @@ gkbd_status_activate (GkbdStatus * gki)
}
static void
-gkbd_status_render_cairo (cairo_t * cr, int group)
+gkbd_status_render_cairo (GkbdStatusPrivHack * gkh, cairo_t * cr, int group)
{
double r, g, b;
+ GdkColor *fg_color;
+ gchar *font_family;
+ int font_size;
PangoFontDescription *pfd;
PangoContext *pcc;
PangoLayout *pl;
@@ -146,28 +153,30 @@ gkbd_status_render_cairo (cairo_t * cr, int group)
}
}
- if (ind_cfg->foreground_color != NULL &&
- ind_cfg->foreground_color[0] != 0) {
- if (sscanf
- (ind_cfg->foreground_color, "%lg %lg %lg", &r,
- &g, &b) == 3) {
- cairo_set_source_rgb (cr, r, g, b);
- }
- }
+ g_object_get (gkh->tray_icon, "fg-color", &fg_color, NULL);
+ cairo_set_source_rgb (cr, fg_color->red, fg_color->green, fg_color->blue);
+ gdk_color_free (fg_color);
+
+ gkbd_indicator_config_get_font_for_widget (ind_cfg,
+ gkh->tray_icon,
+ &font_family,
+ &font_size);
- if (ind_cfg->font_family != NULL && ind_cfg->font_family[0] != 0) {
- cairo_select_font_face (cr, ind_cfg->font_family,
+ if (font_family != NULL && font_family[0] != 0) {
+ cairo_select_font_face (cr, font_family,
CAIRO_FONT_SLANT_NORMAL,
CAIRO_FONT_WEIGHT_NORMAL);
}
pfd = pango_font_description_new ();
- pango_font_description_set_family (pfd, ind_cfg->font_family);
+ pango_font_description_set_family (pfd, font_family);
pango_font_description_set_style (pfd, PANGO_STYLE_NORMAL);
pango_font_description_set_weight (pfd, PANGO_WEIGHT_NORMAL);
pango_font_description_set_size (pfd,
ind_cfg->font_size * PANGO_SCALE);
+ g_free (font_family);
+
pcc = pango_cairo_create_context (cr);
fo = cairo_font_options_copy (gdk_screen_get_font_options
@@ -261,7 +270,7 @@ convert_bgra_to_rgba (guint8 const *src, guint8 * dst, int width,
}
static GdkPixbuf *
-gkbd_status_prepare_drawing (int group)
+gkbd_status_prepare_drawing (GkbdStatus * gki, int group)
{
GError *gerror = NULL;
char *image_filename;
@@ -321,7 +330,8 @@ gkbd_status_prepare_drawing (int group)
globals.current_height);
unsigned char *cairo_data;
guchar *pixbuf_data;
- gkbd_status_render_cairo (cairo_create (cs), group);
+ gkbd_status_render_cairo ((GkbdStatusPrivHack *) GTK_STATUS_ICON (gki)->priv,
+ cairo_create (cs), group);
cairo_data = cairo_image_surface_get_data (cs);
#if 0
char pngfilename[20];
@@ -372,11 +382,11 @@ gkbd_status_update_tooltips (GkbdStatus * gki)
}
}
-void
-gkbd_status_reinit_globals ()
+static void
+gkbd_status_reinit_globals (GkbdStatus * gki)
{
gkbd_status_cleanup_icons ();
- gkbd_status_fill_icons ();
+ gkbd_status_fill_icons (gki);
}
void
@@ -389,8 +399,11 @@ gkbd_status_reinit_ui (GkbdStatus * gki)
static void
gkbd_status_cfg_callback (GkbdConfiguration * configuration)
{
+ GSList *objects;
xkl_debug (150, "Config changed: reinit ui\n");
- gkbd_status_reinit_globals ();
+ objects = gkbd_configuration_get_all_objects (configuration);
+ if (objects)
+ gkbd_status_reinit_globals (objects->data);
ForAllObjects (configuration) {
gkbd_status_reinit_ui (GKBD_STATUS (gki));
} NextObject ()
@@ -499,7 +512,7 @@ gkbd_status_size_changed (GkbdStatus * gki, gint size)
if (globals.current_height != size) {
globals.current_height = size;
globals.current_width = size * 3 / 2;
- gkbd_status_reinit_globals ();
+ gkbd_status_reinit_globals (gki);
gkbd_status_reinit_ui (gki);
}
}
@@ -511,7 +524,7 @@ gkbd_status_theme_changed (GtkSettings * settings, GParamSpec * pspec,
xkl_debug (150, "Theme changed\n");
gkbd_indicator_config_refresh_style
(gkbd_configuration_get_indicator_config (globals.config));
- gkbd_status_reinit_globals ();
+ gkbd_status_reinit_globals (gki);
gkbd_status_reinit_ui (gki);
}
--
1.7.4.1

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (libgnomekbd-3.26.0.tar.xz) = dc3ee91468e570d038bc91c4458ddb49dc097639c671815eecc4308efea85e29c1121cfd959e62f970a2e8112f818296802be804e99b96ee89fd5de8136645d9