X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fgtksheet%2Fgsheet-row-iface.c;h=4bbd2e1c529b4c4b042633ee907a8580ed681ae7;hb=4179d3233e97505ed3def53dc02b6a778057d439;hp=81bc56bb2ee40332f2da310817fb81b6396a6492;hpb=c3ac5a8af9c449072c7e872ca70a78c1755ae309;p=pspp-builds.git diff --git a/lib/gtksheet/gsheet-row-iface.c b/lib/gtksheet/gsheet-row-iface.c index 81bc56bb..4bbd2e1c 100644 --- a/lib/gtksheet/gsheet-row-iface.c +++ b/lib/gtksheet/gsheet-row-iface.c @@ -36,7 +36,7 @@ static guint sheet_row_signals[LAST_SIGNAL]; -static void g_sheet_row_base_init (gpointer g_class); +static void g_sheet_row_base_init (gpointer g_class); GType @@ -128,20 +128,7 @@ g_sheet_row_get_height (const GSheetRow *row_geo, gboolean -g_sheet_row_get_visibility(const GSheetRow *row_geo, - glong row) -{ - g_return_val_if_fail (G_IS_SHEET_ROW (row_geo), FALSE); - - g_assert (G_SHEET_ROW_GET_IFACE (row_geo)->get_visibility); - - return (G_SHEET_ROW_GET_IFACE (row_geo)->get_visibility) (row_geo, - row); - -} - -gboolean -g_sheet_row_get_sensitivity(const GSheetRow *row_geo, +g_sheet_row_get_sensitivity (const GSheetRow *row_geo, glong row) { g_return_val_if_fail (G_IS_SHEET_ROW (row_geo), FALSE); @@ -150,22 +137,21 @@ g_sheet_row_get_sensitivity(const GSheetRow *row_geo, return (G_SHEET_ROW_GET_IFACE (row_geo)->get_sensitivity) (row_geo, row); - } GtkSheetButton * -g_sheet_row_get_button(const GSheetRow *row_geo, +g_sheet_row_get_button (const GSheetRow *row_geo, glong row) { - GtkSheetButton *button = gtk_sheet_button_new(); + GtkSheetButton *button = gtk_sheet_button_new (); GSheetRowIface *iface = G_SHEET_ROW_GET_IFACE (row_geo); g_return_val_if_fail (G_IS_SHEET_ROW (row_geo), FALSE); if ( iface->get_button_label) - button->label = iface->get_button_label(row_geo, row); + button->label = iface->get_button_label (row_geo, row); return button; } @@ -201,6 +187,8 @@ g_sheet_row_get_row_count (const GSheetRow *geo) * @sheet: pointer to the sheet * * Returns the top y pixel for ROW. + * ROW may point to the row BELOW the last row, in which case it should + * return the position where it would start if it existed. * Instances may override this method in order to achieve time and/or memory * optmisation. * @@ -208,23 +196,21 @@ g_sheet_row_get_row_count (const GSheetRow *geo) */ gint -g_sheet_row_start_pixel(const GSheetRow *geo, glong row) +g_sheet_row_start_pixel (const GSheetRow *geo, glong row) { gint i; gint start_pixel = 0; g_return_val_if_fail (G_IS_SHEET_ROW (geo), -1); g_return_val_if_fail (row >= 0, -1); - g_return_val_if_fail (row < - g_sheet_row_get_row_count(geo),-1); + g_return_val_if_fail (row <= g_sheet_row_get_row_count (geo), -1); - if ( G_SHEET_ROW_GET_IFACE(geo)->top_ypixel) - return (G_SHEET_ROW_GET_IFACE(geo)->top_ypixel)(geo, row); + if ( G_SHEET_ROW_GET_IFACE (geo)->top_ypixel) + return (G_SHEET_ROW_GET_IFACE (geo)->top_ypixel)(geo, row); - for ( i = 0 ; i < row ; ++i ) + for (i = 0; i < row; ++i) { - if ( g_sheet_row_get_visibility(geo, i)) - start_pixel += g_sheet_row_get_height(geo, i); + start_pixel += g_sheet_row_get_height (geo, i); } return start_pixel; @@ -238,19 +224,17 @@ g_sheet_row_pixel_to_row (const GSheetRow *geo, gint pixel) g_return_val_if_fail (G_IS_SHEET_ROW (geo), -1); g_return_val_if_fail (pixel >= 0, -1) ; - if ( G_SHEET_ROW_GET_IFACE(geo)->pixel_to_row) - return (G_SHEET_ROW_GET_IFACE(geo)->pixel_to_row)(geo, pixel); + if ( G_SHEET_ROW_GET_IFACE (geo)->pixel_to_row) + return (G_SHEET_ROW_GET_IFACE (geo)->pixel_to_row)(geo, pixel); cy = 0; for (i = 0; i < g_sheet_row_get_row_count (geo); ++i ) { if (pixel >= cy && - pixel <= (cy + g_sheet_row_get_height (geo, i)) && - g_sheet_row_get_visibility (geo, i)) + pixel <= (cy + g_sheet_row_get_height (geo, i))) return i; - if(g_sheet_row_get_visibility (geo, i)) - cy += g_sheet_row_get_height (geo, i); + cy += g_sheet_row_get_height (geo, i); } /* no match */