diff options
author | Matthias Clasen <mclasen@redhat.com> | 2011-01-04 01:57:22 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2011-01-04 01:57:22 -0500 |
commit | 4ea886aea12d40e9938034035874a4a805590596 (patch) | |
tree | 6a4cd64351d7a88ae72d02c6672d8c7ec2881e84 /gtk/gtknotebook.c | |
parent | f9d6bc6cca40e9f9fd360f49dfb9c6e939b0fc42 (diff) | |
download | gtk+-4ea886aea12d40e9938034035874a4a805590596.tar.gz |
Don't consider pack when allocating tabs
Diffstat (limited to 'gtk/gtknotebook.c')
-rw-r--r-- | gtk/gtknotebook.c | 133 |
1 files changed, 51 insertions, 82 deletions
diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c index 680e46b167..1f1a4de6e4 100644 --- a/gtk/gtknotebook.c +++ b/gtk/gtknotebook.c @@ -5781,21 +5781,13 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, _gtk_notebook_get_tab_flags (notebook, page)); gtk_style_context_get_padding (context, 0, &padding); - if (direction == STEP_NEXT && page->pack != GTK_PACK_START) - { - if (!showarrow) - break; - else if (priv->operation == DRAG_OPERATION_REORDER) - packing_changed = TRUE; - } - if (direction == STEP_NEXT) *children = gtk_notebook_search_page (notebook, *children, direction, TRUE); else { *children = (*children)->next; - if (page->pack != GTK_PACK_END || !gtk_widget_get_visible (page->child)) + if (!gtk_widget_get_visible (page->child)) continue; } @@ -5822,8 +5814,7 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, { if (!allocate_at_bottom) { - if ((priv->cur_page->pack == GTK_PACK_START && left_x >= anchor) || - (priv->cur_page->pack == GTK_PACK_END && left_x < anchor)) + if (left_x >= anchor) { left_x = priv->drag_window_x = anchor; anchor += priv->cur_page->allocation.width - tab_overlap; @@ -5831,8 +5822,7 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, } else { - if ((priv->cur_page->pack == GTK_PACK_START && right_x <= anchor) || - (priv->cur_page->pack == GTK_PACK_END && right_x > anchor)) + if (right_x <= anchor) { anchor -= priv->cur_page->allocation.width; left_x = priv->drag_window_x = anchor; @@ -5853,7 +5843,7 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, if (allocate_at_bottom) anchor -= child_allocation.width; - if (priv->operation == DRAG_OPERATION_REORDER && page->pack == priv->cur_page->pack) + if (priv->operation == DRAG_OPERATION_REORDER) { if (!allocate_at_bottom && left_x >= anchor && @@ -5877,9 +5867,7 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, if (priv->operation == DRAG_OPERATION_REORDER && !gap_left && packing_changed) { - if (!allocate_at_bottom && - ((priv->cur_page->pack == GTK_PACK_START && top_y >= anchor) || - (priv->cur_page->pack == GTK_PACK_END && top_y < anchor))) + if (!allocate_at_bottom && top_y >= anchor) { top_y = priv->drag_window_y = anchor; anchor += priv->cur_page->allocation.height - tab_overlap; @@ -5898,7 +5886,7 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, if (allocate_at_bottom) anchor -= child_allocation.height; - if (priv->operation == DRAG_OPERATION_REORDER && page->pack == priv->cur_page->pack) + if (priv->operation == DRAG_OPERATION_REORDER) { if (!allocate_at_bottom && top_y >= anchor && @@ -5956,13 +5944,11 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, { if (priv->operation == DRAG_OPERATION_REORDER) { - if (page->pack == priv->cur_page->pack && - !allocate_at_bottom && + if (!allocate_at_bottom && left_x > anchor + child_allocation.width / 2 && left_x <= anchor + child_allocation.width) anchor += priv->cur_page->allocation.width - tab_overlap; - else if (page->pack == priv->cur_page->pack && - allocate_at_bottom && + else if (allocate_at_bottom && right_x >= anchor && right_x <= anchor + child_allocation.width / 2) anchor -= priv->cur_page->allocation.width - tab_overlap; @@ -5982,13 +5968,11 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, { if (priv->operation == DRAG_OPERATION_REORDER) { - if (page->pack == priv->cur_page->pack && - !allocate_at_bottom && + if (!allocate_at_bottom && top_y >= anchor + child_allocation.height / 2 && top_y <= anchor + child_allocation.height) anchor += priv->cur_page->allocation.height - tab_overlap; - else if (page->pack == priv->cur_page->pack && - allocate_at_bottom && + else if (allocate_at_bottom && bottom_y >= anchor && bottom_y <= anchor + child_allocation.height / 2) anchor -= priv->cur_page->allocation.height - tab_overlap; @@ -6013,8 +5997,7 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, /* Don't move the current tab past the last position during tabs reordering */ if (children && priv->operation == DRAG_OPERATION_REORDER && - ((direction == STEP_NEXT && priv->cur_page->pack == GTK_PACK_START) || - ((direction == STEP_PREV || packing_changed) && priv->cur_page->pack == GTK_PACK_END))) + direction == STEP_NEXT) { switch (tab_pos) { @@ -6219,19 +6202,12 @@ gtk_notebook_calc_tabs (GtkNotebook *notebook, GList *children; GList *last_list = NULL; GList *last_calculated_child = NULL; - gboolean pack; gint tab_pos = get_effective_tab_pos (notebook); - guint real_direction; if (!start) return; children = start; - pack = GTK_NOTEBOOK_PAGE (start)->pack; - if (pack == GTK_PACK_END) - real_direction = (direction == STEP_PREV) ? STEP_NEXT : STEP_PREV; - else - real_direction = direction; while (1) { @@ -6245,29 +6221,26 @@ gtk_notebook_calc_tabs (GtkNotebook *notebook, if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && gtk_widget_get_visible (page->child)) { - if (page->pack == pack) - { - *tab_space -= page->requisition.width; - if (*tab_space < 0 || children == *end) - { - if (*tab_space < 0) - { - *tab_space = - (*tab_space + - page->requisition.width); - - if (*tab_space == 0 && direction == STEP_PREV) - children = last_calculated_child; - - *end = children; - } - return; - } - - last_calculated_child = children; - } - last_list = children; + *tab_space -= page->requisition.width; + if (*tab_space < 0 || children == *end) + { + if (*tab_space < 0) + { + *tab_space = - (*tab_space + + page->requisition.width); + + if (*tab_space == 0 && direction == STEP_PREV) + children = last_calculated_child; + + *end = children; + } + return; + } + + last_calculated_child = children; + last_list = children; } - if (real_direction == STEP_NEXT) + if (direction == STEP_NEXT) children = children->next; else children = children->prev; @@ -6281,39 +6254,35 @@ gtk_notebook_calc_tabs (GtkNotebook *notebook, if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && gtk_widget_get_visible (page->child)) { - if (page->pack == pack) - { - *tab_space -= page->requisition.height; - if (*tab_space < 0 || children == *end) - { - if (*tab_space < 0) - { - *tab_space = - (*tab_space + - page->requisition.height); - - if (*tab_space == 0 && direction == STEP_PREV) - children = last_calculated_child; - - *end = children; - } - return; - } - - last_calculated_child = children; - } - last_list = children; + *tab_space -= page->requisition.height; + if (*tab_space < 0 || children == *end) + { + if (*tab_space < 0) + { + *tab_space = - (*tab_space + + page->requisition.height); + + if (*tab_space == 0 && direction == STEP_PREV) + children = last_calculated_child; + + *end = children; + } + return; + } + + last_calculated_child = children; + last_list = children; } - if (real_direction == STEP_NEXT) + if (direction == STEP_NEXT) children = children->next; else children = children->prev; } break; } - if (real_direction == STEP_PREV) + if (direction == STEP_PREV) return; - pack = (pack == GTK_PACK_END) ? GTK_PACK_START : GTK_PACK_END; - real_direction = STEP_PREV; + direction = STEP_PREV; children = last_list; } } |