summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-09-24 14:30:40 -0400
committerMatthias Clasen <mclasen@redhat.com>2020-09-24 14:30:40 -0400
commite70ed905d19acba7f93ffb9586d8166b4dc15984 (patch)
tree46131bb2d6e63e3273f8f8ec45ce1c7bb6e4b28c
parent7eb0ae39c5549bfaa4efb879ef49b1186f48c5c1 (diff)
downloadgtk+-e70ed905d19acba7f93ffb9586d8166b4dc15984.tar.gz
columview: Don't overdraw
Just always tell the title and cell widgets to clip their children to the right size. Otherwise we risk things getting out of sync and unintended overdraw. Fixes: #3179
-rw-r--r--gtk/gtkcolumnviewcell.c1
-rw-r--r--gtk/gtkcolumnviewcolumn.c18
-rw-r--r--gtk/gtkcolumnviewtitle.c2
3 files changed, 3 insertions, 18 deletions
diff --git a/gtk/gtkcolumnviewcell.c b/gtk/gtkcolumnviewcell.c
index 0881a6ccd3..0b94fe7bcd 100644
--- a/gtk/gtkcolumnviewcell.c
+++ b/gtk/gtkcolumnviewcell.c
@@ -221,6 +221,7 @@ gtk_column_view_cell_init (GtkColumnViewCell *self)
GtkWidget *widget = GTK_WIDGET (self);
gtk_widget_set_focusable (widget, FALSE);
+ gtk_widget_set_overflow (widget, GTK_OVERFLOW_HIDDEN);
/* FIXME: Figure out if setting the manager class to INVALID should work */
gtk_widget_set_layout_manager (widget, NULL);
widget->priv->resize_func = gtk_column_view_cell_resize_func;
diff --git a/gtk/gtkcolumnviewcolumn.c b/gtk/gtkcolumnviewcolumn.c
index 4c738fd6fc..c1e7c18317 100644
--- a/gtk/gtkcolumnviewcolumn.c
+++ b/gtk/gtkcolumnviewcolumn.c
@@ -994,8 +994,6 @@ void
gtk_column_view_column_set_fixed_width (GtkColumnViewColumn *self,
int fixed_width)
{
- GtkOverflow overflow;
-
g_return_if_fail (GTK_IS_COLUMN_VIEW_COLUMN (self));
g_return_if_fail (fixed_width >= -1);
@@ -1004,22 +1002,6 @@ gtk_column_view_column_set_fixed_width (GtkColumnViewColumn *self,
self->fixed_width = fixed_width;
- if (fixed_width > -1)
- overflow = GTK_OVERFLOW_HIDDEN;
- else
- overflow = GTK_OVERFLOW_VISIBLE;
-
- if (self->header &&
- overflow != gtk_widget_get_overflow (GTK_WIDGET (self->header)))
- {
- GtkColumnViewCell *cell;
-
- gtk_widget_set_overflow (GTK_WIDGET (self->header), overflow);
-
- for (cell = self->first_cell; cell; cell = gtk_column_view_cell_get_next (cell))
- gtk_widget_set_overflow (GTK_WIDGET (cell), overflow);
- }
-
gtk_column_view_column_queue_resize (self);
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_FIXED_WIDTH]);
diff --git a/gtk/gtkcolumnviewtitle.c b/gtk/gtkcolumnviewtitle.c
index bc06da1670..9291bd01b6 100644
--- a/gtk/gtkcolumnviewtitle.c
+++ b/gtk/gtkcolumnviewtitle.c
@@ -256,6 +256,8 @@ gtk_column_view_title_init (GtkColumnViewTitle *self)
widget->priv->resize_func = gtk_column_view_title_resize_func;
+ gtk_widget_set_overflow (widget, GTK_OVERFLOW_HIDDEN);
+
self->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_widget_set_parent (self->box, widget);