patch 8.2.0622: Haiku: GUI does not compile

Problem:    Haiku: GUI does not compile.
Solution:   Various fixes. (Emir Sari, closes #5961)
diff --git a/Filelist b/Filelist
index 422a0d0..581a72d 100644
--- a/Filelist
+++ b/Filelist
@@ -607,6 +607,7 @@
 
 # source files for Haiku (also in the extra archive)
 SRC_HAIKU =	\
+		README_haiku.txt \
 		src/os_haiku.h \
 		src/os_haiku.rdef \
 		src/gui_haiku.cc \
diff --git a/README.md b/README.md
index 4e3d843..d42680c 100644
--- a/README.md
+++ b/README.md
@@ -26,8 +26,8 @@
 with ten fingers can work very fast.  Additionally, function keys can be
 mapped to commands by the user, and the mouse can be used.
 
-Vim runs under MS-Windows (XP, Vista, 7, 8, 10), macOS, VMS and almost all
-flavours of UNIX.  Porting to other systems should not be very difficult.
+Vim runs under MS-Windows (XP, Vista, 7, 8, 10), macOS, Haiku, VMS and almost
+all flavours of UNIX.  Porting to other systems should not be very difficult.
 Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me/NT/2000, Amiga DOS,
 Atari MiNT, BeOS, RISC OS and OS/2.  These are no longer maintained.
 
@@ -72,6 +72,7 @@
 	README_unix.txt		Unix
 	README_dos.txt		MS-DOS and MS-Windows
 	README_mac.txt		Macintosh
+	README_haiku.txt	Haiku
 	README_vms.txt		VMS
 
 There are other `README_*.txt` files, depending on the distribution you used.
diff --git a/READMEdir/README_haiku.txt b/READMEdir/README_haiku.txt
new file mode 100644
index 0000000..7eeb0bb
--- /dev/null
+++ b/READMEdir/README_haiku.txt
@@ -0,0 +1,13 @@
+README_haiku.txt for version 8.2 of Vim: Vi IMproved.
+
+This file explains the installation of Vim on Haiku operating system.
+See "README.txt" for general information about Vim.
+
+Preferred (and easy) way to get Vim on Haiku is to use default Haiku
+software repository HaikuPorts. To get Vim:
+
+- Open HaikuDepot application and search for "vim" package, then install,
+- Open a Terminal and type "pkgman install vim", then follow instructions.
+
+If you prefer to install Vim from source, follow the instructions on
+"runtime/doc/os_haiku.txt", "Compiling Haiku" section.
diff --git a/src/Makefile b/src/Makefile
index b110f91..19453c7 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1404,8 +1404,8 @@
 HAIKUGUI_BUNDLE =
 
 # All GUI files
-ALL_GUI_SRC  = gui.c gui_gtk.c gui_gtk_f.c gui_motif.c gui_xmdlg.c gui_xmebw.c gui_athena.c gui_gtk_x11.c gui_x11.c gui_at_sb.c gui_at_fs.c
-ALL_GUI_PRO  = gui.pro gui_gtk.pro gui_motif.pro gui_xmdlg.pro gui_athena.pro gui_gtk_x11.pro gui_x11.pro gui_w32.pro gui_photon.pro
+ALL_GUI_SRC  = gui.c gui_gtk.c gui_gtk_f.c gui_motif.c gui_xmdlg.c gui_xmebw.c gui_athena.c gui_gtk_x11.c gui_x11.c gui_at_sb.c gui_at_fs.c gui_haiku.cc
+ALL_GUI_PRO  = gui.pro gui_gtk.pro gui_motif.pro gui_xmdlg.pro gui_athena.pro gui_gtk_x11.pro gui_x11.pro gui_w32.pro gui_photon.pro gui_haiku.pro
 
 # }}}
 
diff --git a/src/beval.h b/src/beval.h
index f446200..4332389 100644
--- a/src/beval.h
+++ b/src/beval.h
@@ -79,6 +79,10 @@
 #ifdef FEAT_GUI_MSWIN
     void		*tofree;
 #endif
+#ifdef FEAT_GUI_HAIKU
+    int			x;
+    int			y;
+#endif
 } BalloonEval;
 
 #define EVAL_OFFSET_X 15 // displacement of beval topleft corner from pointer
diff --git a/src/gui_haiku.cc b/src/gui_haiku.cc
index b7ecf64..f26e903 100644
--- a/src/gui_haiku.cc
+++ b/src/gui_haiku.cc
@@ -2916,6 +2916,7 @@
 			menu->button = NULL;
 		}
 	}
+	return true;
 }
 
 	bool
@@ -2926,6 +2927,7 @@
 		if(index >= 0)
 			menu->button->SetEnabled(grey ? false : true);
 	}
+	return true;
 }
 
 	void
@@ -3563,7 +3565,7 @@
 		gui.vimTextArea->MoveTo(x, y);
 		gui.vimTextArea->ResizeTo(w - PEN_WIDTH, h - PEN_WIDTH);
 
-/*#ifdef FEAT_GUI_TABLINE
+#ifdef FEAT_GUI_TABLINE
 		if(gui.vimForm->TabLine() != NULL) {
 			gui.vimForm->TabLine()->ResizeTo(w, gui.vimForm->TablineHeight());
 		}
@@ -3679,7 +3681,7 @@
 	}
 }
 
-#if defined(FEAT_WINDOWS) || defined(PROTO)
+#if defined(FEAT_WINDOWS) || defined(FEAT_GUI_HAIKU) || defined(PROTO)
 void
 gui_mch_destroy_scrollbar(
 		scrollbar_T	*sb)
@@ -3736,7 +3738,7 @@
  * Stop the cursor blinking.  Show the cursor if it wasn't shown.
  */
 	void
-gui_mch_stop_blink()
+gui_mch_stop_blink(int may_call_gui_update_cursor)
 {
 	// TODO
 	if (blink_timer != 0)
@@ -3870,7 +3872,7 @@
 		hl_set_font_name((char_u*)font_name);
 
 		//  Set guifont to the name of the selected font.
-		char_u* new_p_guifont = alloc(STRLEN(font_name) + 1);
+		char_u* new_p_guifont = (char_u*)alloc(STRLEN(font_name) + 1);
 		if (new_p_guifont != NULL) {
 			STRCPY(new_p_guifont, font_name);
 			vim_free(p_guifont);
@@ -4488,7 +4490,7 @@
 			if (gui.in_focus)
 				gui_mch_start_blink();
 			else
-				gui_mch_stop_blink();
+				gui_mch_stop_blink(TRUE);
 			focus = gui.in_focus;
 		}
 
diff --git a/src/proto/gui_haiku.pro b/src/proto/gui_haiku.pro
index 4d4c7d3..f392233 100644
--- a/src/proto/gui_haiku.pro
+++ b/src/proto/gui_haiku.pro
@@ -6,7 +6,7 @@
 void gui_mch_exit(int vim_exitcode);
 int gui_mch_init_check(void);
 void gui_mch_flush(void);
-
+int gui_mch_is_blink_off(void);
 void gui_mch_new_colors(void);
 void gui_mch_set_bg_color(guicolor_T color);
 void gui_mch_set_fg_color(guicolor_T color);
diff --git a/src/version.c b/src/version.c
index e446e6b..7bfe8b0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    622,
+/**/
     621,
 /**/
     620,