forked from AuroraMiddleware/gtk
delete this function (toolbar_item_is_homogeneous): cache
Fri Oct 31 02:43:34 2003 Soeren Sandmann <sandmann@daimi.au.dk> * gtk/gtktoolbar.c (get_item_requisition): delete this function (toolbar_item_is_homogeneous): cache max_homogeneous_pixels instead of re-calculating for each item. (gtk_toolbar_size_allocate): Update comments
This commit is contained in:
parent
53f23a989a
commit
eb3f5776ac
@ -1,3 +1,10 @@
|
|||||||
|
Fri Oct 31 02:43:34 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
|
* gtk/gtktoolbar.c (get_item_requisition): delete this function
|
||||||
|
(toolbar_item_is_homogeneous): cache max_homogeneous_pixels
|
||||||
|
instead of re-calculating for each item.
|
||||||
|
(gtk_toolbar_size_allocate): Update comments
|
||||||
|
|
||||||
Thu Oct 30 22:04:31 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
Thu Oct 30 22:04:31 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
* gtk/gtktoolbar.c (gtk_toolbar_forall): Only include
|
* gtk/gtktoolbar.c (gtk_toolbar_forall): Only include
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
Fri Oct 31 02:43:34 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
|
* gtk/gtktoolbar.c (get_item_requisition): delete this function
|
||||||
|
(toolbar_item_is_homogeneous): cache max_homogeneous_pixels
|
||||||
|
instead of re-calculating for each item.
|
||||||
|
(gtk_toolbar_size_allocate): Update comments
|
||||||
|
|
||||||
Thu Oct 30 22:04:31 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
Thu Oct 30 22:04:31 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
* gtk/gtktoolbar.c (gtk_toolbar_forall): Only include
|
* gtk/gtktoolbar.c (gtk_toolbar_forall): Only include
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
Fri Oct 31 02:43:34 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
|
* gtk/gtktoolbar.c (get_item_requisition): delete this function
|
||||||
|
(toolbar_item_is_homogeneous): cache max_homogeneous_pixels
|
||||||
|
instead of re-calculating for each item.
|
||||||
|
(gtk_toolbar_size_allocate): Update comments
|
||||||
|
|
||||||
Thu Oct 30 22:04:31 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
Thu Oct 30 22:04:31 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
* gtk/gtktoolbar.c (gtk_toolbar_forall): Only include
|
* gtk/gtktoolbar.c (gtk_toolbar_forall): Only include
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
Fri Oct 31 02:43:34 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
|
* gtk/gtktoolbar.c (get_item_requisition): delete this function
|
||||||
|
(toolbar_item_is_homogeneous): cache max_homogeneous_pixels
|
||||||
|
instead of re-calculating for each item.
|
||||||
|
(gtk_toolbar_size_allocate): Update comments
|
||||||
|
|
||||||
Thu Oct 30 22:04:31 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
Thu Oct 30 22:04:31 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
* gtk/gtktoolbar.c (gtk_toolbar_forall): Only include
|
* gtk/gtktoolbar.c (gtk_toolbar_forall): Only include
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
Fri Oct 31 02:43:34 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
|
* gtk/gtktoolbar.c (get_item_requisition): delete this function
|
||||||
|
(toolbar_item_is_homogeneous): cache max_homogeneous_pixels
|
||||||
|
instead of re-calculating for each item.
|
||||||
|
(gtk_toolbar_size_allocate): Update comments
|
||||||
|
|
||||||
Thu Oct 30 22:04:31 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
Thu Oct 30 22:04:31 2003 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
* gtk/gtktoolbar.c (gtk_toolbar_forall): Only include
|
* gtk/gtktoolbar.c (gtk_toolbar_forall): Only include
|
||||||
|
@ -174,7 +174,10 @@ static GtkWidget *gtk_toolbar_internal_insert_element (GtkToolbar *tool
|
|||||||
gpointer user_data,
|
gpointer user_data,
|
||||||
gint position,
|
gint position,
|
||||||
gboolean use_stock);
|
gboolean use_stock);
|
||||||
static void gtk_toolbar_insert_tool_item (GtkToolbar *toolbar,
|
|
||||||
|
typedef struct _ToolbarContent ToolbarContent;
|
||||||
|
|
||||||
|
static ToolbarContent *gtk_toolbar_insert_tool_item (GtkToolbar *toolbar,
|
||||||
GtkToolItem *item,
|
GtkToolItem *item,
|
||||||
gint pos,
|
gint pos,
|
||||||
gboolean is_placeholder);
|
gboolean is_placeholder);
|
||||||
@ -187,7 +190,7 @@ typedef enum {
|
|||||||
} ApiMode;
|
} ApiMode;
|
||||||
|
|
||||||
#define GTK_TOOLBAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_TOOLBAR, GtkToolbarPrivate))
|
#define GTK_TOOLBAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_TOOLBAR, GtkToolbarPrivate))
|
||||||
typedef struct _ToolbarContent ToolbarContent;
|
|
||||||
struct _ToolbarContent
|
struct _ToolbarContent
|
||||||
{
|
{
|
||||||
GtkToolItem *item;
|
GtkToolItem *item;
|
||||||
@ -220,6 +223,7 @@ struct _GtkToolbarPrivate
|
|||||||
gboolean in_dnd;
|
gboolean in_dnd;
|
||||||
gint n_overflow_items_when_dnd_started;
|
gint n_overflow_items_when_dnd_started;
|
||||||
GtkToolItem *highlight_tool_item;
|
GtkToolItem *highlight_tool_item;
|
||||||
|
gint max_homogeneous_pixels;
|
||||||
};
|
};
|
||||||
|
|
||||||
static GtkContainerClass *parent_class = NULL;
|
static GtkContainerClass *parent_class = NULL;
|
||||||
@ -590,6 +594,8 @@ gtk_toolbar_init (GtkToolbar *toolbar)
|
|||||||
priv->show_arrow = TRUE;
|
priv->show_arrow = TRUE;
|
||||||
priv->settings = NULL;
|
priv->settings = NULL;
|
||||||
|
|
||||||
|
priv->max_homogeneous_pixels = -1;
|
||||||
|
|
||||||
priv->timer = g_timer_new ();
|
priv->timer = g_timer_new ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -623,17 +629,12 @@ toolbar_item_visible (GtkToolbar *toolbar,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gint
|
||||||
toolbar_item_is_homogeneous (GtkToolbar *toolbar,
|
calculate_max_homogeneous_pixels (GtkWidget *widget)
|
||||||
GtkToolItem *item)
|
|
||||||
{
|
{
|
||||||
gboolean result;
|
|
||||||
GtkWidget *widget = GTK_WIDGET (item);
|
|
||||||
GtkRequisition requisition;
|
|
||||||
PangoContext *context;
|
PangoContext *context;
|
||||||
PangoFontMetrics *metrics;
|
PangoFontMetrics *metrics;
|
||||||
int char_width;
|
gint char_width;
|
||||||
gint max_homogeneous_pixels;
|
|
||||||
|
|
||||||
context = gtk_widget_get_pango_context (widget);
|
context = gtk_widget_get_pango_context (widget);
|
||||||
metrics = pango_context_get_metrics (context,
|
metrics = pango_context_get_metrics (context,
|
||||||
@ -642,16 +643,32 @@ toolbar_item_is_homogeneous (GtkToolbar *toolbar,
|
|||||||
char_width = pango_font_metrics_get_approximate_char_width (metrics);
|
char_width = pango_font_metrics_get_approximate_char_width (metrics);
|
||||||
pango_font_metrics_unref (metrics);
|
pango_font_metrics_unref (metrics);
|
||||||
|
|
||||||
max_homogeneous_pixels = PANGO_PIXELS (MAX_HOMOGENEOUS_N_CHARS * char_width);
|
return PANGO_PIXELS (MAX_HOMOGENEOUS_N_CHARS * char_width);
|
||||||
|
}
|
||||||
|
|
||||||
result = gtk_tool_item_get_homogeneous (item) && !GTK_IS_SEPARATOR_TOOL_ITEM (item);
|
static gboolean
|
||||||
|
toolbar_item_is_homogeneous (GtkToolbar *toolbar,
|
||||||
|
GtkToolItem *item)
|
||||||
|
{
|
||||||
|
gboolean result;
|
||||||
|
GtkRequisition requisition;
|
||||||
|
GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar);
|
||||||
|
|
||||||
|
if (priv->max_homogeneous_pixels < 0)
|
||||||
|
{
|
||||||
|
priv->max_homogeneous_pixels =
|
||||||
|
calculate_max_homogeneous_pixels (GTK_WIDGET (toolbar));
|
||||||
|
}
|
||||||
|
|
||||||
|
result = gtk_tool_item_get_homogeneous (item) &&
|
||||||
|
!GTK_IS_SEPARATOR_TOOL_ITEM (item);
|
||||||
|
|
||||||
gtk_widget_size_request (GTK_WIDGET (item), &requisition);
|
gtk_widget_size_request (GTK_WIDGET (item), &requisition);
|
||||||
|
|
||||||
if ((gtk_tool_item_get_is_important (item) &&
|
if ((gtk_tool_item_get_is_important (item) &&
|
||||||
toolbar->style == GTK_TOOLBAR_BOTH_HORIZ &&
|
toolbar->style == GTK_TOOLBAR_BOTH_HORIZ &&
|
||||||
toolbar->orientation == GTK_ORIENTATION_HORIZONTAL) ||
|
toolbar->orientation == GTK_ORIENTATION_HORIZONTAL) ||
|
||||||
requisition.width > max_homogeneous_pixels)
|
requisition.width > priv->max_homogeneous_pixels)
|
||||||
{
|
{
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
}
|
}
|
||||||
@ -1086,7 +1103,7 @@ gtk_toolbar_size_allocate (GtkWidget *widget,
|
|||||||
|
|
||||||
n_overflowed = 0;
|
n_overflowed = 0;
|
||||||
|
|
||||||
/* calculate widths of pack front items */
|
/* calculate widths of items */
|
||||||
overflowing = FALSE;
|
overflowing = FALSE;
|
||||||
for (list = priv->content, i = 0; list != NULL; list = list->next, ++i)
|
for (list = priv->content, i = 0; list != NULL; list = list->next, ++i)
|
||||||
{
|
{
|
||||||
@ -1112,6 +1129,7 @@ gtk_toolbar_size_allocate (GtkWidget *widget,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* calculate width of arrow */
|
||||||
if (need_arrow)
|
if (need_arrow)
|
||||||
{
|
{
|
||||||
arrow_allocation.width = arrow_size;
|
arrow_allocation.width = arrow_size;
|
||||||
@ -1163,7 +1181,7 @@ gtk_toolbar_size_allocate (GtkWidget *widget,
|
|||||||
g_assert (n_expand_items == 0);
|
g_assert (n_expand_items == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* position regular items */
|
/* position items */
|
||||||
pos = border_width;
|
pos = border_width;
|
||||||
for (list = priv->content, i = 0; list != NULL; list = list->next, ++i)
|
for (list = priv->content, i = 0; list != NULL; list = list->next, ++i)
|
||||||
{
|
{
|
||||||
@ -1265,6 +1283,10 @@ static void
|
|||||||
gtk_toolbar_style_set (GtkWidget *widget,
|
gtk_toolbar_style_set (GtkWidget *widget,
|
||||||
GtkStyle *prev_style)
|
GtkStyle *prev_style)
|
||||||
{
|
{
|
||||||
|
GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (widget);
|
||||||
|
|
||||||
|
priv->max_homogeneous_pixels = -1;
|
||||||
|
|
||||||
if (GTK_WIDGET_REALIZED (widget))
|
if (GTK_WIDGET_REALIZED (widget))
|
||||||
gtk_style_set_background (widget->style, widget->window, widget->state);
|
gtk_style_set_background (widget->style, widget->window, widget->state);
|
||||||
|
|
||||||
@ -1816,25 +1838,6 @@ logical_to_physical (GtkToolbar *toolbar, gint logical)
|
|||||||
return physical;
|
return physical;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
get_item_requisition (GtkToolbar *toolbar,
|
|
||||||
GtkToolItem *tool_item,
|
|
||||||
gint *width,
|
|
||||||
gint *height)
|
|
||||||
{
|
|
||||||
GtkRequisition requisition;
|
|
||||||
|
|
||||||
g_object_ref (G_OBJECT (tool_item));
|
|
||||||
gtk_widget_set_parent (GTK_WIDGET (tool_item), GTK_WIDGET (toolbar));
|
|
||||||
|
|
||||||
gtk_widget_size_request (GTK_WIDGET (tool_item), &requisition);
|
|
||||||
*width = requisition.width;
|
|
||||||
*height = requisition.height;
|
|
||||||
|
|
||||||
gtk_widget_unparent (GTK_WIDGET (tool_item));
|
|
||||||
g_object_unref (G_OBJECT (tool_item));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gtk_toolbar_set_drop_highlight_item:
|
* gtk_toolbar_set_drop_highlight_item:
|
||||||
* @toolbar: a #GtkToolbar
|
* @toolbar: a #GtkToolbar
|
||||||
@ -1939,12 +1942,13 @@ gtk_toolbar_set_drop_highlight_item (GtkToolbar *toolbar,
|
|||||||
|
|
||||||
if (!content || !content->is_placeholder)
|
if (!content || !content->is_placeholder)
|
||||||
{
|
{
|
||||||
GtkWidget *placeholder = GTK_WIDGET (gtk_separator_tool_item_new ());
|
GtkWidget *placeholder;
|
||||||
|
|
||||||
|
placeholder = GTK_WIDGET (gtk_separator_tool_item_new ());
|
||||||
gtk_widget_set_size_request (placeholder, 0, 0);
|
gtk_widget_set_size_request (placeholder, 0, 0);
|
||||||
gtk_toolbar_insert_tool_item (toolbar, GTK_TOOL_ITEM (placeholder),
|
content = gtk_toolbar_insert_tool_item (toolbar,
|
||||||
|
GTK_TOOL_ITEM (placeholder),
|
||||||
index, TRUE);
|
index, TRUE);
|
||||||
content = g_list_nth_data (priv->content, index);
|
|
||||||
g_assert (content->is_placeholder);
|
|
||||||
start_width = start_height = 0;
|
start_width = start_height = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2402,7 +2406,7 @@ gtk_toolbar_check_new_api (GtkToolbar *toolbar)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static ToolbarContent *
|
||||||
gtk_toolbar_insert_tool_item (GtkToolbar *toolbar,
|
gtk_toolbar_insert_tool_item (GtkToolbar *toolbar,
|
||||||
GtkToolItem *item,
|
GtkToolItem *item,
|
||||||
gint pos,
|
gint pos,
|
||||||
@ -2419,6 +2423,7 @@ gtk_toolbar_insert_tool_item (GtkToolbar *toolbar,
|
|||||||
priv->content = g_list_insert (priv->content, content, pos);
|
priv->content = g_list_insert (priv->content, content, pos);
|
||||||
|
|
||||||
gtk_widget_set_parent (GTK_WIDGET (item), GTK_WIDGET (toolbar));
|
gtk_widget_set_parent (GTK_WIDGET (item), GTK_WIDGET (toolbar));
|
||||||
|
return content;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -625,7 +625,7 @@ main (gint argc, gchar **argv)
|
|||||||
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
|
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
|
||||||
gtk_tool_item_set_expand (item, TRUE);
|
gtk_tool_item_set_expand (item, TRUE);
|
||||||
gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (item), FALSE);
|
gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (item), FALSE);
|
||||||
g_assert (gtk_toolbar_get_nth_item (toolbar, 0) != 0);
|
g_assert (gtk_toolbar_get_nth_item (GTK_TOOLBAR (toolbar), 0) != 0);
|
||||||
|
|
||||||
item = gtk_radio_tool_button_new_from_stock (NULL, GTK_STOCK_JUSTIFY_LEFT);
|
item = gtk_radio_tool_button_new_from_stock (NULL, GTK_STOCK_JUSTIFY_LEFT);
|
||||||
group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (item));
|
group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (item));
|
||||||
@ -634,9 +634,7 @@ main (gint argc, gchar **argv)
|
|||||||
|
|
||||||
|
|
||||||
item = gtk_radio_tool_button_new_from_stock (group, GTK_STOCK_JUSTIFY_CENTER);
|
item = gtk_radio_tool_button_new_from_stock (group, GTK_STOCK_JUSTIFY_CENTER);
|
||||||
#if 0
|
|
||||||
make_prop_editor (G_OBJECT (item));
|
make_prop_editor (G_OBJECT (item));
|
||||||
#endif
|
|
||||||
|
|
||||||
group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (item));
|
group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (item));
|
||||||
add_item_to_list (store, item, "Center");
|
add_item_to_list (store, item, "Center");
|
||||||
@ -689,9 +687,7 @@ main (gint argc, gchar **argv)
|
|||||||
|
|
||||||
gtk_widget_show_all (window);
|
gtk_widget_show_all (window);
|
||||||
|
|
||||||
#if 0
|
|
||||||
make_prop_editor (G_OBJECT (toolbar));
|
make_prop_editor (G_OBJECT (toolbar));
|
||||||
#endif
|
|
||||||
|
|
||||||
g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
|
g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user