#include "gtkmarshalers.h"
#include "gtkmenu.h"
#include "gtkorientable.h"
+#include "gtkorientableprivate.h"
#include "gtkradiobutton.h"
#include "gtkradiotoolbutton.h"
#include "gtkseparatormenuitem.h"
GtkWidget *child);
static void gtk_toolbar_invalidate_order (GtkToolbar *toolbar);
-static void gtk_toolbar_direction_changed (GtkWidget *widget,
- GtkTextDirection previous_direction);
static void gtk_toolbar_orientation_changed (GtkToolbar *toolbar,
GtkOrientation orientation);
static void gtk_toolbar_real_style_changed (GtkToolbar *toolbar,
widget_class->unmap = gtk_toolbar_unmap;
widget_class->popup_menu = gtk_toolbar_popup_menu;
widget_class->show_all = gtk_toolbar_show_all;
- widget_class->direction_changed = gtk_toolbar_direction_changed;
container_class->add = gtk_toolbar_add;
container_class->remove = gtk_toolbar_remove;
priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->event_window, toolbar);
+ gtk_widget_register_window (widget, priv->event_window);
}
static void
if (priv->event_window)
{
- gdk_window_set_user_data (priv->event_window, NULL);
+ gtk_widget_unregister_window (widget, priv->event_window);
gdk_window_destroy (priv->event_window);
priv->event_window = NULL;
}
if (old_settings)
{
g_signal_handler_disconnect (old_settings, priv->settings_connection);
-
+ priv->settings_connection = 0;
g_object_unref (old_settings);
}
gtk_toolbar_reconfigured (toolbar);
+ _gtk_orientable_set_style_classes (GTK_ORIENTABLE (toolbar));
gtk_widget_queue_resize (GTK_WIDGET (toolbar));
g_object_notify (G_OBJECT (toolbar), "orientation");
}
priv->menu = NULL;
}
+ if (priv->settings_connection > 0)
+ {
+ g_signal_handler_disconnect (priv->settings, priv->settings_connection);
+ priv->settings_connection = 0;
+ }
+
+ g_clear_object (&priv->settings);
+
G_OBJECT_CLASS (gtk_toolbar_parent_class)->dispose (object);
}
{
PangoContext *context;
PangoFontMetrics *metrics;
- const PangoFontDescription *font_desc;
- GtkStyleContext *style_context;
- GtkStateFlags state;
gint char_width;
context = gtk_widget_get_pango_context (widget);
- style_context = gtk_widget_get_style_context (widget);
- state = gtk_widget_get_state_flags (widget);
- font_desc = gtk_style_context_get_font (style_context, state);
-
- metrics = pango_context_get_metrics (context, font_desc,
+ metrics = pango_context_get_metrics (context,
+ pango_context_get_font_description (context),
pango_context_get_language (context));
char_width = pango_font_metrics_get_approximate_char_width (metrics);
pango_font_metrics_unref (metrics);
g_assert (count.found);
- if (toolbar->priv->orientation == GTK_ORIENTATION_HORIZONTAL &&
- gtk_widget_get_direction (GTK_WIDGET (toolbar)) == GTK_TEXT_DIR_RTL)
- return count.after;
-
return count.before;
}
{
GtkWidgetPath *path;
GtkToolbar *toolbar;
- GtkToolbarPrivate *priv;
GtkWidgetPath *sibling_path;
gint vis_index;
GList *children;
toolbar = GTK_TOOLBAR (container);
- priv = toolbar->priv;
/* build a path for all the visible children;
* get_children works in visible order
*/
sibling_path = gtk_widget_path_new ();
children = _gtk_container_get_all_children (container);
-
- if (priv->orientation != GTK_ORIENTATION_HORIZONTAL ||
- gtk_widget_get_direction (GTK_WIDGET (toolbar)) != GTK_TEXT_DIR_RTL)
- children = g_list_reverse (children);
+ children = g_list_reverse (children);
g_list_foreach (children, add_widget_to_path, sibling_path);
g_list_free (children);
NULL);
}
-static void
-gtk_toolbar_direction_changed (GtkWidget *widget,
- GtkTextDirection previous_direction)
-{
- GTK_WIDGET_CLASS (gtk_toolbar_parent_class)->direction_changed (widget, previous_direction);
-
- gtk_toolbar_invalidate_order (GTK_TOOLBAR (widget));
-}
-