Use a CSS provider and style context instead of the old theme support
This commit is contained in:
@ -55,7 +55,8 @@ typedef struct _EekGtkKeyboardPrivate
|
|||||||
{
|
{
|
||||||
EekRenderer *renderer;
|
EekRenderer *renderer;
|
||||||
EekKeyboard *keyboard;
|
EekKeyboard *keyboard;
|
||||||
EekTheme *theme;
|
GtkCssProvider *css_provider;
|
||||||
|
GtkStyleContext *scontext;
|
||||||
|
|
||||||
GdkEventSequence *sequence; // unowned reference
|
GdkEventSequence *sequence; // unowned reference
|
||||||
} EekGtkKeyboardPrivate;
|
} EekGtkKeyboardPrivate;
|
||||||
@ -109,12 +110,9 @@ eek_gtk_keyboard_real_draw (GtkWidget *self,
|
|||||||
gtk_widget_get_allocation (self, &allocation);
|
gtk_widget_get_allocation (self, &allocation);
|
||||||
|
|
||||||
if (!priv->renderer) {
|
if (!priv->renderer) {
|
||||||
PangoContext *pcontext;
|
PangoContext *pcontext = gtk_widget_get_pango_context (self);
|
||||||
|
|
||||||
pcontext = gtk_widget_get_pango_context (self);
|
priv->renderer = eek_renderer_new (priv->keyboard, pcontext, priv->scontext);
|
||||||
priv->renderer = eek_renderer_new (priv->keyboard, pcontext);
|
|
||||||
if (priv->theme)
|
|
||||||
eek_renderer_set_theme (priv->renderer, priv->theme);
|
|
||||||
|
|
||||||
eek_renderer_set_allocation_size (priv->renderer,
|
eek_renderer_set_allocation_size (priv->renderer,
|
||||||
allocation.width,
|
allocation.width,
|
||||||
@ -393,11 +391,6 @@ eek_gtk_keyboard_dispose (GObject *object)
|
|||||||
priv->keyboard = NULL;
|
priv->keyboard = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->theme) {
|
|
||||||
g_object_unref (priv->theme);
|
|
||||||
priv->theme = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (eek_gtk_keyboard_parent_class)->dispose (object);
|
G_OBJECT_CLASS (eek_gtk_keyboard_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -438,7 +431,20 @@ eek_gtk_keyboard_class_init (EekGtkKeyboardClass *klass)
|
|||||||
static void
|
static void
|
||||||
eek_gtk_keyboard_init (EekGtkKeyboard *self)
|
eek_gtk_keyboard_init (EekGtkKeyboard *self)
|
||||||
{
|
{
|
||||||
/* void */
|
EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
|
||||||
|
|
||||||
|
/* Create a default CSS provider and load a style sheet */
|
||||||
|
priv->css_provider = gtk_css_provider_new ();
|
||||||
|
gtk_css_provider_load_from_resource (priv->css_provider,
|
||||||
|
"/sm/puri/squeekboard/style.css");
|
||||||
|
|
||||||
|
/* Apply the style to the widget */
|
||||||
|
priv->scontext = gtk_widget_get_style_context (GTK_WIDGET(self));
|
||||||
|
gtk_style_context_add_class (priv->scontext, "keyboard");
|
||||||
|
gtk_style_context_add_provider (priv->scontext,
|
||||||
|
GTK_STYLE_PROVIDER(priv->css_provider),
|
||||||
|
GTK_STYLE_PROVIDER_PRIORITY_USER);
|
||||||
|
gtk_style_context_set_state (priv->scontext, GTK_STATE_FLAG_NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -622,14 +628,3 @@ on_symbol_index_changed (EekKeyboard *keyboard,
|
|||||||
|
|
||||||
gtk_widget_queue_draw (widget);
|
gtk_widget_queue_draw (widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
eek_gtk_keyboard_set_theme (EekGtkKeyboard *keyboard,
|
|
||||||
EekTheme *theme)
|
|
||||||
{
|
|
||||||
g_return_if_fail (EEK_IS_GTK_KEYBOARD(keyboard));
|
|
||||||
g_return_if_fail (EEK_IS_THEME(theme));
|
|
||||||
|
|
||||||
EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (keyboard);
|
|
||||||
priv->theme = g_object_ref (theme);
|
|
||||||
}
|
|
||||||
|
|||||||
@ -46,8 +46,6 @@ struct _EekGtkKeyboardClass
|
|||||||
|
|
||||||
GType eek_gtk_keyboard_get_type (void) G_GNUC_CONST;
|
GType eek_gtk_keyboard_get_type (void) G_GNUC_CONST;
|
||||||
GtkWidget *eek_gtk_keyboard_new (EekKeyboard *keyboard);
|
GtkWidget *eek_gtk_keyboard_new (EekKeyboard *keyboard);
|
||||||
void eek_gtk_keyboard_set_theme (EekGtkKeyboard *keyboard,
|
|
||||||
EekTheme *theme);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
#endif /* EEK_GTK_KEYBOARD_H */
|
#endif /* EEK_GTK_KEYBOARD_H */
|
||||||
|
|||||||
Reference in New Issue
Block a user