[gnumeric] Adjust cell comment display. [#698519]



commit 1fb55e87c0ba1d1c86b1ffb7675ecc48c6b681ce
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date:   Sat Jun 1 22:18:42 2013 -0600

    Adjust cell comment display. [#698519]
    
    2013-06-01  Andreas J. Guelzow <aguelzow pyrshep ca>
    
        * src/sheet-control-gui.c (scg_comment_display_filter_cb): new
        (scg_comment_display): adjust background and fontcolor if necessary

 ChangeLog               |    5 ++
 NEWS                    |    1 +
 src/sheet-control-gui.c |  149 ++++++++++++++++++++++++++++-------------------
 3 files changed, 95 insertions(+), 60 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index bfba320..d1ad4c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2013-06-01  Andreas J. Guelzow <aguelzow pyrshep ca>
 
+       * src/sheet-control-gui.c (scg_comment_display_filter_cb): new
+       (scg_comment_display): adjust background and fontcolor if necessary
+
+2013-06-01  Andreas J. Guelzow <aguelzow pyrshep ca>
+
        * src/item-grid.c (cb_cursor_come_to_rest): gnumeric_position_tooltip needs the
        tooltip size, so load the text before calling it.
 
diff --git a/NEWS b/NEWS
index 4b849e4..d5a0572 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,7 @@ Andreas:
        * Add a keyboard shortcut to jump to the current cell indicator.
          [#699710]
        * Fix placement of hyperlink tooltip. [#701436]
+       * Adjust cell comment display. [#698519]
 
 Darrell Tangman:
        * Update documentation for Edit and Insert menus. [#700596]
diff --git a/src/sheet-control-gui.c b/src/sheet-control-gui.c
index 12fe593..b48a31b 100644
--- a/src/sheet-control-gui.c
+++ b/src/sheet-control-gui.c
@@ -350,7 +350,7 @@ scg_setup_group_buttons (SheetControlGUI *scg, unsigned max_outline,
 }
 
 static void
-scg_resize (SheetControlGUI *scg, gboolean force_scroll)
+scg_resize (SheetControlGUI *scg, G_GNUC_UNUSED gboolean force_scroll)
 {
        Sheet const *sheet = scg_sheet (scg);
        GnmPane *pane = scg_pane (scg, 0);
@@ -623,7 +623,7 @@ cb_select_all_btn_draw (GtkWidget *widget, cairo_t *cr, SheetControlGUI *scg)
 }
 
 static gboolean
-cb_select_all_btn_event (GtkWidget *widget, GdkEvent *event, SheetControlGUI *scg)
+cb_select_all_btn_event (G_GNUC_UNUSED GtkWidget *widget, GdkEvent *event, SheetControlGUI *scg)
 {
        if (event->type == GDK_BUTTON_PRESS) {
                scg_select_all (scg);
@@ -1425,7 +1425,7 @@ cb_resize_pane_motion (GtkPaned *p,
 }
 
 static void
-cb_check_resize (GtkPaned *p, GtkAllocation *allocation,
+cb_check_resize (GtkPaned *p, G_GNUC_UNUSED GtkAllocation *allocation,
                 SheetControlGUI *scg)
 {
        gboolean const vert = (p == scg->vpane);
@@ -1461,7 +1461,7 @@ idle_resize (struct resize_closure *r)
 }
 
 static void
-cb_canvas_resize (GtkWidget *w, GtkAllocation *allocation,
+cb_canvas_resize (GtkWidget *w, G_GNUC_UNUSED GtkAllocation *allocation,
                 SheetControlGUI *scg)
 {
        struct resize_closure *r = g_new (struct resize_closure, 1);
@@ -1481,7 +1481,7 @@ post_create_cb (SheetControlGUI *scg)
 }
 
 static gboolean
-sheet_object_key_pressed (GtkWidget *w, GdkEventKey *event, SheetControlGUI *scg)
+sheet_object_key_pressed (G_GNUC_UNUSED GtkWidget *w, GdkEventKey *event, SheetControlGUI *scg)
 {
        Sheet *sheet = scg_sheet (scg);
        WorkbookControl * wbc = scg_wbc (scg);
@@ -2123,120 +2123,120 @@ scg_context_menu (SheetControlGUI *scg, GdkEventButton *event,
 
        static GnumericPopupMenuElement popup_elements[] = {
                { N_("Cu_t"),           GTK_STOCK_CUT,
-                   0, 0, CONTEXT_CUT },
+                   0, 0, CONTEXT_CUT, NULL },
                { N_("_Copy"),          GTK_STOCK_COPY,
-                   0, 0, CONTEXT_COPY },
+                   0, 0, CONTEXT_COPY, NULL },
                { N_("_Paste"),         GTK_STOCK_PASTE,
-                   0, 0, CONTEXT_PASTE },
+                   0, 0, CONTEXT_PASTE, NULL },
                { N_("Paste _Special"), NULL,
-                   0, CONTEXT_DISABLE_PASTE_SPECIAL, CONTEXT_PASTE_SPECIAL },
+                   0, CONTEXT_DISABLE_PASTE_SPECIAL, CONTEXT_PASTE_SPECIAL, NULL },
 
-               { "", NULL, 0, 0, 0 },
+               { "", NULL, 0, 0, 0, NULL },
 
                { N_("_Insert Cells..."),       NULL,
                    CONTEXT_DISPLAY_FOR_CELLS,
-                 CONTEXT_DISABLE_FOR_DISCONTIGUOUS_SELECTION, CONTEXT_INSERT },
+                 CONTEXT_DISABLE_FOR_DISCONTIGUOUS_SELECTION, CONTEXT_INSERT, NULL },
                { N_("_Delete Cells..."),       GTK_STOCK_DELETE,
                    CONTEXT_DISPLAY_FOR_CELLS,
-                 CONTEXT_DISABLE_FOR_DISCONTIGUOUS_SELECTION, CONTEXT_DELETE },
+                 CONTEXT_DISABLE_FOR_DISCONTIGUOUS_SELECTION, CONTEXT_DELETE, NULL },
                { N_("_Insert Column(s)"), "Gnumeric_ColumnAdd",
                    CONTEXT_DISPLAY_FOR_COLS,
                  CONTEXT_DISABLE_FOR_DISCONTIGUOUS_SELECTION,
-                 CONTEXT_INSERT },
+                 CONTEXT_INSERT, NULL },
                { N_("_Delete Column(s)"), "Gnumeric_ColumnDelete",
                    CONTEXT_DISPLAY_FOR_COLS,
                  CONTEXT_DISABLE_FOR_DISCONTIGUOUS_SELECTION,
-                 CONTEXT_DELETE },
+                 CONTEXT_DELETE, NULL },
                { N_("_Insert Row(s)"), "Gnumeric_RowAdd",
                    CONTEXT_DISPLAY_FOR_ROWS,
                  CONTEXT_DISABLE_FOR_DISCONTIGUOUS_SELECTION,
-                 CONTEXT_INSERT },
+                 CONTEXT_INSERT, NULL },
                { N_("_Delete Row(s)"), "Gnumeric_RowDelete",
                    CONTEXT_DISPLAY_FOR_ROWS,
                  CONTEXT_DISABLE_FOR_DISCONTIGUOUS_SELECTION,
-                 CONTEXT_DELETE },
+                 CONTEXT_DELETE, NULL },
 
                { N_("Clear Co_ntents"), GTK_STOCK_CLEAR,
-                   0, 0, CONTEXT_CLEAR_CONTENT },
+                   0, 0, CONTEXT_CLEAR_CONTENT, NULL },
 
-               { "", NULL, CONTEXT_DISPLAY_FOR_CELLS, 0, 0 },
+               { "", NULL, CONTEXT_DISPLAY_FOR_CELLS, 0, 0, NULL },
 
                { N_("Add _Comment..."),          "Gnumeric_CommentAdd",
-                   CONTEXT_DISPLAY_WITHOUT_COMMENT, 0, CONTEXT_COMMENT_ADD },
+                   CONTEXT_DISPLAY_WITHOUT_COMMENT, 0, CONTEXT_COMMENT_ADD, NULL },
                { N_("Edit Co_mment..."),"Gnumeric_CommentEdit",
-                   CONTEXT_DISPLAY_WITH_COMMENT, 0, CONTEXT_COMMENT_EDIT },
+                   CONTEXT_DISPLAY_WITH_COMMENT, 0, CONTEXT_COMMENT_EDIT, NULL },
                { N_("_Remove Comments"),         "Gnumeric_CommentDelete",
-                   CONTEXT_DISPLAY_WITH_COMMENT_IN_RANGE, 0, CONTEXT_COMMENT_REMOVE },
+                   CONTEXT_DISPLAY_WITH_COMMENT_IN_RANGE, 0, CONTEXT_COMMENT_REMOVE, NULL },
 
                { N_("Add _Hyperlink..."),        "Gnumeric_Link_Add",
                    CONTEXT_DISPLAY_WITHOUT_HYPERLINK, 0,
-                   CONTEXT_HYPERLINK_ADD },
+                   CONTEXT_HYPERLINK_ADD, NULL },
                { N_("Edit _Hyperlink..."),       "Gnumeric_Link_Edit",
                    CONTEXT_DISPLAY_WITH_HYPERLINK, 0,
-                   CONTEXT_HYPERLINK_EDIT },
+                   CONTEXT_HYPERLINK_EDIT, NULL },
                { N_("_Remove Hyperlink"),        "Gnumeric_Link_Delete",
                    CONTEXT_DISPLAY_WITH_HYPERLINK_IN_RANGE, 0,
-                   CONTEXT_HYPERLINK_REMOVE },
+                   CONTEXT_HYPERLINK_REMOVE, NULL },
 
-               { "", NULL, 0, 0, 0 },
+               { "", NULL, 0, 0, 0, NULL },
 
                { N_("_Edit DataSlicer"),       NULL,
                     CONTEXT_DISPLAY_WITH_DATA_SLICER, 0,
-                    CONTEXT_DATA_SLICER_EDIT },
+                    CONTEXT_DATA_SLICER_EDIT, NULL },
                { N_("_Refresh DataSlicer"),    NULL,
                     CONTEXT_DISPLAY_WITH_DATA_SLICER, 0,
-                    CONTEXT_DATA_SLICER_REFRESH },
+                    CONTEXT_DATA_SLICER_REFRESH, NULL },
 
                { N_("DataSlicer Field _Order "), NULL,
                     CONTEXT_DISPLAY_WITH_DATA_SLICER_ROW | CONTEXT_DISPLAY_WITH_DATA_SLICER_COL, 0,
-                    -1 },      /* start sub menu */
+                    -1, NULL },        /* start sub menu */
                { N_("Left"), GTK_STOCK_GO_BACK,
                     CONTEXT_DISPLAY_WITH_DATA_SLICER_ROW, 0,
-                    CONTEXT_DATA_SLICER_REFRESH },
+                    CONTEXT_DATA_SLICER_REFRESH, NULL },
                { N_("Right"), GTK_STOCK_GO_FORWARD,
                     CONTEXT_DISPLAY_WITH_DATA_SLICER_ROW, 0,
-                    CONTEXT_DATA_SLICER_REFRESH },
+                    CONTEXT_DATA_SLICER_REFRESH, NULL },
                { N_("Up"), GTK_STOCK_GO_UP,
                     CONTEXT_DISPLAY_WITH_DATA_SLICER_COL, 0,
-                    CONTEXT_DATA_SLICER_REFRESH },
+                    CONTEXT_DATA_SLICER_REFRESH, NULL },
                { N_("Down"), GTK_STOCK_GO_DOWN,
                     CONTEXT_DISPLAY_WITH_DATA_SLICER_COL, 0,
-                    CONTEXT_DATA_SLICER_REFRESH },
+                    CONTEXT_DATA_SLICER_REFRESH, NULL },
                { "",   NULL,
                     CONTEXT_DISPLAY_WITH_DATA_SLICER_ROW | CONTEXT_DISPLAY_WITH_DATA_SLICER_COL, 0,
-                    -1 },      /* end sub menu */
+                    -1, NULL },        /* end sub menu */
 
                { N_("_Format All Cells..."), GTK_STOCK_PROPERTIES,
-                   0, 0, CONTEXT_FORMAT_CELL },
+                   0, 0, CONTEXT_FORMAT_CELL, NULL },
                { N_("C_onditional Formatting..."), GTK_STOCK_PROPERTIES,
-                   0, 0, CONTEXT_FORMAT_CELL_COND },
-               { N_("Cell"), NULL, 0, 0, -1},/* start sub menu */
+                   0, 0, CONTEXT_FORMAT_CELL_COND, NULL },
+               { N_("Cell"), NULL, 0, 0, -1, NULL},/* start sub menu */
                { N_("_Merge"), "Gnumeric_MergeCells",   0,
-                 CONTEXT_DISABLE_FOR_ONLYMERGES, CONTEXT_CELL_MERGE },
+                 CONTEXT_DISABLE_FOR_ONLYMERGES, CONTEXT_CELL_MERGE, NULL },
                { N_("_Unmerge"), "Gnumeric_SplitCells",   0,
-                 CONTEXT_DISABLE_FOR_NOMERGES, CONTEXT_CELL_UNMERGE },
-               { N_("Auto Fit _Width"), "Gnumeric_ColumnSize",   0, 0, CONTEXT_CELL_AUTOFIT_WIDTH },
-               { N_("Auto Fit _Height"), "Gnumeric_RowSize",   0, 0, CONTEXT_CELL_AUTOFIT_HEIGHT },
-               { N_(""), NULL, 0, 0, -1},/* end sub menu */
+                 CONTEXT_DISABLE_FOR_NOMERGES, CONTEXT_CELL_UNMERGE, NULL },
+               { N_("Auto Fit _Width"), "Gnumeric_ColumnSize",   0, 0, CONTEXT_CELL_AUTOFIT_WIDTH, NULL },
+               { N_("Auto Fit _Height"), "Gnumeric_RowSize",   0, 0, CONTEXT_CELL_AUTOFIT_HEIGHT, NULL },
+               { "", NULL, 0, 0, -1, NULL},/* end sub menu */
 
 
                /* Column specific (Note some labels duplicate row labels) */
-               { N_("Column"), NULL, 0, 0, -1},/* start sub menu */
-               { N_("_Width..."), "Gnumeric_ColumnSize",   0, 0, CONTEXT_COL_WIDTH },
-               { N_("_Auto Fit Width"), "Gnumeric_ColumnSize",   0, 0, CONTEXT_COL_AUTOFIT },
-               { N_("_Hide"),     "Gnumeric_ColumnHide",   0, CONTEXT_DISABLE_FOR_ALL_COLS, CONTEXT_COL_HIDE 
},
-               { N_("_Unhide"),   "Gnumeric_ColumnUnhide", 0, 0, CONTEXT_COL_UNHIDE },
-               { N_(""), NULL, 0, 0, -1},/* end sub menu */
+               { N_("Column"), NULL, 0, 0, -1, NULL},/* start sub menu */
+               { N_("_Width..."), "Gnumeric_ColumnSize",   0, 0, CONTEXT_COL_WIDTH, NULL },
+               { N_("_Auto Fit Width"), "Gnumeric_ColumnSize",   0, 0, CONTEXT_COL_AUTOFIT, NULL },
+               { N_("_Hide"),     "Gnumeric_ColumnHide",   0, CONTEXT_DISABLE_FOR_ALL_COLS, 
CONTEXT_COL_HIDE, NULL },
+               { N_("_Unhide"),   "Gnumeric_ColumnUnhide", 0, 0, CONTEXT_COL_UNHIDE, NULL },
+               { "", NULL, 0, 0, -1, NULL},/* end sub menu */
 
                /* Row specific (Note some labels duplicate col labels) */
-               { N_("Row"), NULL, 0, 0, -1},/* start sub menu */
-               { N_("Hei_ght..."), "Gnumeric_RowSize",   0, 0, CONTEXT_ROW_HEIGHT },
-               { N_("_Auto Fit Height"), "Gnumeric_RowSize",   0, 0, CONTEXT_ROW_AUTOFIT },
-               { N_("_Hide"),      "Gnumeric_RowHide",   0, CONTEXT_DISABLE_FOR_ALL_ROWS, CONTEXT_ROW_HIDE },
-               { N_("_Unhide"),    "Gnumeric_RowUnhide", 0, 0, CONTEXT_ROW_UNHIDE },
-               { N_(""), NULL, 0, 0, -1},/* end sub menu */
-
-               { NULL, NULL, 0, 0, 0 },
+               { N_("Row"), NULL, 0, 0, -1, NULL},/* start sub menu */
+               { N_("Hei_ght..."), "Gnumeric_RowSize",   0, 0, CONTEXT_ROW_HEIGHT, NULL },
+               { N_("_Auto Fit Height"), "Gnumeric_RowSize",   0, 0, CONTEXT_ROW_AUTOFIT, NULL },
+               { N_("_Hide"),      "Gnumeric_RowHide",   0, CONTEXT_DISABLE_FOR_ALL_ROWS, CONTEXT_ROW_HIDE, 
NULL },
+               { N_("_Unhide"),    "Gnumeric_RowUnhide", 0, 0, CONTEXT_ROW_UNHIDE, NULL },
+               { "", NULL, 0, 0, -1, NULL},/* end sub menu */
+
+               { NULL, NULL, 0, 0, 0, NULL },
        };
 
        /* row and column specific operations */
@@ -2418,7 +2418,7 @@ scg_context_menu (SheetControlGUI *scg, GdkEventButton *event,
 }
 
 static gboolean
-cb_redraw_sel (SheetView *sv, GnmRange const *r, gpointer user_data)
+cb_redraw_sel (G_GNUC_UNUSED SheetView *sv, GnmRange const *r, gpointer user_data)
 {
        SheetControl *sc = user_data;
        scg_redraw_range (sc, r);
@@ -2555,7 +2555,7 @@ scg_object_select (SheetControlGUI *scg, SheetObject *so)
 }
 
 static void
-cb_scg_object_unselect (SheetObject *so, double *coords, SheetControlGUI *scg)
+cb_scg_object_unselect (SheetObject *so, G_GNUC_UNUSED double *coords, SheetControlGUI *scg)
 {
        SCG_FOREACH_PANE (scg, pane, gnm_pane_object_unselect (pane, so););
        g_signal_handlers_disconnect_by_func (so,
@@ -2999,6 +2999,15 @@ scg_object_anchor_to_coords (SheetControlGUI const *scg,
 
 /***************************************************************************/
 
+static gboolean
+scg_comment_display_filter_cb (PangoAttribute *attribute, gboolean *state)
+{
+       if (attribute->klass->type == PANGO_ATTR_FOREGROUND &&
+           attribute->start_index != attribute->end_index)
+               *state = TRUE;
+       return FALSE;
+}
+
 /**
  * scg_comment_display :
  * @scg: The SheetControl
@@ -3062,7 +3071,27 @@ scg_comment_display (SheetControlGUI *scg, GnmComment *cc,
                }
 
                label = gtk_label_new (comment_text);
-               gtk_label_set_attributes (GTK_LABEL (label), comment_markup);
+               if (comment_markup) {
+                       gboolean font_colour_set = FALSE;
+                       pango_attr_list_filter 
+                               (comment_markup,
+                                (PangoAttrFilterFunc) scg_comment_display_filter_cb,
+                                &font_colour_set);
+                       if (font_colour_set) {
+                               /* Imported comments may have a font colour set. */
+                               /* If that is the case, we set a background colour. */
+                               guint length = strlen (comment_text);
+                               PangoAttribute *attr = pango_attr_foreground_new (0,0,0);
+                               attr->start_index = 0;
+                               attr->end_index = length;
+                               pango_attr_list_insert_before (comment_markup, attr);
+                               attr = pango_attr_background_new (255*255, 255*255, 224*255 );
+                               attr->start_index = 0;
+                               attr->end_index = length;
+                               pango_attr_list_insert_before (comment_markup, attr);
+                       }
+                       gtk_label_set_attributes (GTK_LABEL (label), comment_markup);
+               }
                g_free (comment_text);
                gtk_widget_set_halign (label, GTK_ALIGN_START);
                gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
@@ -4083,7 +4112,7 @@ scg_drag_data_received (SheetControlGUI *scg, GtkWidget *source_widget,
 }
 
 static void
-scg_drag_send_image (SheetControlGUI *scg,
+scg_drag_send_image (G_GNUC_UNUSED SheetControlGUI *scg,
                     GtkSelectionData *selection_data,
                     GSList *objects,
                     gchar const *mime_type)
@@ -4128,7 +4157,7 @@ scg_drag_send_image (SheetControlGUI *scg,
 }
 
 static void
-scg_drag_send_graph (SheetControlGUI *scg,
+scg_drag_send_graph (G_GNUC_UNUSED SheetControlGUI *scg,
                     GtkSelectionData *selection_data,
                     GSList *objects,
                     gchar const *mime_type)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]