[gnumeric] Fixed notebook tab width and background color.
- From: Jean BrÃfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Fixed notebook tab width and background color.
- Date: Thu, 19 Apr 2012 14:40:05 +0000 (UTC)
commit c84a71ee34b3eb8075dfff71e700b01f47ad48bc
Author: Jean Brefort <jean brefort normalesup org>
Date: Thu Apr 19 16:38:29 2012 +0200
Fixed notebook tab width and background color.
src/widgets/ChangeLog | 5 ++++
src/widgets/widget-editable-label.c | 41 +++++++++++++++++++++++++++++++++-
2 files changed, 44 insertions(+), 2 deletions(-)
---
diff --git a/src/widgets/ChangeLog b/src/widgets/ChangeLog
index bc48a0b..a22233f 100644
--- a/src/widgets/ChangeLog
+++ b/src/widgets/ChangeLog
@@ -1,3 +1,8 @@
+2012-04-19 Jean Brefort <jean brefort normalesup org>
+
+ * widget-editable-label.c (el_get_preferred_width), (el_draw),
+ (el_class_init): fixed label width and background color.
+
2012-03-02 Morten Welinder <terra gnome org>
* Release 1.11.2
diff --git a/src/widgets/widget-editable-label.c b/src/widgets/widget-editable-label.c
index 1b8a20b..0ce3840 100644
--- a/src/widgets/widget-editable-label.c
+++ b/src/widgets/widget-editable-label.c
@@ -212,11 +212,16 @@ el_get_preferred_width (GtkWidget *w, gint *minimal_width, gint *natural_width)
{
PangoRectangle logical_rect;
PangoLayout *layout;
+ GtkStyleContext *ctxt = gtk_widget_get_style_context (w);
+ GtkStateFlags flags = gtk_widget_get_state_flags (w);
+ GtkBorder border;
layout = gtk_entry_get_layout (GTK_ENTRY (w));
pango_layout_get_extents (layout, NULL, &logical_rect);
-
- *minimal_width = *natural_width = logical_rect.width / PANGO_SCALE + 2 * 2;
+ gtk_style_context_get_padding (ctxt, flags, &border);
+
+ *minimal_width = *natural_width = logical_rect.width / PANGO_SCALE
+ + border.left + border.right;
}
static void
@@ -252,6 +257,37 @@ el_motion_notify (GtkWidget *widget,
return res;
}
+static gboolean
+el_draw (GtkWidget *w, cairo_t *cr)
+{
+ EditableLabel *el = EDITABLE_LABEL (w);
+ if (el->unedited_text == NULL && el->base_set) {
+ GtkAllocation alloc;
+ PangoLayout *layout;
+ GtkStyleContext *ctxt = gtk_widget_get_style_context (w);
+ GtkStateFlags flags = gtk_widget_get_state_flags (w);
+ GtkBorder border;
+ gtk_widget_get_allocation (w, &alloc);
+ gtk_style_context_get_padding (ctxt, flags, &border);
+ cairo_rectangle (cr, border.left, border.top,
+ alloc.width - border.left - border.right,
+ alloc.height - border.top - border.bottom);
+ cairo_set_source_rgba (cr,
+ el->base.red, el->base.green,
+ el->base.blue, el->base.alpha);
+ cairo_fill (cr);
+ layout = gtk_entry_get_layout (GTK_ENTRY (w));
+ cairo_move_to (cr, border.left, border.top);
+ cairo_set_source_rgba (cr,
+ el->text.red, el->text.green,
+ el->text.blue, el->text.alpha);
+ pango_cairo_show_layout (cr, layout);
+ return TRUE;
+ }
+
+ return parent_class->draw (w, cr);
+}
+
static void
el_class_init (GObjectClass *object_class)
{
@@ -260,6 +296,7 @@ el_class_init (GObjectClass *object_class)
parent_class = g_type_class_peek_parent (object_class);
widget_class->destroy = el_destroy;
+ widget_class->draw = el_draw;
widget_class->button_press_event = el_button_press_event;
widget_class->key_press_event = el_key_press_event;
widget_class->get_preferred_width = el_get_preferred_width;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]