[gedit] Use a css provider to set the error style in the entry popup.
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit] Use a css provider to set the error style in the entry popup.
- Date: Thu, 5 May 2011 14:57:18 +0000 (UTC)
commit 361135ec3c7fa7f27cebfa18f899818c0d5268c5
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Thu May 5 16:56:55 2011 +0200
Use a css provider to set the error style in the entry popup.
gedit/gedit-view-frame.c | 60 +++++++++++++++++++++++-----------------------
gedit/gedit-view-frame.h | 11 +++++---
2 files changed, 37 insertions(+), 34 deletions(-)
---
diff --git a/gedit/gedit-view-frame.c b/gedit/gedit-view-frame.c
index 0a573cf..5826010 100644
--- a/gedit/gedit-view-frame.c
+++ b/gedit/gedit-view-frame.c
@@ -74,6 +74,7 @@ struct _GeditViewFramePrivate
GtkWidget *slider;
GtkWidget *search_widget;
GtkWidget *search_entry;
+ GtkCssProvider *search_css;
guint typeselect_flush_timeout;
glong view_scroll_event_id;
@@ -84,6 +85,11 @@ struct _GeditViewFramePrivate
guint wrap_around : 1;
};
+struct _GeditViewFrameClassPrivate
+{
+ GtkCssProvider *search_css;
+};
+
enum
{
PROP_0,
@@ -100,7 +106,8 @@ typedef enum
/* The search entry completion is shared among all the views */
GtkListStore *search_completion_model = NULL;
-G_DEFINE_TYPE (GeditViewFrame, gedit_view_frame, GTK_TYPE_VBOX)
+G_DEFINE_TYPE_WITH_CODE (GeditViewFrame, gedit_view_frame, GTK_TYPE_VBOX,
+ g_type_add_class_private (g_define_type_id, sizeof (GeditViewFrameClassPrivate)))
static void
gedit_view_frame_finalize (GObject *object)
@@ -283,40 +290,25 @@ search_entry_flush_timeout (GeditViewFrame *frame)
}
static void
-set_entry_background (GtkWidget *entry,
+set_entry_background (GeditViewFrame *frame,
+ GtkWidget *entry,
GeditSearchEntryBgColor col)
{
- GdkRGBA *fg, *bg;
+ GtkStyleContext *context;
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (entry));
if (col == GEDIT_SEARCH_ENTRY_NOT_FOUND)
{
- GdkRGBA error_default_fg = { 0.65, 0.15, 0.15, 1.0 };
- GdkRGBA error_default_bg = { 0.93, 0.21, 0.21, 1.0 };
- GdkRGBA sym_bg, sym_fg;
- GtkStyleContext *context;
-
- context = gtk_widget_get_style_context (entry);
-
- if (gtk_style_context_lookup_color (context, "error_fg_color", &sym_fg) &&
- gtk_style_context_lookup_color (context, "error_bg_color", &sym_bg))
- {
- fg = &sym_fg;
- bg = &sym_bg;
- }
- else
- {
- fg = &error_default_fg;
- bg = &error_default_bg;
- }
+ gtk_style_context_add_provider (context,
+ GTK_STYLE_PROVIDER (GEDIT_VIEW_FRAME_GET_CLASS (frame)->priv->search_css),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
}
else /* reset */
{
- fg = NULL;
- bg = NULL;
+ gtk_style_context_remove_provider (context,
+ GTK_STYLE_PROVIDER (GEDIT_VIEW_FRAME_GET_CLASS (frame)->priv->search_css));
}
-
- gtk_widget_override_background_color (entry, 0, bg);
- gtk_widget_override_color (entry, 0, fg);
}
static gboolean
@@ -429,12 +421,12 @@ run_search (GeditViewFrame *frame,
{
gedit_view_scroll_to_cursor (GEDIT_VIEW (frame->priv->view));
- set_entry_background (frame->priv->search_entry,
+ set_entry_background (frame, frame->priv->search_entry,
GEDIT_SEARCH_ENTRY_NORMAL);
}
else
{
- set_entry_background (frame->priv->search_entry,
+ set_entry_background (frame, frame->priv->search_entry,
GEDIT_SEARCH_ENTRY_NOT_FOUND);
}
@@ -1018,12 +1010,12 @@ search_init (GtkWidget *entry,
if (!moved || !moved_offset)
{
- set_entry_background (frame->priv->search_entry,
+ set_entry_background (frame, frame->priv->search_entry,
GEDIT_SEARCH_ENTRY_NOT_FOUND);
}
else
{
- set_entry_background (frame->priv->search_entry,
+ set_entry_background (frame, frame->priv->search_entry,
GEDIT_SEARCH_ENTRY_NORMAL);
}
}
@@ -1378,6 +1370,9 @@ static void
gedit_view_frame_class_init (GeditViewFrameClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ static const gchar error_style[] =
+ "@define-color text_color @error_fg_color;\n"
+ "@define-color base_color @error_bg_color;\n";
object_class->finalize = gedit_view_frame_finalize;
object_class->dispose = gedit_view_frame_dispose;
@@ -1400,6 +1395,11 @@ gedit_view_frame_class_init (GeditViewFrameClass *klass)
G_PARAM_STATIC_STRINGS));
g_type_class_add_private (object_class, sizeof (GeditViewFramePrivate));
+
+ klass->priv = G_TYPE_CLASS_GET_PRIVATE (klass, GEDIT_TYPE_VIEW_FRAME, GeditViewFrameClassPrivate);
+
+ klass->priv->search_css = gtk_css_provider_new ();
+ gtk_css_provider_load_from_data (klass->priv->search_css, error_style, -1, NULL);
}
static GMountOperation *
diff --git a/gedit/gedit-view-frame.h b/gedit/gedit-view-frame.h
index 44d4b31..3c5cd69 100644
--- a/gedit/gedit-view-frame.h
+++ b/gedit/gedit-view-frame.h
@@ -37,20 +37,23 @@ G_BEGIN_DECLS
#define GEDIT_IS_VIEW_FRAME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEDIT_TYPE_VIEW_FRAME))
#define GEDIT_VIEW_FRAME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEDIT_TYPE_VIEW_FRAME, GeditViewFrameClass))
-typedef struct _GeditViewFrame GeditViewFrame;
-typedef struct _GeditViewFrameClass GeditViewFrameClass;
-typedef struct _GeditViewFramePrivate GeditViewFramePrivate;
+typedef struct _GeditViewFrame GeditViewFrame;
+typedef struct _GeditViewFramePrivate GeditViewFramePrivate;
+typedef struct _GeditViewFrameClass GeditViewFrameClass;
+typedef struct _GeditViewFrameClassPrivate GeditViewFrameClassPrivate;
struct _GeditViewFrame
{
GtkVBox parent;
-
+
GeditViewFramePrivate *priv;
};
struct _GeditViewFrameClass
{
GtkVBoxClass parent_class;
+
+ GeditViewFrameClassPrivate *priv;
};
GType gedit_view_frame_get_type (void) G_GNUC_CONST;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]