 +			{
 +				BFilePanel *panel;
 +				m->FindPointer("source", (void**)&panel);
-+				if(fFilePanelSem != -1 && 
-+						(panel == &fSavePanel || panel == &fOpenPanel)) 
++				if(fFilePanelSem != -1 && panel == fFilePanel) 
 +				{
 +					delete_sem(fFilePanelSem);
 +					fFilePanelSem = -1;

+		char_u *initdir,
+		char_u *filter)
+{
+	BFilePanel& Panel = (saving == TRUE) ? 
+		gui.vimApp->fSavePanel : gui.vimApp->fOpenPanel;
+
+	gui.vimApp->fBrowsedPath.Unset();
+
+	Panel.Window()->SetTitle((char*)title);
+	//if(initdir != NULL)
+	Panel.SetPanelDirectory((const char*)initdir);
+
+	Panel.Show();
+
+	gui.vimApp->fFilePanelSem = create_sem(0, "FilePanelSem");
+
+	while(acquire_sem(gui.vimApp->fFilePanelSem) == B_INTERRUPTED);
+
+	status_t result = gui.vimApp->fBrowsedPath.InitCheck();
+	if(result == B_OK) {
+		return vim_strsave((char_u*)gui.vimApp->fBrowsedPath.Path());
+	} else
+		if(result != B_NO_INIT) {
+			fprintf(stderr, "gui_mch_browse: BPath error: %#08x (%s)\n", 
+					result, strerror(result));
+		}
+
+	return NULL;
+}
+#endif /* FEAT_BROWSE */
+

diff -Naur vim72/Makefile vim72.haiku/Makefile
--- vim72/Makefile	2009-04-19 20:53:31.000000000 +0000
+++ vim72.haiku/Makefile	2009-04-18 09:14:47.000000000 +0000
@@ -185,6 +185,15 @@
 # - Rename the executables to vimos2.exe, xxdos2.exe and teeos2.exe and copy
 #   them to here.
 # - "make os2bin".
