forked from AuroraMiddleware/gtk
notebook: set tab position style class on the main frame
We want to have .top etc also on the notebook frame, not only on the header frame. The patch includes a reftest by Benjamin.
This commit is contained in:
parent
fea939b3d7
commit
c184458ab3
@ -1987,6 +1987,29 @@ _gtk_notebook_get_tab_flags (GtkNotebook *notebook,
|
|||||||
return flags;
|
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
|
static GtkStateFlags
|
||||||
notebook_tab_prepare_style_context (GtkNotebook *notebook,
|
notebook_tab_prepare_style_context (GtkNotebook *notebook,
|
||||||
GtkNotebookPage *page,
|
GtkNotebookPage *page,
|
||||||
@ -2013,24 +2036,7 @@ notebook_tab_prepare_style_context (GtkNotebook *notebook,
|
|||||||
flags = _gtk_notebook_get_tab_flags (notebook, page);
|
flags = _gtk_notebook_get_tab_flags (notebook, page);
|
||||||
|
|
||||||
gtk_style_context_add_region (context, GTK_STYLE_REGION_TAB, flags);
|
gtk_style_context_add_region (context, GTK_STYLE_REGION_TAB, flags);
|
||||||
|
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);
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
@ -5277,29 +5283,26 @@ gtk_notebook_paint (GtkWidget *widget,
|
|||||||
header_height = height;
|
header_height = height;
|
||||||
|
|
||||||
gtk_style_context_save (context);
|
gtk_style_context_save (context);
|
||||||
|
add_tab_position_style_class (context, tab_pos);
|
||||||
|
|
||||||
switch (tab_pos)
|
switch (tab_pos)
|
||||||
{
|
{
|
||||||
case GTK_POS_TOP:
|
case GTK_POS_TOP:
|
||||||
gtk_style_context_add_class (context, GTK_STYLE_CLASS_TOP);
|
|
||||||
y += page->allocation.height;
|
y += page->allocation.height;
|
||||||
height -= page->allocation.height;
|
height -= page->allocation.height;
|
||||||
header_height = page->allocation.height;
|
header_height = page->allocation.height;
|
||||||
break;
|
break;
|
||||||
case GTK_POS_BOTTOM:
|
case GTK_POS_BOTTOM:
|
||||||
gtk_style_context_add_class (context, GTK_STYLE_CLASS_BOTTOM);
|
|
||||||
height -= page->allocation.height;
|
height -= page->allocation.height;
|
||||||
header_y += height;
|
header_y += height;
|
||||||
header_height = page->allocation.height;
|
header_height = page->allocation.height;
|
||||||
break;
|
break;
|
||||||
case GTK_POS_LEFT:
|
case GTK_POS_LEFT:
|
||||||
gtk_style_context_add_class (context, GTK_STYLE_CLASS_LEFT);
|
|
||||||
x += page->allocation.width;
|
x += page->allocation.width;
|
||||||
width -= page->allocation.width;
|
width -= page->allocation.width;
|
||||||
header_width = page->allocation.width;
|
header_width = page->allocation.width;
|
||||||
break;
|
break;
|
||||||
case GTK_POS_RIGHT:
|
case GTK_POS_RIGHT:
|
||||||
gtk_style_context_add_class (context, GTK_STYLE_CLASS_RIGHT);
|
|
||||||
width -= page->allocation.width;
|
width -= page->allocation.width;
|
||||||
header_width = page->allocation.width;
|
header_width = page->allocation.width;
|
||||||
header_x += width;
|
header_x += width;
|
||||||
@ -5399,6 +5402,9 @@ gtk_notebook_paint (GtkWidget *widget,
|
|||||||
"has-tab-gap", &has_tab_gap,
|
"has-tab-gap", &has_tab_gap,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
if (priv->show_tabs)
|
||||||
|
add_tab_position_style_class (context, tab_pos);
|
||||||
|
|
||||||
if (priv->show_border)
|
if (priv->show_border)
|
||||||
gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME);
|
gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME);
|
||||||
|
|
||||||
|
28
testsuite/reftests/notebook-tab-position.css
Normal file
28
testsuite/reftests/notebook-tab-position.css
Normal file
@ -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;
|
||||||
|
}
|
38
testsuite/reftests/notebook-tab-position.ref.ui
Normal file
38
testsuite/reftests/notebook-tab-position.ref.ui
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Generated with glade 3.18.1 -->
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk+" version="3.12"/>
|
||||||
|
<object class="GtkWindow" id="window1">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="type">popup</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkNotebook" id="notebook1">
|
||||||
|
<property name="width_request">50</property>
|
||||||
|
<property name="height_request">50</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="tab_pos">bottom</property>
|
||||||
|
<style>
|
||||||
|
<class name="reference" />
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label2">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Contents</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child type="tab">
|
||||||
|
<object class="GtkLabel" id="label1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Tab</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="tab_fill">False</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
37
testsuite/reftests/notebook-tab-position.ui
Normal file
37
testsuite/reftests/notebook-tab-position.ui
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Generated with glade 3.18.1 -->
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk+" version="3.12"/>
|
||||||
|
<object class="GtkWindow" id="window1">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="type">popup</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkNotebook" id="notebook1">
|
||||||
|
<property name="width_request">50</property>
|
||||||
|
<property name="height_request">50</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<style>
|
||||||
|
<class name="test" />
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label2">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Contents</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child type="tab">
|
||||||
|
<object class="GtkLabel" id="label1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Tab</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="tab_fill">False</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
Loading…
Reference in New Issue
Block a user