From 277b4ea327a37b8e6192cf0c8e2e0e27f0728b9a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 17 May 2009 23:43:26 -0400 Subject: [PATCH] Improve GtkNotbook behaviour with too little space This fixes bug 582488. The patch was provided by Morten Welinder. --- gtk/gtknotebook.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c index 9b1c0c3cb8..2e0e8dd2f6 100644 --- a/gtk/gtknotebook.c +++ b/gtk/gtknotebook.c @@ -4981,12 +4981,15 @@ gtk_notebook_calculate_shown_tabs (GtkNotebook *notebook, remaining_space, STEP_NEXT); } - if (*remaining_space <= 0) + if (tab_space <= 0 || *remaining_space < 0) { /* show 1 tab */ notebook->first_tab = notebook->focus_tab; *last_child = gtk_notebook_search_page (notebook, notebook->focus_tab, STEP_NEXT, TRUE); + page = notebook->first_tab->data; + *remaining_space = tab_space - page->requisition.width; + *n = 1; } else { @@ -5073,22 +5076,22 @@ gtk_notebook_calculate_shown_tabs (GtkNotebook *notebook, TRUE); } } - } - if (*remaining_space < 0) - { - /* calculate number of tabs */ - *remaining_space = - (*remaining_space); - *n = 0; + if (*remaining_space < 0) + { + /* calculate number of tabs */ + *remaining_space = - (*remaining_space); + *n = 0; - for (children = notebook->first_tab; - children && children != *last_child; - children = gtk_notebook_search_page (notebook, children, - STEP_NEXT, TRUE)) - (*n)++; - } - else - *remaining_space = 0; + for (children = notebook->first_tab; + children && children != *last_child; + children = gtk_notebook_search_page (notebook, children, + STEP_NEXT, TRUE)) + (*n)++; + } + else + *remaining_space = 0; + } /* unmap all non-visible tabs */ for (children = gtk_notebook_search_page (notebook, NULL,