From 02a4bfd375110c268837931a8714fab0dc154d50 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sun, 9 Dec 2012 20:39:10 +0000 Subject: Toggle the tab bar to the correct state if the option to always show it is changed and only one tab is currently open --- amiga/gui.c | 27 +++++++++++++++++++++++++++ amiga/gui.h | 1 + amiga/gui_options.c | 6 ++++++ 3 files changed, 34 insertions(+) (limited to 'amiga') diff --git a/amiga/gui.c b/amiga/gui.c index 60d9d3127..bd0715edb 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -2703,6 +2703,33 @@ void ami_toggletabbar(struct gui_window_2 *gwin, bool show) } } +void ami_gui_tabs_toggle_all(void) +{ + struct nsObject *node; + struct nsObject *nnode; + struct gui_window_2 *gwin; + + if(IsMinListEmpty(window_list)) return; + + node = (struct nsObject *)GetHead((struct List *)window_list); + + do { + nnode=(struct nsObject *)GetSucc((struct Node *)node); + gwin = node->objstruct; + + if(node->Type == AMINS_WINDOW) + { + if(gwin->tabs == 1) { + if(nsoption_bool(tab_always_show) == true) { + ami_toggletabbar(gwin, true); + } else { + ami_toggletabbar(gwin, false); + } + } + } + } while(node = nnode); +} + struct gui_window *gui_create_browser_window(struct browser_window *bw, struct browser_window *clone, bool new_tab) { diff --git a/amiga/gui.h b/amiga/gui.h index 6a5434f87..1dff5d3c0 100755 --- a/amiga/gui.h +++ b/amiga/gui.h @@ -154,6 +154,7 @@ bool ami_text_box_at_point(struct gui_window_2 *gwin, ULONG *x, ULONG *y); BOOL ami_gadget_hit(Object *obj, int x, int y); void ami_gui_history(struct gui_window_2 *gwin, bool back); void ami_gui_hotlist_toolbar_update_all(void); +void ami_gui_tabs_toggle_all(void); struct TextFont *origrpfont; struct MinList *window_list; diff --git a/amiga/gui_options.c b/amiga/gui_options.c index d4c119844..a84449eef 100755 --- a/amiga/gui_options.c +++ b/amiga/gui_options.c @@ -1450,6 +1450,7 @@ void ami_gui_opts_use(bool save) struct TextAttr *tattr; char *dot; bool rescan_fonts = false; + bool old_tab_always_show; SetWindowPointer(gow->win, WA_BusyPointer, TRUE, @@ -1689,12 +1690,17 @@ void ami_gui_opts_use(bool save) } GetAttr(GA_Selected,gow->objects[GID_OPTS_TAB_ALWAYS],(ULONG *)&data); + old_tab_always_show = nsoption_bool(tab_always_show); + if (data) { nsoption_set_bool(tab_always_show, true); } else { nsoption_set_bool(tab_always_show, false); } + if(old_tab_always_show != nsoption_bool(tab_always_show)) + ami_gui_tabs_toggle_all(); + GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_SEARCH_PROV],(ULONG *)&nsoption_int(search_provider)); search_web_provider_details(nsoption_int(search_provider)); search_web_retrieve_ico(false); -- cgit v1.2.3