238 lines
10 KiB
Diff
238 lines
10 KiB
Diff
From 61006bd18b748c50bde01efe4abcb038a710ee11 Mon Sep 17 00:00:00 2001
|
|
From: Cosimo Cecchi <cosimoc@gnome.org>
|
|
Date: Fri, 11 Jun 2010 13:22:29 +0200
|
|
Subject: [PATCH 063/249] [src] GSEAL nautilus-pathbar.
|
|
|
|
---
|
|
src/nautilus-pathbar.c | 75 ++++++++++++++++++++++++++++++------------------
|
|
1 files changed, 47 insertions(+), 28 deletions(-)
|
|
|
|
diff --git a/src/nautilus-pathbar.c b/src/nautilus-pathbar.c
|
|
index df39db0..1cb1733 100644
|
|
--- a/src/nautilus-pathbar.c
|
|
+++ b/src/nautilus-pathbar.c
|
|
@@ -287,8 +287,8 @@ static void
|
|
nautilus_path_bar_init (NautilusPathBar *path_bar)
|
|
{
|
|
char *p;
|
|
-
|
|
- GTK_WIDGET_SET_FLAGS (path_bar, GTK_NO_WINDOW);
|
|
+
|
|
+ gtk_widget_set_has_window (GTK_WIDGET (path_bar), FALSE);
|
|
gtk_widget_set_redraw_on_allocate (GTK_WIDGET (path_bar), FALSE);
|
|
|
|
path_bar->spacing = 3;
|
|
@@ -466,6 +466,7 @@ nautilus_path_bar_size_request (GtkWidget *widget,
|
|
NautilusPathBar *path_bar;
|
|
GtkRequisition child_requisition;
|
|
GList *list;
|
|
+ guint border_width;
|
|
|
|
path_bar = NAUTILUS_PATH_BAR (widget);
|
|
|
|
@@ -491,10 +492,12 @@ nautilus_path_bar_size_request (GtkWidget *widget,
|
|
gtk_widget_size_request (path_bar->up_slider_button, &child_requisition);
|
|
gtk_widget_size_request (path_bar->down_slider_button, &child_requisition);
|
|
|
|
- requisition->width += GTK_CONTAINER (widget)->border_width * 2;
|
|
- requisition->height += GTK_CONTAINER (widget)->border_width * 2;
|
|
+ border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
|
+ requisition->width += border_width * 2;
|
|
+ requisition->height += border_width * 2;
|
|
|
|
- widget->requisition = *requisition;
|
|
+ gtk_widget_set_size_request (widget, requisition->width,
|
|
+ requisition->height);
|
|
}
|
|
|
|
static void
|
|
@@ -543,21 +546,22 @@ nautilus_path_bar_size_allocate (GtkWidget *widget,
|
|
gboolean need_sliders;
|
|
gint up_slider_offset;
|
|
gint down_slider_offset;
|
|
+ GtkRequisition requisition;
|
|
+ GtkAllocation widget_allocation;
|
|
|
|
need_sliders = FALSE;
|
|
up_slider_offset = 0;
|
|
down_slider_offset = 0;
|
|
path_bar = NAUTILUS_PATH_BAR (widget);
|
|
|
|
- widget->allocation = *allocation;
|
|
-
|
|
+ gtk_widget_set_allocation (widget, allocation);
|
|
|
|
/* No path is set so we don't have to allocate anything. */
|
|
if (path_bar->button_list == NULL) {
|
|
return;
|
|
}
|
|
direction = gtk_widget_get_direction (widget);
|
|
- border_width = (gint) GTK_CONTAINER (path_bar)->border_width;
|
|
+ border_width = (gint) gtk_container_get_border_width (GTK_CONTAINER (path_bar));
|
|
allocation_width = allocation->width - 2 * border_width;
|
|
|
|
/* First, we check to see if we need the scrollbars. */
|
|
@@ -567,11 +571,13 @@ nautilus_path_bar_size_allocate (GtkWidget *widget,
|
|
width = 0;
|
|
}
|
|
|
|
- width += BUTTON_DATA (path_bar->button_list->data)->button->requisition.width;
|
|
+ gtk_widget_get_requisition (BUTTON_DATA (path_bar->button_list->data)->button, &requisition);
|
|
+ width += requisition.width;
|
|
|
|
for (list = path_bar->button_list->next; list; list = list->next) {
|
|
child = BUTTON_DATA (list->data)->button;
|
|
- width += child->requisition.width + path_bar->spacing;
|
|
+ gtk_widget_get_requisition (child, &requisition);
|
|
+ width += requisition.width + path_bar->spacing;
|
|
|
|
if (list == path_bar->fake_root) {
|
|
break;
|
|
@@ -602,18 +608,20 @@ nautilus_path_bar_size_allocate (GtkWidget *widget,
|
|
* button, then count backwards.
|
|
*/
|
|
/* Count down the path chain towards the end. */
|
|
- width = BUTTON_DATA (first_button->data)->button->requisition.width;
|
|
+ gtk_widget_get_requisition (BUTTON_DATA (first_button->data)->button, &requisition);
|
|
+ width = requisition.width;
|
|
list = first_button->prev;
|
|
while (list && !reached_end) {
|
|
child = BUTTON_DATA (list->data)->button;
|
|
+ gtk_widget_get_requisition (child, &requisition);
|
|
|
|
- if (width + child->requisition.width + path_bar->spacing + slider_space > allocation_width) {
|
|
+ if (width + requisition.width + path_bar->spacing + slider_space > allocation_width) {
|
|
reached_end = TRUE;
|
|
} else {
|
|
if (list == path_bar->fake_root) {
|
|
break;
|
|
} else {
|
|
- width += child->requisition.width + path_bar->spacing;
|
|
+ width += requisition.width + path_bar->spacing;
|
|
}
|
|
}
|
|
|
|
@@ -624,10 +632,12 @@ nautilus_path_bar_size_allocate (GtkWidget *widget,
|
|
|
|
while (first_button->next && ! reached_end) {
|
|
child = BUTTON_DATA (first_button->next->data)->button;
|
|
- if (width + child->requisition.width + path_bar->spacing + slider_space > allocation_width) {
|
|
+ gtk_widget_get_requisition (child, &requisition);
|
|
+
|
|
+ if (width + requisition.width + path_bar->spacing + slider_space > allocation_width) {
|
|
reached_end = TRUE;
|
|
} else {
|
|
- width += child->requisition.width + path_bar->spacing;
|
|
+ width += requisition.width + path_bar->spacing;
|
|
if (first_button == path_bar->fake_root) {
|
|
break;
|
|
}
|
|
@@ -656,19 +666,22 @@ nautilus_path_bar_size_allocate (GtkWidget *widget,
|
|
|
|
for (list = first_button; list; list = list->prev) {
|
|
child = BUTTON_DATA (list->data)->button;
|
|
+ gtk_widget_get_requisition (child, &requisition);
|
|
+
|
|
+ gtk_widget_get_allocation (widget, &widget_allocation);
|
|
|
|
- child_allocation.width = child->requisition.width;
|
|
+ child_allocation.width = requisition.width;
|
|
if (direction == GTK_TEXT_DIR_RTL) {
|
|
child_allocation.x -= child_allocation.width;
|
|
}
|
|
/* Check to see if we've don't have any more space to allocate buttons */
|
|
if (need_sliders && direction == GTK_TEXT_DIR_RTL) {
|
|
- if (child_allocation.x - path_bar->spacing - path_bar->slider_width < widget->allocation.x + border_width) {
|
|
+ if (child_allocation.x - path_bar->spacing - path_bar->slider_width < widget_allocation.x + border_width) {
|
|
break;
|
|
}
|
|
} else {
|
|
if (need_sliders && direction == GTK_TEXT_DIR_LTR) {
|
|
- if (child_allocation.x + child_allocation.width + path_bar->spacing + path_bar->slider_width > widget->allocation.x + border_width + allocation_width) {
|
|
+ if (child_allocation.x + child_allocation.width + path_bar->spacing + path_bar->slider_width > widget_allocation.x + border_width + allocation_width) {
|
|
break;
|
|
}
|
|
}
|
|
@@ -679,10 +692,10 @@ nautilus_path_bar_size_allocate (GtkWidget *widget,
|
|
|
|
if (direction == GTK_TEXT_DIR_RTL) {
|
|
child_allocation.x -= path_bar->spacing;
|
|
- down_slider_offset = child_allocation.x - widget->allocation.x - path_bar->slider_width;
|
|
+ down_slider_offset = child_allocation.x - widget_allocation.x - path_bar->slider_width;
|
|
down_slider_offset = border_width;
|
|
} else {
|
|
- down_slider_offset = child_allocation.x - widget->allocation.x;
|
|
+ down_slider_offset = child_allocation.x - widget_allocation.x;
|
|
down_slider_offset = allocation->width - border_width - path_bar->slider_width;
|
|
child_allocation.x += child_allocation.width + path_bar->spacing;
|
|
}
|
|
@@ -859,6 +872,7 @@ nautilus_path_bar_scroll_down (NautilusPathBar *path_bar)
|
|
gint space_needed;
|
|
gint border_width;
|
|
GtkTextDirection direction;
|
|
+ GtkAllocation allocation, button_allocation, slider_allocation;
|
|
|
|
down_button = NULL;
|
|
up_button = NULL;
|
|
@@ -870,7 +884,7 @@ nautilus_path_bar_scroll_down (NautilusPathBar *path_bar)
|
|
|
|
gtk_widget_queue_resize (GTK_WIDGET (path_bar));
|
|
|
|
- border_width = GTK_CONTAINER (path_bar)->border_width;
|
|
+ border_width = gtk_container_get_border_width (GTK_CONTAINER (path_bar));
|
|
direction = gtk_widget_get_direction (GTK_WIDGET (path_bar));
|
|
|
|
/* We find the button at the 'down' end that we have to make */
|
|
@@ -894,20 +908,25 @@ nautilus_path_bar_scroll_down (NautilusPathBar *path_bar)
|
|
}
|
|
}
|
|
|
|
- space_needed = BUTTON_DATA (down_button->data)->button->allocation.width + path_bar->spacing;
|
|
+ gtk_widget_get_allocation (BUTTON_DATA (down_button->data)->button, &button_allocation);
|
|
+ gtk_widget_get_allocation (GTK_WIDGET (path_bar), &allocation);
|
|
+ gtk_widget_get_allocation (path_bar->down_slider_button, &slider_allocation);
|
|
+
|
|
+ space_needed = button_allocation.width + path_bar->spacing;
|
|
if (direction == GTK_TEXT_DIR_RTL) {
|
|
- space_available = path_bar->down_slider_button->allocation.x - GTK_WIDGET (path_bar)->allocation.x;
|
|
+ space_available = slider_allocation.x - allocation.x;
|
|
} else {
|
|
- space_available = (GTK_WIDGET (path_bar)->allocation.x + GTK_WIDGET (path_bar)->allocation.width - border_width) -
|
|
- (path_bar->down_slider_button->allocation.x + path_bar->down_slider_button->allocation.width);
|
|
+ space_available = (allocation.x + allocation.width - border_width) -
|
|
+ (slider_allocation.x + slider_allocation.width);
|
|
}
|
|
|
|
/* We have space_available extra space that's not being used. We
|
|
* need space_needed space to make the button fit. So we walk down
|
|
* from the end, removing buttons until we get all the space we
|
|
* need. */
|
|
+ gtk_widget_get_allocation (BUTTON_DATA (up_button->data)->button, &button_allocation);
|
|
while (space_available < space_needed) {
|
|
- space_available += BUTTON_DATA (up_button->data)->button->allocation.width + path_bar->spacing;
|
|
+ space_available += button_allocation.width + path_bar->spacing;
|
|
up_button = up_button->prev;
|
|
path_bar->first_scrolled_button = up_button;
|
|
}
|
|
@@ -1126,7 +1145,7 @@ button_clicked_cb (GtkWidget *button,
|
|
return;
|
|
}
|
|
|
|
- path_bar = NAUTILUS_PATH_BAR (button->parent);
|
|
+ path_bar = NAUTILUS_PATH_BAR (gtk_widget_get_parent (button));
|
|
|
|
button_list = g_list_find (path_bar->button_list, button_data);
|
|
g_assert (button_list != NULL);
|
|
@@ -1447,7 +1466,7 @@ button_drag_data_get_cb (GtkWidget *widget,
|
|
|
|
if (info == NAUTILUS_ICON_DND_GNOME_ICON_LIST) {
|
|
tmp = g_strdup_printf ("%s\r\n", uri_list[0]);
|
|
- gtk_selection_data_set (selection_data, selection_data->target,
|
|
+ gtk_selection_data_set (selection_data, gtk_selection_data_get_target (selection_data),
|
|
8, tmp, strlen (tmp));
|
|
g_free (tmp);
|
|
} else if (info == NAUTILUS_ICON_DND_URI_LIST) {
|
|
--
|
|
1.7.2
|
|
|