Bug 553578 - tabs are not drawn correctly
2008-09-26 Matthias Clasen <mclasen@redhat.com> Bug 553578 - tabs are not drawn correctly * gtk/gtknotebook.c: Track the visibility state of notebook tabs between allocations so that we know to redraw the tab labels if tabs are hidden and shown without changing position. Reported by Marek Kašík, patch by Owen Taylor. svn path=/branches/gtk-2-14/; revision=21526
This commit is contained in:
committed by
Matthias Clasen
parent
e1040c7d22
commit
4b5d2bd0db
11
ChangeLog
11
ChangeLog
@@ -1,3 +1,14 @@
|
||||
2008-09-26 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
Merged from trunk:
|
||||
|
||||
Bug 553578 - tabs are not drawn correctly
|
||||
|
||||
* gtk/gtknotebook.c: Track the visibility state of notebook tabs
|
||||
between allocations so that we know to redraw the tab labels if
|
||||
tabs are hidden and shown without changing position.
|
||||
Reported by Marek Kašík, patch by Owen Taylor.
|
||||
|
||||
2008-09-26 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
Merged from trunk:
|
||||
|
||||
@@ -153,6 +153,11 @@ struct _GtkNotebookPage
|
||||
guint reorderable : 1;
|
||||
guint detachable : 1;
|
||||
|
||||
/* if true, the tab label was visible on last allocation; we track this so
|
||||
* that we know to redraw the tab area if a tab label was hidden then shown
|
||||
* without changing position */
|
||||
guint tab_allocated_visible : 1;
|
||||
|
||||
GtkRequisition requisition;
|
||||
GtkAllocation allocation;
|
||||
|
||||
@@ -5556,9 +5561,15 @@ gtk_notebook_page_allocate (GtkNotebook *notebook,
|
||||
gint tab_curvature;
|
||||
gint tab_pos = get_effective_tab_pos (notebook);
|
||||
gboolean tab_allocation_changed;
|
||||
gboolean was_visible = page->tab_allocated_visible;
|
||||
|
||||
if (!page->tab_label)
|
||||
return FALSE;
|
||||
if (!page->tab_label ||
|
||||
!GTK_WIDGET_VISIBLE (page->tab_label) ||
|
||||
!gtk_widget_get_child_visible (page->tab_label))
|
||||
{
|
||||
page->tab_allocated_visible = FALSE;
|
||||
return was_visible;
|
||||
}
|
||||
|
||||
xthickness = widget->style->xthickness;
|
||||
ythickness = widget->style->ythickness;
|
||||
@@ -5630,6 +5641,12 @@ gtk_notebook_page_allocate (GtkNotebook *notebook,
|
||||
|
||||
gtk_widget_size_allocate (page->tab_label, &child_allocation);
|
||||
|
||||
if (!was_visible)
|
||||
{
|
||||
page->tab_allocated_visible = TRUE;
|
||||
tab_allocation_changed = TRUE;
|
||||
}
|
||||
|
||||
return tab_allocation_changed;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user