diff options
Diffstat (limited to 'widgets/table')
-rw-r--r-- | widgets/table/e-cell-text.c | 8 | ||||
-rw-r--r-- | widgets/table/e-cell-tree.c | 12 | ||||
-rw-r--r-- | widgets/table/e-cell.c | 6 | ||||
-rw-r--r-- | widgets/table/e-cell.h | 4 | ||||
-rw-r--r-- | widgets/table/e-table-item.c | 1 |
5 files changed, 14 insertions, 17 deletions
diff --git a/widgets/table/e-cell-text.c b/widgets/table/e-cell-text.c index 05742b6e70..5a1251cf01 100644 --- a/widgets/table/e-cell-text.c +++ b/widgets/table/e-cell-text.c @@ -1342,6 +1342,7 @@ ect_show_tooltip (ECellView *ecell_view, int model_col, int view_col, int row, + int col_width, ETableTooltip *tooltip) { ECellTextView *text_view = (ECellTextView *) ecell_view; @@ -1366,6 +1367,7 @@ ect_show_tooltip (ECellView *ecell_view, tooltip->timer = 0; build_current_cell (&cell, text_view, model_col, view_col, row); + cell.width = col_width - 8; split_into_lines (&cell); calc_line_widths (&cell); @@ -2444,7 +2446,7 @@ calc_ellipsis (ECellTextView *text_view) EFont *font; font = text_view->font; - if (font) + if (font) { text_view->ellipsis_width[E_FONT_PLAIN] = e_font_utf8_text_width (font, E_FONT_PLAIN, ect->ellipsis ? ect->ellipsis : "...", @@ -2453,6 +2455,7 @@ calc_ellipsis (ECellTextView *text_view) e_font_utf8_text_width (font, E_FONT_BOLD, ect->ellipsis ? ect->ellipsis : "...", ect->ellipsis ? strlen (ect->ellipsis) : 3); + } } /* Calculates the line widths (in pixels) of the text's splitted lines */ @@ -2493,8 +2496,9 @@ calc_line_widths (CurrentCell *cell) lines->ellipsis_length = 0; for (j = 0; j < lines->length; j++){ if (e_font_utf8_text_width (font, cell->style, lines->text, j) + - text_view->ellipsis_width[cell->style] <= cell->width) + text_view->ellipsis_width[cell->style] < cell->width) { lines->ellipsis_length = j; + } else break; } diff --git a/widgets/table/e-cell-tree.c b/widgets/table/e-cell-tree.c index 7390d0e284..6de490cd29 100644 --- a/widgets/table/e-cell-tree.c +++ b/widgets/table/e-cell-tree.c @@ -417,18 +417,12 @@ ect_max_width (ECellView *ecell_view, int model_col, int view_col) */ static void ect_show_tooltip (ECellView *ecell_view, int model_col, int view_col, int row, - ETableTooltip *tooltip) + int col_width, ETableTooltip *tooltip) { ECellTreeView *tree_view = (ECellTreeView *) ecell_view; ETreeModel *tree_model = e_cell_tree_get_tree_model (ecell_view->e_table_model, row); ETreePath *node = e_cell_tree_get_node (ecell_view->e_table_model, row); int offset = offset_of_node (tree_model, node); - - { - tooltip->x += offset; - e_cell_show_tooltip(tree_view->subcell_view, model_col, view_col, row, tooltip); - } -#if 0 GdkPixbuf *node_image; node_image = e_tree_model_icon_of_node (tree_model, node); @@ -436,12 +430,10 @@ ect_show_tooltip (ECellView *ecell_view, int model_col, int view_col, int row, offset += gdk_pixbuf_get_width (node_image); /* if the tooltip happened in the subcell, then handle it */ - if (tooltip->cx > offset) { tooltip->x += offset; - e_cell_show_tooltip (tree_view->subcell_view, model_col, view_col, row, tooltip); + e_cell_show_tooltip (tree_view->subcell_view, model_col, view_col, row, col_width - offset, tooltip); } -#endif } /* diff --git a/widgets/table/e-cell.c b/widgets/table/e-cell.c index 50e62656d0..b4f01d6dde 100644 --- a/widgets/table/e-cell.c +++ b/widgets/table/e-cell.c @@ -90,7 +90,7 @@ ec_leave_edit (ECellView *ecell_view, int model_col, int view_col, int row, void } static void -ec_show_tooltip (ECellView *ecell_view, int model_col, int view_col, int row, ETableTooltip *tooltip) +ec_show_tooltip (ECellView *ecell_view, int model_col, int view_col, int row, int col_width, ETableTooltip *tooltip) { /* Do nothing */ } @@ -332,8 +332,8 @@ e_cell_max_width (ECellView *ecell_view, int model_col, int view_col) void e_cell_show_tooltip (ECellView *ecell_view, int model_col, int view_col, - int row, ETableTooltip *tooltip) + int row, int col_width, ETableTooltip *tooltip) { return E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->show_tooltip - (ecell_view, model_col, view_col, row, tooltip); + (ecell_view, model_col, view_col, row, col_width, tooltip); } diff --git a/widgets/table/e-cell.h b/widgets/table/e-cell.h index 14bf8c1a35..faaf23b916 100644 --- a/widgets/table/e-cell.h +++ b/widgets/table/e-cell.h @@ -75,7 +75,7 @@ typedef struct { gdouble (*print_height) (ECellView *ecell_view, GnomePrintContext *context, int model_col, int view_col, int row, gdouble width); int (*max_width) (ECellView *ecell_view, int model_col, int view_col); - void (*show_tooltip) (ECellView *ecell_view, int model_col, int view_col, int row, ETableTooltip *tooltip); + void (*show_tooltip) (ECellView *ecell_view, int model_col, int view_col, int row, int col_width, ETableTooltip *tooltip); } ECellClass; GtkType e_cell_get_type (void); @@ -96,7 +96,7 @@ void e_cell_print (ECellView *ecell_view, GnomePrintContext *context, gdouble e_cell_print_height (ECellView *ecell_view, GnomePrintContext *context, int model_col, int view_col, int row, gdouble width); int e_cell_max_width (ECellView *ecell_view, int model_col, int view_col); -void e_cell_show_tooltip (ECellView *ecell_view, int model_col, int view_col, int row, ETableTooltip *tooltip); +void e_cell_show_tooltip (ECellView *ecell_view, int model_col, int view_col, int row, int col_width, ETableTooltip *tooltip); void e_cell_focus (ECellView *ecell_view, int model_col, int view_col, int row, int x1, int y1, int x2, int y2); void e_cell_unfocus (ECellView *ecell_view); diff --git a/widgets/table/e-table-item.c b/widgets/table/e-table-item.c index 2c66260ac5..c10d964b52 100644 --- a/widgets/table/e-table-item.c +++ b/widgets/table/e-table-item.c @@ -1481,6 +1481,7 @@ _do_tooltip (ETableItem *eti) view_to_model_col (eti, eti->tooltip->col), eti->tooltip->col, eti->tooltip->row, + eti->header->columns[eti->tooltip->col]->width, eti->tooltip); return FALSE; } |