summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2012-12-09 20:39:10 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2012-12-09 20:39:10 +0000
commit02a4bfd375110c268837931a8714fab0dc154d50 (patch)
tree33aa215650f42aadb737572cbe356ea827e58293
parentaf8c3ef0c359a4c86531755659af7688e8b3f08e (diff)
downloadnetsurf-02a4bfd375110c268837931a8714fab0dc154d50.tar.gz
netsurf-02a4bfd375110c268837931a8714fab0dc154d50.tar.bz2
Toggle the tab bar to the correct state if the option to always show it is changed and only one tab is currently open
-rwxr-xr-xamiga/gui.c27
-rwxr-xr-xamiga/gui.h1
-rwxr-xr-xamiga/gui_options.c6
3 files changed, 34 insertions, 0 deletions
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);