#include <gtk/gtkcontainer.h>
#include <pango/pango.h>
#include "gtksheet.h"
-#include "gtkextra-marshal.h"
+#include <gtksheet/psppire-marshal.h>
#include "gsheetmodel.h"
#include <libpspp/misc.h>
#include <math.h>
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
- gtkextra_VOID__INT_POINTER,
+ psppire_marshal_VOID__INT_POINTER,
G_TYPE_NONE,
2,
G_TYPE_INT,
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
- gtkextra_VOID__INT_POINTER,
+ psppire_marshal_VOID__INT_POINTER,
G_TYPE_NONE,
2,
G_TYPE_INT,
G_SIGNAL_RUN_LAST,
offsetof (GtkSheetClass, resize_range),
NULL, NULL,
- gtkextra_VOID__BOXED_BOXED,
+ psppire_marshal_VOID__BOXED_BOXED,
G_TYPE_NONE,
2,
GTK_TYPE_SHEET_RANGE, GTK_TYPE_SHEET_RANGE
G_SIGNAL_RUN_LAST,
offsetof (GtkSheetClass, move_range),
NULL, NULL,
- gtkextra_VOID__BOXED_BOXED,
+ psppire_marshal_VOID__BOXED_BOXED,
G_TYPE_NONE,
2,
GTK_TYPE_SHEET_RANGE, GTK_TYPE_SHEET_RANGE
G_SIGNAL_RUN_LAST,
offsetof (GtkSheetClass, traverse),
NULL, NULL,
- gtkextra_BOOLEAN__BOXED_POINTER,
+ psppire_marshal_BOOLEAN__BOXED_POINTER,
G_TYPE_BOOLEAN, 2,
GTK_TYPE_SHEET_CELL,
G_TYPE_POINTER);
G_SIGNAL_RUN_LAST,
offsetof (GtkSheetClass, activate),
NULL, NULL,
- gtkextra_VOID__INT_INT_INT_INT,
+ psppire_marshal_VOID__INT_INT_INT_INT,
G_TYPE_NONE, 4,
G_TYPE_INT, G_TYPE_INT,
G_TYPE_INT, G_TYPE_INT);
G_SIGNAL_RUN_LAST,
offsetof (GtkSheetClass, set_scroll_adjustments),
NULL, NULL,
- gtkextra_VOID__OBJECT_OBJECT,
+ psppire_marshal_VOID__OBJECT_OBJECT,
G_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
}
+#define BORDER_WIDTH 4
+
static void
gtk_sheet_realize (GtkWidget *widget)
{
const gint attributes_mask =
GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP | GDK_WA_CURSOR;
- GdkGCValues values, auxvalues;
+ GdkGCValues values;
GdkColormap *colormap;
GdkDisplay *display;
sheet->fg_gc = gdk_gc_new (widget->window);
sheet->bg_gc = gdk_gc_new (widget->window);
- gdk_gc_get_values (sheet->fg_gc, &auxvalues);
-
values.foreground = widget->style->white;
values.function = GDK_INVERT;
values.subwindow_mode = GDK_INCLUDE_INFERIORS;
- values.line_width = 3;
+ values.line_width = BORDER_WIDTH;
sheet->xor_gc = gdk_gc_new_with_values (widget->window,
&values,
area.width, area.height);
}
- // gtk_sheet_cell_draw_label (sheet, row, col);
-
label = gtk_sheet_cell_get_text (sheet, row, col);
if (NULL == label)
if ( ! text )
text = g_strdup ("");
- gtk_entry_set_visibility (sheet_entry, attributes.is_visible);
-
-
if ( GTK_IS_ENTRY (sheet_entry))
{
const gchar *old_text = gtk_entry_get_text (GTK_ENTRY (sheet_entry));
*range = new_range;
}
+
+
static void
gtk_sheet_draw_border (GtkSheet *sheet, GtkSheetRange new_range)
{
gdk_draw_rectangle (sheet->sheet_window,
sheet->xor_gc,
FALSE,
- area.x + 1,
- area.y + 1,
- area.width - 2,
- area.height - 2);
+ area.x - BORDER_WIDTH / 2,
+ area.y - BORDER_WIDTH / 2,
+ area.width + BORDER_WIDTH,
+ area.height + BORDER_WIDTH);
}
allocation->width - 2 * border_width,
allocation->height - 2 * border_width);
- /* use internal allocation structure for all the math
- * because it's easier than always subtracting the container
- * border width */
- sheet->internal_allocation.x = 0;
- sheet->internal_allocation.y = 0;
- sheet->internal_allocation.width = allocation->width - 2 * border_width;
- sheet->internal_allocation.height = allocation->height - 2 * border_width;
-
sheet_allocation.x = 0;
sheet_allocation.y = 0;
sheet_allocation.width = allocation->width - 2 * border_width;
GtkSheetCellAttr attributes = { 0 };
GtkEntry *sheet_entry;
-
if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet))) return;
if (!GTK_WIDGET_MAPPED (GTK_WIDGET (sheet))) return;
&attributes) )
return ;
- gtk_widget_ensure_style (GTK_WIDGET (sheet_entry));
-
if ( GTK_WIDGET_REALIZED (sheet->entry_widget) )
{
GtkStyle *style = GTK_WIDGET (sheet_entry)->style;
style->bg[GTK_STATE_ACTIVE] = attributes.background;
style->fg[GTK_STATE_ACTIVE] = attributes.foreground;
style->text[GTK_STATE_ACTIVE] = attributes.foreground;
-
- pango_font_description_free (style->font_desc);
- g_assert (attributes.font_desc);
- style->font_desc = pango_font_description_copy (attributes.font_desc);
}
rectangle_from_cell (sheet, sheet->active_cell.row,
gtk_widget_unparent (sheet->entry_widget);
}
- if (sheet->entry_type)
- {
- sheet->entry_widget = g_object_new (sheet->entry_type, NULL);
- g_object_ref_sink (sheet->entry_widget);
- }
- else
- {
- sheet->entry_widget = gtk_entry_new ();
- }
+ sheet->entry_widget = g_object_new (sheet->entry_type, NULL);
+ g_object_ref_sink (sheet->entry_widget);
gtk_widget_size_request (sheet->entry_widget, NULL);
if (row < 0 || col < 0) return FALSE;
-
attr->foreground = GTK_WIDGET (sheet)->style->black;
attr->background = sheet->color[BG_COLOR];
attr->font_desc = GTK_WIDGET (sheet)->style->font_desc;
attr->is_editable = g_sheet_model_is_editable (sheet->model, row, col);
- attr->is_visible = g_sheet_model_is_visible (sheet->model, row, col);
-
colormap = gtk_widget_get_colormap (GTK_WIDGET (sheet));
fg = g_sheet_model_get_foreground (sheet->model, row, col);