/* * ECell::event method */ static gint eprog_event (ECellView *ecell_view, GdkEvent *event, int model_col, int view_col, int row, ECellFlags flags, ECellActions *actions) { ECellProgressView *progress_view = (ECellProgressView *) ecell_view; void *_value = e_table_model_value_at (ecell_view->e_table_model, model_col, row); const int value = GPOINTER_TO_INT (_value); #if 0 if (!(flags & E_CELL_EDITING)) return FALSE; #endif switch (event->type){ case GDK_KEY_PRESS: if (event->key.keyval != GDK_space) return FALSE; /* Fall through */ case GDK_BUTTON_PRESS: if (!e_table_model_is_cell_editable(ecell_view->e_table_model, model_col, row)) return FALSE; eprog_set_value (progress_view, model_col, view_col, row, value + 1); return TRUE; default: return FALSE; } }
static gboolean one_is_cell_editable (ETableModel *etm, int col, int row) { ETableOne *one = E_TABLE_ONE(etm); if (one->source) return e_table_model_is_cell_editable(one->source, col, -1); else return FALSE; }
static gboolean etss_is_cell_editable (ETableModel *etm, gint col, gint row) { ETableSubset *etss = (ETableSubset *) etm; g_return_val_if_fail (VALID_ROW (etss, row), FALSE); return e_table_model_is_cell_editable (etss->source, col, MAP_ROW (etss, row)); }