mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-08 19:50:21 +00:00
search-bar: make independent of toolbar styling
Don't use a toolbar as an implementation detail of the search bar to make styling them differently a bit easier.
This commit is contained in:
parent
d5c36c62ed
commit
f2d229e2ce
@ -30,8 +30,6 @@
|
|||||||
#include "gtkentry.h"
|
#include "gtkentry.h"
|
||||||
#include "gtkentryprivate.h"
|
#include "gtkentryprivate.h"
|
||||||
#include "gtkintl.h"
|
#include "gtkintl.h"
|
||||||
#include "gtktoolbar.h"
|
|
||||||
#include "gtktoolitem.h"
|
|
||||||
#include "gtkstylecontext.h"
|
#include "gtkstylecontext.h"
|
||||||
#include "gtksearchbar.h"
|
#include "gtksearchbar.h"
|
||||||
|
|
||||||
@ -71,7 +69,7 @@
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
/* Template widgets */
|
/* Template widgets */
|
||||||
GtkWidget *revealer;
|
GtkWidget *revealer;
|
||||||
GtkWidget *toolbar;
|
GtkWidget *tool_box;
|
||||||
GtkWidget *box_center;
|
GtkWidget *box_center;
|
||||||
GtkWidget *close_button;
|
GtkWidget *close_button;
|
||||||
|
|
||||||
@ -286,7 +284,7 @@ gtk_search_bar_add (GtkContainer *container,
|
|||||||
/* When constructing the widget, we want the revealer to be added
|
/* When constructing the widget, we want the revealer to be added
|
||||||
* as the first child of the search bar, as an implementation detail.
|
* as the first child of the search bar, as an implementation detail.
|
||||||
* After that, the child added by the application should be added
|
* After that, the child added by the application should be added
|
||||||
* to the toolbar's box_center.
|
* to box_center.
|
||||||
*/
|
*/
|
||||||
if (priv->box_center == NULL)
|
if (priv->box_center == NULL)
|
||||||
{
|
{
|
||||||
@ -364,6 +362,25 @@ gtk_search_bar_dispose (GObject *object)
|
|||||||
G_OBJECT_CLASS (gtk_search_bar_parent_class)->dispose (object);
|
G_OBJECT_CLASS (gtk_search_bar_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gtk_search_bar_draw (GtkWidget *widget,
|
||||||
|
cairo_t *cr)
|
||||||
|
{
|
||||||
|
gint width, height;
|
||||||
|
GtkStyleContext *context;
|
||||||
|
|
||||||
|
width = gtk_widget_get_allocated_width (widget);
|
||||||
|
height = gtk_widget_get_allocated_height (widget);
|
||||||
|
context = gtk_widget_get_style_context (widget);
|
||||||
|
|
||||||
|
gtk_render_background (context, cr, 0, 0, width, height);
|
||||||
|
gtk_render_frame (context, cr, 0, 0, width, height);
|
||||||
|
|
||||||
|
GTK_WIDGET_CLASS (gtk_search_bar_parent_class)->draw (widget, cr);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_search_bar_class_init (GtkSearchBarClass *klass)
|
gtk_search_bar_class_init (GtkSearchBarClass *klass)
|
||||||
{
|
{
|
||||||
@ -374,6 +391,7 @@ gtk_search_bar_class_init (GtkSearchBarClass *klass)
|
|||||||
object_class->dispose = gtk_search_bar_dispose;
|
object_class->dispose = gtk_search_bar_dispose;
|
||||||
object_class->set_property = gtk_search_bar_set_property;
|
object_class->set_property = gtk_search_bar_set_property;
|
||||||
object_class->get_property = gtk_search_bar_get_property;
|
object_class->get_property = gtk_search_bar_get_property;
|
||||||
|
widget_class->draw = gtk_search_bar_draw;
|
||||||
|
|
||||||
container_class->add = gtk_search_bar_add;
|
container_class->add = gtk_search_bar_add;
|
||||||
|
|
||||||
@ -404,7 +422,7 @@ gtk_search_bar_class_init (GtkSearchBarClass *klass)
|
|||||||
g_object_class_install_properties (object_class, LAST_PROPERTY, widget_props);
|
g_object_class_install_properties (object_class, LAST_PROPERTY, widget_props);
|
||||||
|
|
||||||
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/gtksearchbar.ui");
|
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/gtksearchbar.ui");
|
||||||
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkSearchBar, toolbar);
|
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkSearchBar, tool_box);
|
||||||
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkSearchBar, revealer);
|
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkSearchBar, revealer);
|
||||||
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkSearchBar, box_center);
|
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkSearchBar, box_center);
|
||||||
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkSearchBar, close_button);
|
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkSearchBar, close_button);
|
||||||
@ -414,10 +432,11 @@ static void
|
|||||||
gtk_search_bar_init (GtkSearchBar *bar)
|
gtk_search_bar_init (GtkSearchBar *bar)
|
||||||
{
|
{
|
||||||
GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
|
GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
|
||||||
|
GtkStyleContext *context;
|
||||||
|
|
||||||
gtk_widget_init_template (GTK_WIDGET (bar));
|
gtk_widget_init_template (GTK_WIDGET (bar));
|
||||||
|
|
||||||
gtk_widget_show_all (priv->toolbar);
|
gtk_widget_show_all (priv->tool_box);
|
||||||
|
|
||||||
g_signal_connect (priv->revealer, "notify::reveal-child",
|
g_signal_connect (priv->revealer, "notify::reveal-child",
|
||||||
G_CALLBACK (reveal_child_changed_cb), bar);
|
G_CALLBACK (reveal_child_changed_cb), bar);
|
||||||
@ -425,6 +444,11 @@ gtk_search_bar_init (GtkSearchBar *bar)
|
|||||||
gtk_widget_set_no_show_all (priv->close_button, TRUE);
|
gtk_widget_set_no_show_all (priv->close_button, TRUE);
|
||||||
g_signal_connect (priv->close_button, "clicked",
|
g_signal_connect (priv->close_button, "clicked",
|
||||||
G_CALLBACK (close_button_clicked_cb), bar);
|
G_CALLBACK (close_button_clicked_cb), bar);
|
||||||
|
|
||||||
|
context = gtk_widget_get_style_context (GTK_WIDGET (bar));
|
||||||
|
gtk_style_context_add_class (context, "search-bar");
|
||||||
|
gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -8,99 +8,82 @@
|
|||||||
<object class="GtkRevealer" id="revealer">
|
<object class="GtkRevealer" id="revealer">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="vexpand">False</property>
|
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
|
<property name="vexpand">False</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkToolbar" id="toolbar">
|
<object class="GtkBox" id="tool_box">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<style>
|
<property name="border_width">5</property>
|
||||||
<class name="primary-toolbar"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkToolItem" id="tool_item">
|
<object class="GtkBox" id="box_left">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="tool_box">
|
<placeholder/>
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="box_left">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="hexpand">True</property>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="box_center">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="box_right">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="halign">end</property>
|
|
||||||
<property name="hexpand">True</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="close_button">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="relief">none</property>
|
|
||||||
<style>
|
|
||||||
<class name="raised"/>
|
|
||||||
<class name="close"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="close_image">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">window-close-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="box_center">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="box_right">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="close_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="relief">none</property>
|
||||||
|
<style>
|
||||||
|
<class name="raised"/>
|
||||||
|
<class name="close"/>
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage" id="close_image">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="icon_name">window-close-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
Loading…
Reference in New Issue
Block a user