[gtk+] search-bar: make independent of toolbar styling
- From: William Jon McCann <mccann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] search-bar: make independent of toolbar styling
- Date: Thu, 10 Oct 2013 20:07:33 +0000 (UTC)
commit f2d229e2ce62bee336c791119d0ebcba8d14cb05
Author: William Jon McCann <william jon mccann gmail com>
Date: Wed Oct 9 19:10:40 2013 -0400
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.
gtk/gtksearchbar.c | 36 +++++++++++--
gtk/gtksearchbar.ui | 133 ++++++++++++++++++++++-----------------------------
2 files changed, 88 insertions(+), 81 deletions(-)
---
diff --git a/gtk/gtksearchbar.c b/gtk/gtksearchbar.c
index 417bc46..b68b057 100644
--- a/gtk/gtksearchbar.c
+++ b/gtk/gtksearchbar.c
@@ -30,8 +30,6 @@
#include "gtkentry.h"
#include "gtkentryprivate.h"
#include "gtkintl.h"
-#include "gtktoolbar.h"
-#include "gtktoolitem.h"
#include "gtkstylecontext.h"
#include "gtksearchbar.h"
@@ -71,7 +69,7 @@
typedef struct {
/* Template widgets */
GtkWidget *revealer;
- GtkWidget *toolbar;
+ GtkWidget *tool_box;
GtkWidget *box_center;
GtkWidget *close_button;
@@ -286,7 +284,7 @@ gtk_search_bar_add (GtkContainer *container,
/* When constructing the widget, we want the revealer to be added
* as the first child of the search bar, as an implementation detail.
* 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)
{
@@ -364,6 +362,25 @@ gtk_search_bar_dispose (GObject *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
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->set_property = gtk_search_bar_set_property;
object_class->get_property = gtk_search_bar_get_property;
+ widget_class->draw = gtk_search_bar_draw;
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);
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, box_center);
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)
{
GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
+ GtkStyleContext *context;
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_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);
g_signal_connect (priv->close_button, "clicked",
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);
+
};
/**
diff --git a/gtk/gtksearchbar.ui b/gtk/gtksearchbar.ui
index ac02b4b..e545f9e 100644
--- a/gtk/gtksearchbar.ui
+++ b/gtk/gtksearchbar.ui
@@ -8,99 +8,82 @@
<object class="GtkRevealer" id="revealer">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="vexpand">False</property>
<property name="hexpand">True</property>
+ <property name="vexpand">False</property>
<child>
- <object class="GtkToolbar" id="toolbar">
+ <object class="GtkBox" id="tool_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <style>
- <class name="primary-toolbar"/>
- </style>
+ <property name="border_width">5</property>
+ <child>
+ <object class="GtkBox" id="box_left">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="hexpand">True</property>
+ <property name="orientation">vertical</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="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="GtkToolItem" id="tool_item">
+ <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="GtkBox" id="tool_box">
+ <object class="GtkButton" id="close_button">
<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>
+ <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="GtkBox" id="box_right">
+ <object class="GtkImage" id="close_image">
<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>
+ <property name="icon_name">window-close-symbolic</property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
</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">True</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
</packing>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]