[gnumeric] Compilation: more dead kittens.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Compilation: more dead kittens.
- Date: Mon, 8 Nov 2010 19:41:23 +0000 (UTC)
commit 6c724135b0b9e35490bfc66480943dc8d1f94d88
Author: Morten Welinder <terra gnome org>
Date: Mon Nov 8 14:40:59 2010 -0500
Compilation: more dead kittens.
configure.in | 4 ++-
src/dead-kittens.h | 44 +++++++++++++++++++++++
src/gui-util.c | 12 ++++++
src/gui-util.h | 4 ++
src/gutils.c | 8 ++++
src/gutils.h | 2 +
src/widgets/gnm-cell-combo-view.c | 16 ++++++--
src/widgets/gnumeric-cell-renderer-expr-entry.c | 9 ++++-
src/widgets/gnumeric-cell-renderer-text.c | 22 ++++++-----
src/widgets/gnumeric-cell-renderer-toggle.c | 32 ++++++++++-------
src/widgets/gnumeric-expr-entry.c | 2 +-
src/widgets/widget-editable-label.c | 2 +-
12 files changed, 125 insertions(+), 32 deletions(-)
---
diff --git a/configure.in b/configure.in
index 70704ff..31f8a45 100644
--- a/configure.in
+++ b/configure.in
@@ -689,8 +689,10 @@ LIBS="$GNUMERIC_LIBS $LIBS"
AC_CHECK_FUNCS(g_option_context_set_delocalize g_hash_table_get_keys)
AC_CHECK_FUNCS(pango_font_map_create_context)
AC_CHECK_FUNCS(gtk_adjustment_configure gtk_adjustment_set_lower gtk_adjustment_set_upper gtk_adjustment_get_page_size)
+AC_CHECK_FUNCS(gtk_cell_renderer_get_alignment gtk_cell_renderer_get_padding)
+AC_CHECK_FUNCS(gtk_cell_renderer_text_get_background_set gtk_cell_renderer_text_get_foreground_set gtk_cell_renderer_text_get_editable)
AC_CHECK_FUNCS(gtk_dialog_get_content_area gtk_dialog_get_action_area)
-AC_CHECK_FUNCS(gtk_entry_get_text_length gtk_entry_set_icon_from_stock gtk_entry_get_buffer gtk_entry_get_text_area)
+AC_CHECK_FUNCS(gtk_entry_get_text_length gtk_entry_set_icon_from_stock gtk_entry_get_buffer gtk_entry_get_text_area gtk_entry_set_editing_cancelled)
AC_CHECK_FUNCS(gtk_layout_get_bin_window)
AC_CHECK_FUNCS(gtk_orientable_set_orientation)
AC_CHECK_FUNCS(gtk_table_get_size)
diff --git a/src/dead-kittens.h b/src/dead-kittens.h
index a6c41b4..35b6ba2 100644
--- a/src/dead-kittens.h
+++ b/src/dead-kittens.h
@@ -1,8 +1,46 @@
#ifndef GNUMERIC_GTK_DEAD_KITTENS_H
#define GNUMERIC_GTK_DEAD_KITTENS_H
+#include <gutils.h>
+
/* To be included only from C files, not headers. */
+#ifndef HAVE_GTK_CELL_RENDERER_GET_ALIGNMENT
+#define gtk_cell_renderer_get_alignment(_cr_,_px_,_py_) do { \
+ gfloat *px = (_px_); \
+ gfloat *py = (_py_); \
+ if (px) *px = (_cr_)->xalign; \
+ if (py) *py = (_cr_)->yalign; \
+} while (0)
+#endif
+
+#ifndef HAVE_GTK_CELL_RENDERER_GET_PADDING
+#define gtk_cell_renderer_get_padding(_cr_,_px_,_py_) do { \
+ int *px = (_px_); \
+ int *py = (_py_); \
+ if (px) *px = (_cr_)->xpad; \
+ if (py) *py = (_cr_)->ypad; \
+} while (0)
+#endif
+
+/* This function does not exist in gtk+ yet. 634344. */
+#ifndef HAVE_GTK_CELL_RENDERER_TEXT_GET_BACKGROUND_SET
+#define gtk_cell_renderer_text_get_background_set(_cr_) \
+ gnm_object_get_bool ((_cr_), "background-set")
+#endif
+
+/* This function does not exist in gtk+ yet. 634344. */
+#ifndef HAVE_GTK_CELL_RENDERER_TEXT_GET_FOREGROUND_SET
+#define gtk_cell_renderer_text_get_foreground_set(_cr_) \
+ gnm_object_get_bool ((_cr_), "foreground-set")
+#endif
+
+/* This function does not exist in gtk+ yet. 634344. */
+#ifndef HAVE_GTK_CELL_RENDERER_TEXT_GET_EDITABLE
+#define gtk_cell_renderer_text_get_editable(_cr_) \
+ gnm_object_get_bool ((_cr_), "editable")
+#endif
+
#ifndef HAVE_GTK_DIALOG_GET_ACTION_AREA
#define gtk_dialog_get_action_area(x) ((x)->action_area)
#endif
@@ -23,6 +61,12 @@
# endif
#endif
+/* This function does not exist in gtk+ yet. 634342. */
+#ifndef HAVE_GTK_ENTRY_SET_EDITING_CANCELLED
+#define gtk_entry_set_editing_cancelled(_e_,_b_) \
+ g_object_set ((_e_), "editing-canceled", (gboolean)(_b_), NULL)
+#endif
+
#ifndef HAVE_GTK_LAYOUT_GET_BIN_WINDOW
#define gtk_layout_get_bin_window(x) ((x)->bin_window)
#endif
diff --git a/src/gui-util.c b/src/gui-util.c
index 274d891..0e64385 100644
--- a/src/gui-util.c
+++ b/src/gui-util.c
@@ -1501,3 +1501,15 @@ gnm_check_for_plugins_missing (char const **ids, GtkWindow *parent)
}
return FALSE;
}
+
+
+void
+gnm_cell_renderer_text_copy_background_to_cairo (GtkCellRendererText *crt,
+ cairo_t *cr)
+{
+ GdkColor c;
+
+ /* FIXME: If we have GdkRGBA we can do better. */
+ g_object_get (crt, "background-gdk", &c, NULL);
+ gdk_cairo_set_source_color (cr, &c);
+}
diff --git a/src/gui-util.h b/src/gui-util.h
index a7ef21c..9894757 100644
--- a/src/gui-util.h
+++ b/src/gui-util.h
@@ -138,6 +138,10 @@ void gnm_canvas_get_screen_position (GocCanvas *canvas,
gboolean gnm_check_for_plugins_missing (char const **ids, GtkWindow *parent);
+void
+gnm_cell_renderer_text_copy_background_to_cairo (GtkCellRendererText *crt,
+ cairo_t *cr);
+
G_END_DECLS
#endif /* _GNM_GUI_UTIL_H_ */
diff --git a/src/gutils.c b/src/gutils.c
index 3860dd7..03dd5f6 100644
--- a/src/gutils.c
+++ b/src/gutils.c
@@ -455,3 +455,11 @@ gnm_insert_meta_date (GODoc *doc, char const *name)
}
/* ------------------------------------------------------------------------- */
+
+gboolean
+gnm_object_get_bool (gpointer o, const char *name)
+{
+ gboolean b;
+ g_object_get (o, name, &b, NULL);
+ return b;
+}
diff --git a/src/gutils.h b/src/gutils.h
index baee340..1fe8e05 100644
--- a/src/gutils.h
+++ b/src/gutils.h
@@ -38,6 +38,8 @@ void gnm_string_add_number (GString *buf, gnm_float d);
void gnm_insert_meta_date (GODoc *doc, char const *name);
+gboolean gnm_object_get_bool (gpointer o, const char *name);
+
G_END_DECLS
#endif /* _GNM_GUTILS_H_ */
diff --git a/src/widgets/gnm-cell-combo-view.c b/src/widgets/gnm-cell-combo-view.c
index 1ceff6a..487bb2c 100644
--- a/src/widgets/gnm-cell-combo-view.c
+++ b/src/widgets/gnm-cell-combo-view.c
@@ -178,12 +178,15 @@ cb_ccombo_popup_motion (GtkWidget *widget, GdkEventMotion *event,
GtkTreeView *list)
{
int base, dir = 0;
+ GtkAllocation la;
+
+ gtk_widget_get_allocation (GTK_WIDGET (list), &la);
gdk_window_get_origin (gtk_widget_get_window (GTK_WIDGET (list)),
NULL, &base);
if (event->y_root < base)
dir = -1;
- else if (event->y_root >= (base + GTK_WIDGET(list)->allocation.height))
+ else if (event->y_root >= (base + la.height))
dir = 1;
else
dir = 0;
@@ -196,9 +199,12 @@ cb_ccombo_list_motion (GtkWidget *widget, GdkEventMotion *event,
GtkTreeView *list)
{
GtkTreePath *path;
+ GtkAllocation wa;
+
+ gtk_widget_get_allocation (widget, &wa);
+
if (event->x >= 0 && event->y >= 0 &&
- event->x < widget->allocation.width &&
- event->y < widget->allocation.height &&
+ event->x < wa.width && event->y < wa.height &&
gtk_tree_view_get_path_at_pos (list, event->x, event->y,
&path, NULL, NULL, NULL)) {
gtk_tree_selection_select_path (gtk_tree_view_get_selection (list), path);
@@ -342,7 +348,9 @@ gnm_cell_combo_view_popdown (SheetObjectView *sov, guint32 activate_time)
gdk_window_get_origin (gtk_widget_get_window (GTK_WIDGET (pane)),
&root_x, &root_y);
if (sheet->text_is_rtl) {
- root_x += GTK_WIDGET (pane)->allocation.width;
+ GtkAllocation pa;
+ gtk_widget_get_allocation (GTK_WIDGET (pane), &pa);
+ root_x += pa.width;
root_x -= scg_colrow_distance_get (scg, TRUE,
pane->first.col,
so->anchor.cell_bound.start.col + 1);
diff --git a/src/widgets/gnumeric-cell-renderer-expr-entry.c b/src/widgets/gnumeric-cell-renderer-expr-entry.c
index 5cc90d5..3390869 100644
--- a/src/widgets/gnumeric-cell-renderer-expr-entry.c
+++ b/src/widgets/gnumeric-cell-renderer-expr-entry.c
@@ -20,6 +20,7 @@
#include "gnumeric-cell-renderer-expr-entry.h"
#include "gnumeric-expr-entry.h"
#include "wbc-gtk.h"
+#include <dead-kittens.h>
#define GNUMERIC_CELL_RENDERER_EXPR_ENTRY_PATH "gnumeric-cell-renderer-expr-entry-path"
@@ -118,18 +119,22 @@ gnumeric_cell_renderer_expr_entry_start_editing (GtkCellRenderer *cell,
GnumericCellRendererExprEntry *celltext;
GtkEntry *entry;
GnmExprEntry *gentry;
+ char *text;
celltext = GNUMERIC_CELL_RENDERER_EXPR_ENTRY (cell);
/* If the cell isn't editable we return NULL. */
- if (celltext->parent.parent.editable == FALSE)
+ if (gtk_cell_renderer_text_get_editable (celltext) == FALSE)
return NULL;
gentry = gnm_expr_entry_new (celltext->wbcg, FALSE);
celltext->entry = gentry;
entry = gnm_expr_entry_get_entry (gentry);
- gtk_entry_set_text (entry, celltext->parent.parent.text);
+ g_object_get (celltext, "text", &text, NULL);
+ gtk_entry_set_text (entry, text);
+ g_free (text);
+
g_object_set_data_full (G_OBJECT (gentry), GNUMERIC_CELL_RENDERER_EXPR_ENTRY_PATH, g_strdup (path), g_free);
gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1);
diff --git a/src/widgets/gnumeric-cell-renderer-text.c b/src/widgets/gnumeric-cell-renderer-text.c
index c799e6c..815387e 100644
--- a/src/widgets/gnumeric-cell-renderer-text.c
+++ b/src/widgets/gnumeric-cell-renderer-text.c
@@ -17,8 +17,9 @@
*/
#include <gnumeric-config.h>
-#include <dead-kittens.h>
#include "gnumeric-cell-renderer-text.h"
+#include <dead-kittens.h>
+#include <gui-util.h>
static void gnumeric_cell_renderer_text_class_init
(GnumericCellRendererTextClass *cell_text_class);
@@ -79,29 +80,30 @@ gnumeric_cell_renderer_text_render (GtkCellRenderer *cell,
state = GTK_STATE_NORMAL;
}
- if (celltext->background_set) {
- cairo_set_source_rgb (cr,
- celltext->background.red / 65535.,
- celltext->background.green / 65535.,
- celltext->background.blue / 65535.);
+ if (gtk_cell_renderer_text_get_background_set (celltext)) {
+ int ypad;
+
+ gnm_cell_renderer_text_copy_background_to_cairo
+ (celltext, cr);
if (expose_area) {
gdk_cairo_rectangle (cr, background_area);
cairo_clip (cr);
}
+ gtk_cell_renderer_get_padding (cell, NULL, &ypad);
cairo_rectangle (cr,
background_area->x,
- background_area->y + cell->ypad,
+ background_area->y + ypad,
background_area->width,
- background_area->height - 2 * cell->ypad);
+ background_area->height - 2 * ypad);
cairo_fill (cr);
if (expose_area)
cairo_reset_clip (cr);
}
- if (celltext->editable) {
+ if (gtk_cell_renderer_text_get_editable (celltext)) {
GtkStyle *style = gtk_widget_get_style (widget);
gdk_cairo_set_source_color (cr, &style->bg[frame_state]);
gdk_cairo_rectangle (cr, background_area);
@@ -112,7 +114,7 @@ gnumeric_cell_renderer_text_render (GtkCellRenderer *cell,
cairo_destroy (cr);
- if (celltext->foreground_set) {
+ if (gtk_cell_renderer_text_get_foreground_set (celltext)) {
GTK_CELL_RENDERER_CLASS (parent_class)->render
(cell, window, widget, background_area,
cell_area, expose_area, 0);
diff --git a/src/widgets/gnumeric-cell-renderer-toggle.c b/src/widgets/gnumeric-cell-renderer-toggle.c
index f91fb11..9257ebc 100644
--- a/src/widgets/gnumeric-cell-renderer-toggle.c
+++ b/src/widgets/gnumeric-cell-renderer-toggle.c
@@ -175,6 +175,8 @@ gnumeric_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
gint pixbuf_height = 0;
gint calc_width;
gint calc_height;
+ int xpad, ypad;
+ gfloat xalign, yalign;
if (cellpixbuf->pixbuf)
{
@@ -182,8 +184,12 @@ gnumeric_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
pixbuf_height = gdk_pixbuf_get_height (cellpixbuf->pixbuf);
}
- calc_width = (gint) GTK_CELL_RENDERER (cellpixbuf)->xpad * 2 + pixbuf_width;
- calc_height = (gint) GTK_CELL_RENDERER (cellpixbuf)->ypad * 2 + pixbuf_height;
+ gtk_cell_renderer_get_padding (GTK_CELL_RENDERER (cellpixbuf),
+ &xpad, &ypad);
+ gtk_cell_renderer_get_alignment (GTK_CELL_RENDERER (cellpixbuf),
+ &xalign, &yalign);
+ calc_width = xpad * 2 + pixbuf_width;
+ calc_height = ypad * 2 + pixbuf_height;
if (x_offset) *x_offset = 0;
if (y_offset) *y_offset = 0;
@@ -192,18 +198,15 @@ gnumeric_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
{
if (x_offset)
{
- *x_offset = GTK_CELL_RENDERER
- (cellpixbuf)->xalign * (cell_area->width - calc_width -
- (2 * GTK_CELL_RENDERER (cellpixbuf)->xpad));
- *x_offset = MAX (*x_offset, 0) +
- GTK_CELL_RENDERER (cellpixbuf)->xpad;
+ *x_offset = xalign * (cell_area->width - calc_width -
+ (2 * xpad));
+ *x_offset = MAX (*x_offset, 0) + xpad;
}
if (y_offset)
{
- *y_offset = GTK_CELL_RENDERER
- (cellpixbuf)->yalign * (cell_area->height - calc_height -
- (2 * GTK_CELL_RENDERER (cellpixbuf)->ypad));
- *y_offset = MAX (*y_offset, 0) + GTK_CELL_RENDERER (cellpixbuf)->ypad;
+ *y_offset = yalign * (cell_area->height - calc_height -
+ (2 * ypad));
+ *y_offset = MAX (*y_offset, 0) + ypad;
}
}
@@ -228,6 +231,7 @@ gnumeric_cell_renderer_toggle_render (GtkCellRenderer *cell,
GdkPixbuf *pixbuf;
GdkRectangle pix_rect;
GdkRectangle draw_rect;
+ int xpad, ypad;
pixbuf = cellpixbuf->pixbuf;
@@ -240,10 +244,12 @@ gnumeric_cell_renderer_toggle_render (GtkCellRenderer *cell,
&pix_rect.width,
&pix_rect.height);
+ gtk_cell_renderer_get_padding (cell, &xpad, &ypad);
+
pix_rect.x += cell_area->x;
pix_rect.y += cell_area->y;
- pix_rect.width -= cell->xpad * 2;
- pix_rect.height -= cell->ypad * 2;
+ pix_rect.width -= xpad * 2;
+ pix_rect.height -= ypad * 2;
if (gdk_rectangle_intersect (cell_area, &pix_rect, &draw_rect))
gdk_draw_pixbuf (window, NULL, pixbuf,
diff --git a/src/widgets/gnumeric-expr-entry.c b/src/widgets/gnumeric-expr-entry.c
index 7e52ebc..88786ee 100644
--- a/src/widgets/gnumeric-expr-entry.c
+++ b/src/widgets/gnumeric-expr-entry.c
@@ -1196,7 +1196,7 @@ cb_gee_key_press_event (GtkEntry *entry,
case GDK_Escape:
if (gee->is_cell_renderer) {
- entry->editing_canceled = TRUE;
+ gtk_entry_set_editing_cancelled (entry, TRUE);
gtk_cell_editable_editing_done (GTK_CELL_EDITABLE (gee));
gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE (gee));
return TRUE;
diff --git a/src/widgets/widget-editable-label.c b/src/widgets/widget-editable-label.c
index 13e7189..d2c751c 100644
--- a/src/widgets/widget-editable-label.c
+++ b/src/widgets/widget-editable-label.c
@@ -168,7 +168,7 @@ el_button_press_event (GtkWidget *widget, GdkEventButton *button)
EditableLabel *el = EDITABLE_LABEL (widget);
if (button->window != gtk_widget_get_window (widget) &&
- button->window != el->entry.text_area) {
+ button->window != gtk_entry_get_text_area (&el->entry)) {
/* Accept the name change */
el_entry_activate (GTK_ENTRY (el), NULL);
gdk_event_put ((GdkEvent *)button);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]