summaryrefslogtreecommitdiff
path: root/frontends/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2016-07-03 17:09:11 +0100
committerChris Young <chris@unsatisfactorysoftware.co.uk>2016-07-03 17:09:11 +0100
commitea9932dd00cc5384bc9f19d2addf683712983a4f (patch)
tree390a3e195f1166d65903adfbdcfe20e31d8e16e7 /frontends/amiga
parent65bf58e4a1999fca0de1279e143f714acc19fe8d (diff)
downloadnetsurf-ea9932dd00cc5384bc9f19d2addf683712983a4f.tar.gz
netsurf-ea9932dd00cc5384bc9f19d2addf683712983a4f.tar.bz2
Handle closing windows and quitting from the menu differently
Diffstat (limited to 'frontends/amiga')
-rw-r--r--frontends/amiga/gui.c14
-rw-r--r--frontends/amiga/gui.h1
-rw-r--r--frontends/amiga/menu.c12
-rwxr-xr-xfrontends/amiga/menu.h12
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