diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c index c94f906f96..1e48671e9a 100644 --- a/gtk/gtknotebook.c +++ b/gtk/gtknotebook.c @@ -1987,6 +1987,29 @@ _gtk_notebook_get_tab_flags (GtkNotebook *notebook, return flags; } +static void +add_tab_position_style_class (GtkStyleContext *context, + gint tab_pos) +{ + switch (tab_pos) + { + case GTK_POS_TOP: + gtk_style_context_add_class (context, GTK_STYLE_CLASS_TOP); + break; + case GTK_POS_BOTTOM: + gtk_style_context_add_class (context, GTK_STYLE_CLASS_BOTTOM); + break; + case GTK_POS_LEFT: + gtk_style_context_add_class (context, GTK_STYLE_CLASS_LEFT); + break; + case GTK_POS_RIGHT: + gtk_style_context_add_class (context, GTK_STYLE_CLASS_RIGHT); + break; + default: + break; + } +} + static GtkStateFlags notebook_tab_prepare_style_context (GtkNotebook *notebook, GtkNotebookPage *page, @@ -2013,24 +2036,7 @@ notebook_tab_prepare_style_context (GtkNotebook *notebook, flags = _gtk_notebook_get_tab_flags (notebook, page); gtk_style_context_add_region (context, GTK_STYLE_REGION_TAB, flags); - - switch (tab_pos) - { - case GTK_POS_TOP: - gtk_style_context_add_class (context, GTK_STYLE_CLASS_TOP); - break; - case GTK_POS_BOTTOM: - gtk_style_context_add_class (context, GTK_STYLE_CLASS_BOTTOM); - break; - case GTK_POS_LEFT: - gtk_style_context_add_class (context, GTK_STYLE_CLASS_LEFT); - break; - case GTK_POS_RIGHT: - gtk_style_context_add_class (context, GTK_STYLE_CLASS_RIGHT); - break; - default: - break; - } + add_tab_position_style_class (context, tab_pos); return state; } @@ -5277,29 +5283,26 @@ gtk_notebook_paint (GtkWidget *widget, header_height = height; gtk_style_context_save (context); + add_tab_position_style_class (context, tab_pos); switch (tab_pos) { case GTK_POS_TOP: - gtk_style_context_add_class (context, GTK_STYLE_CLASS_TOP); y += page->allocation.height; height -= page->allocation.height; header_height = page->allocation.height; break; case GTK_POS_BOTTOM: - gtk_style_context_add_class (context, GTK_STYLE_CLASS_BOTTOM); height -= page->allocation.height; header_y += height; header_height = page->allocation.height; break; case GTK_POS_LEFT: - gtk_style_context_add_class (context, GTK_STYLE_CLASS_LEFT); x += page->allocation.width; width -= page->allocation.width; header_width = page->allocation.width; break; case GTK_POS_RIGHT: - gtk_style_context_add_class (context, GTK_STYLE_CLASS_RIGHT); width -= page->allocation.width; header_width = page->allocation.width; header_x += width; @@ -5399,6 +5402,9 @@ gtk_notebook_paint (GtkWidget *widget, "has-tab-gap", &has_tab_gap, NULL); + if (priv->show_tabs) + add_tab_position_style_class (context, tab_pos); + if (priv->show_border) gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); diff --git a/testsuite/reftests/notebook-tab-position.css b/testsuite/reftests/notebook-tab-position.css new file mode 100644 index 0000000000..c2fbc494dc --- /dev/null +++ b/testsuite/reftests/notebook-tab-position.css @@ -0,0 +1,28 @@ +@import "reset-to-defaults.css"; + +* { + color: transparent; +} + +.notebook.frame, +.notebook.header.frame { + border: 1px solid tomato; +} + +.reference.notebook.frame.bottom { + border-bottom-style: none; +} + +.reference.notebook.header.frame.bottom { + border-top-style: none; + border-bottom-style: solid; +} + +.test.notebook.frame.top { + border-top-style: none; +} + +.test.notebook.header.frame.top { + border-top-style: solid; + border-bottom-style: none; +} diff --git a/testsuite/reftests/notebook-tab-position.ref.ui b/testsuite/reftests/notebook-tab-position.ref.ui new file mode 100644 index 0000000000..53c9a5196e --- /dev/null +++ b/testsuite/reftests/notebook-tab-position.ref.ui @@ -0,0 +1,38 @@ + + + + + + False + popup + + + 50 + 50 + True + True + bottom + + + + True + False + Contents + + + + + True + False + Tab + + + False + + + + + + diff --git a/testsuite/reftests/notebook-tab-position.ui b/testsuite/reftests/notebook-tab-position.ui new file mode 100644 index 0000000000..ec9f1532d7 --- /dev/null +++ b/testsuite/reftests/notebook-tab-position.ui @@ -0,0 +1,37 @@ + + + + + + False + popup + + + 50 + 50 + True + True + + + + True + False + Contents + + + + + True + False + Tab + + + False + + + + + +