winhelp: Properly quit winhelp when no file are given on command line.
authorEric Pouech <eric.pouech@orange.fr>
Sat, 21 Jun 2008 08:50:26 +0000 (10:50 +0200)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 23 Jun 2008 10:47:01 +0000 (12:47 +0200)
programs/winhlp32/winhelp.c

index 3b8f173a5638983e90789de5432181cab1c72227..f5d512bfe67ffe4ae64db9708b084186b90656cc 100644 (file)
@@ -376,6 +376,13 @@ typedef struct
     WORD ofsData;
 } WINHELP,*LPWINHELP;
 
+static BOOL WINHELP_HasWorkingWindow(void)
+{
+    if (!Globals.active_win) return FALSE;
+    if (Globals.active_win->next || Globals.win_list != Globals.active_win) return TRUE;
+    return Globals.active_win->page != NULL && Globals.active_win->page->file != NULL;
+}
+
 /******************************************************************
  *             WINHELP_HandleCommand
  *
@@ -407,6 +414,7 @@ static LRESULT  WINHELP_HandleCommand(HWND hSrcWnd, LPARAM lParam)
             {
                 MACRO_JumpContext(ptr, "main", wh->data);
             }
+            if (!WINHELP_HasWorkingWindow()) MACRO_Exit();
             break;
         case HELP_QUIT:
             MACRO_Exit();
@@ -416,9 +424,11 @@ static LRESULT  WINHELP_HandleCommand(HWND hSrcWnd, LPARAM lParam)
             {
                 MACRO_JumpContents(ptr, "main");
             }
+            if (!WINHELP_HasWorkingWindow()) MACRO_Exit();
             break;
         case HELP_HELPONHELP:
             MACRO_HelpOn();
+            if (!WINHELP_HasWorkingWindow()) MACRO_Exit();
             break;
         /* case HELP_SETINDEX: */
         case HELP_SETCONTENTS: