diff options
-rw-r--r-- | widgets/table/e-cell-combo.c | 8 | ||||
-rw-r--r-- | widgets/table/e-cell-popup.c | 19 | ||||
-rw-r--r-- | widgets/table/e-cell-popup.h | 14 |
3 files changed, 32 insertions, 9 deletions
diff --git a/widgets/table/e-cell-combo.c b/widgets/table/e-cell-combo.c index d4e6b605d2..1844c5c81f 100644 --- a/widgets/table/e-cell-combo.c +++ b/widgets/table/e-cell-combo.c @@ -350,7 +350,7 @@ e_cell_combo_show_popup (ECellCombo *ecc, int row, int view_col) gdk_window_resize (ecc->popup_window->window, width, height); gtk_widget_show (ecc->popup_window); - E_CELL_POPUP (ecc)->popup_shown = TRUE; + e_cell_popup_set_shown (E_CELL_POPUP (ecc), TRUE); d(g_print("%s: popup_shown = TRUE\n", __FUNCTION__)); } @@ -520,7 +520,7 @@ e_cell_combo_button_press (GtkWidget *popup_window, gdk_pointer_ungrab (event->button.time); gtk_widget_hide (ecc->popup_window); - E_CELL_POPUP (ecc)->popup_shown = FALSE; + e_cell_popup_set_shown (E_CELL_POPUP (ecc), FALSE); d(g_print("%s: popup_shown = FALSE\n", __FUNCTION__)); /* We don't want to update the cell here. Since the list is in browse @@ -561,7 +561,7 @@ e_cell_combo_button_release (GtkWidget *popup_window, gdk_pointer_ungrab (event->time); gtk_widget_hide (ecc->popup_window); - E_CELL_POPUP (ecc)->popup_shown = FALSE; + e_cell_popup_set_shown (E_CELL_POPUP (ecc), FALSE); d(g_print("%s: popup_shown = FALSE\n", __FUNCTION__)); e_cell_combo_update_cell (ecc); @@ -590,7 +590,7 @@ e_cell_combo_key_press (GtkWidget *popup_window, gdk_pointer_ungrab (event->time); gtk_widget_hide (ecc->popup_window); - E_CELL_POPUP (ecc)->popup_shown = FALSE; + e_cell_popup_set_shown (E_CELL_POPUP (ecc), FALSE); d(g_print("%s: popup_shown = FALSE\n", __FUNCTION__)); if (event->keyval != GDK_Escape) diff --git a/widgets/table/e-cell-popup.c b/widgets/table/e-cell-popup.c index 3791d4c7aa..bf0104758f 100644 --- a/widgets/table/e-cell-popup.c +++ b/widgets/table/e-cell-popup.c @@ -507,3 +507,22 @@ e_cell_popup_do_popup (ECellPopupView *ecp_view, return popup_func ? popup_func (ecp, event, row, view_col) : FALSE; } + +/* This redraws the popup cell. Only use this if you know popup_view_col and + popup_row are valid. */ +void +e_cell_popup_queue_cell_redraw (ECellPopup *ecp) +{ + ETableItem *eti = E_TABLE_ITEM (ecp->popup_cell_view->cell_view.e_table_item_view); + + e_table_item_redraw_range (eti, ecp->popup_view_col, ecp->popup_row, + ecp->popup_view_col, ecp->popup_row); +} + +void +e_cell_popup_set_shown (ECellPopup *ecp, + gboolean shown) +{ + ecp->popup_shown = shown; + e_cell_popup_queue_cell_redraw (ecp); +} diff --git a/widgets/table/e-cell-popup.h b/widgets/table/e-cell-popup.h index 8f89ddf9ef..eba0d941df 100644 --- a/widgets/table/e-cell-popup.h +++ b/widgets/table/e-cell-popup.h @@ -82,12 +82,16 @@ struct _ECellPopupView { }; -GtkType e_cell_popup_get_type (void); -ECell *e_cell_popup_new (void); +GtkType e_cell_popup_get_type (void); +ECell *e_cell_popup_new (void); /* Get and set the child ECell. */ -ECell *e_cell_popup_get_child (ECellPopup *ecp); -void e_cell_popup_set_child (ECellPopup *ecp, - ECell *child); +ECell *e_cell_popup_get_child (ECellPopup *ecp); +void e_cell_popup_set_child (ECellPopup *ecp, + ECell *child); + +void e_cell_popup_set_shown (ECellPopup *ecp, + gboolean shown); +void e_cell_popup_queue_cell_redraw (ECellPopup *ecp); #endif /* _E_CELL_POPUP_H_ */ |