From dced40cf6ac22d11833d1adaf1f971148a95f948 Mon Sep 17 00:00:00 2001 From: Robert Fewell <14uBobIT@gmail.com> Date: Thu, 3 Dec 2020 15:59:35 +0000 Subject: [PATCH] When a resister is read only make whole sheet insensitive. --- .../register/register-gnome/gnucash-sheet-private.c | 13 +++++++++++++ gnucash/register/register-gnome/gnucash-sheetP.h | 1 + 2 files changed, 14 insertions(+) diff --git a/gnucash/register/register-gnome/gnucash-sheet-private.c b/gnucash/register/register-gnome/gnucash-sheet-private.c index 4e2da3bca56..07723e296e6 100644 --- a/gnucash/register/register-gnome/gnucash-sheet-private.c +++ b/gnucash/register/register-gnome/gnucash-sheet-private.c @@ -408,6 +408,17 @@ draw_cell (GnucashSheet *sheet, SheetBlock *block, color_type = gnc_table_get_color (table, virt_loc, &hatching); gnucash_get_style_classes (sheet, stylectxt, color_type, use_neg_class); + if (sheet->read_only) + { + if (!gtk_style_context_has_class (stylectxt, GTK_STYLE_CLASS_BACKGROUND)) + gtk_style_context_set_state (stylectxt, GTK_STATE_FLAG_INSENSITIVE); + } + else + { + if (gtk_style_context_has_class (stylectxt, GTK_STYLE_CLASS_BACKGROUND)) + gtk_style_context_set_state (stylectxt, GTK_STATE_FLAG_NORMAL); + } + // Are we in a read-only row? Then make the background color somewhat more grey. if ((virt_loc.phys_row_offset < block->style->nrows) && (table->model->dividing_row_upper >= 0) @@ -627,6 +638,8 @@ gnucash_sheet_draw_internal (GnucashSheet* sheet, cairo_t* cr, if (!sheet_block || !sheet_block->style) return FALSE; + sheet->read_only = gnc_table_model_read_only (sheet->table->model); + for ( ; virt_loc.vcell_loc.virt_row < sheet->num_virt_rows; virt_loc.vcell_loc.virt_row++ ) { diff --git a/gnucash/register/register-gnome/gnucash-sheetP.h b/gnucash/register/register-gnome/gnucash-sheetP.h index dd4be506a12..32027c7051b 100644 --- a/gnucash/register/register-gnome/gnucash-sheetP.h +++ b/gnucash/register/register-gnome/gnucash-sheetP.h @@ -44,6 +44,7 @@ struct _GnucashSheet gpointer popup_data; Table *table; + gboolean read_only; GtkWidget *reg;