From ea9932dd00cc5384bc9f19d2addf683712983a4f Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sun, 3 Jul 2016 17:09:11 +0100 Subject: Handle closing windows and quitting from the menu differently --- frontends/amiga/gui.c | 14 ++++++-------- frontends/amiga/gui.h | 1 + frontends/amiga/menu.c | 12 ++++++++---- frontends/amiga/menu.h | 12 +++++++----- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/frontends/amiga/gui.c b/frontends/amiga/gui.c index 3806601ca..36918a934 100644 --- a/frontends/amiga/gui.c +++ b/frontends/amiga/gui.c @@ -2544,16 +2544,14 @@ static void ami_handle_msg(void) // ReplyMsg((struct Message *)message); } + if(gwin->closed == true) { + ami_gui_close_window(gwin); + } + } while((node = nnode)); - if(ami_menu_window_close) - { - if(ami_menu_window_close == (void *)AMI_MENU_WINDOW_CLOSE_ALL) - ami_quit_netsurf(); - else - ami_gui_close_window(ami_menu_window_close); - - ami_menu_window_close = NULL; + if(ami_menu_quit_selected() == true){ + ami_quit_netsurf(); } if(ami_menu_get_check_toggled() == true) { diff --git a/frontends/amiga/gui.h b/frontends/amiga/gui.h index 8b0e22386..4272920dc 100644 --- a/frontends/amiga/gui.h +++ b/frontends/amiga/gui.h @@ -144,6 +144,7 @@ struct gui_window_2 { gui_pointer_shape mouse_pointer; struct Menu *imenu; /* Intuition menu */ struct VisualInfo *vi; /* For GadTools menu */ + bool closed; /* Window has been closed (via menu) */ }; struct gui_window diff --git a/frontends/amiga/menu.c b/frontends/amiga/menu.c index e7b4c6d18..5ae47deda 100644 --- a/frontends/amiga/menu.c +++ b/frontends/amiga/menu.c @@ -87,8 +87,7 @@ enum { NSA_GLYPH_MAX }; -struct gui_window_2 *ami_menu_window_close = NULL; - +static bool menu_quit = false; static bool ami_menu_check_toggled = false; static BOOL menualreadyinit; static Object *menu_glyph[NSA_GLYPH_MAX]; @@ -113,6 +112,11 @@ bool ami_menu_get_check_toggled(void) return check_toggled; } +bool ami_menu_quit_selected(void) +{ + return menu_quit; +} + /* * The below functions are called automatically by window.class when menu items are selected. */ @@ -175,7 +179,7 @@ HOOKF(void, ami_menu_item_project_closewin, APTR, window, struct IntuiMessage *) struct gui_window_2 *gwin; GetAttr(WINDOW_UserData, (Object *)window, (ULONG *)&gwin); - ami_menu_window_close = gwin; + gwin->closed = true; } HOOKF(void, ami_menu_item_project_print, APTR, window, struct IntuiMessage *) @@ -253,7 +257,7 @@ HOOKF(void, ami_menu_item_project_about, APTR, window, struct IntuiMessage *) HOOKF(void, ami_menu_item_project_quit, APTR, window, struct IntuiMessage *) { - ami_menu_window_close = AMI_MENU_WINDOW_CLOSE_ALL; + menu_quit = true; } HOOKF(void, ami_menu_item_edit_cut, APTR, window, struct IntuiMessage *) diff --git a/frontends/amiga/menu.h b/frontends/amiga/menu.h index 91077b662..ac74f38a2 100755 --- a/frontends/amiga/menu.h +++ b/frontends/amiga/menu.h @@ -129,14 +129,9 @@ enum { #define AMI_MENU_BACKIMG FULLMENUNUM(2,8,1) #define AMI_MENU_JS FULLMENUNUM(2,9,0) -/** A special value for ami_menu_window_close */ -#define AMI_MENU_WINDOW_CLOSE_ALL (void *)1 - struct gui_window; struct gui_window_2; -extern struct gui_window_2 *ami_menu_window_close; - void ami_free_menulabs(struct gui_window_2 *gwin); struct Menu *ami_menu_create(struct gui_window_2 *gwin); void ami_menu_refresh(struct gui_window_2 *gwin); @@ -158,5 +153,12 @@ void ami_menu_set_check_toggled(void); * \return true if the menus need refreshing */ bool ami_menu_get_check_toggled(void); + +/** + * Gets if NetSurf has been quit from the menu + * + * \return true if NetSurf has been quit + */ +bool ami_menu_quit_selected(void); #endif -- cgit v1.2.3