home *** CD-ROM | disk | FTP | other *** search
- To: vim-dev@vim.org
- Subject: Patch 6.0.163
- Fcc: outbox
- From: Bram Moolenaar <Bram@moolenaar.net>
- MIME-Version: 1.0
- Content-Type: text/plain; charset=ISO-8859-1
- Content-Transfer-Encoding: 8bit
- ------------
-
- Patch 6.0.163
- Problem: When using a GUI dialog, a file name is sometimes used like it was
- a directory.
- Solution: Separate path and file name properly.
- For GTK, Motif and Athena concatenate directory and file name for
- the default selection.
- Files: src/diff.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c,
- src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c, src/message.c
-
-
- *** ../vim60.162/src/diff.c Wed Sep 19 18:36:35 2001
- --- src/diff.c Sun Feb 3 13:43:37 2002
- ***************
- *** 744,751 ****
- #ifdef FEAT_BROWSE
- if (cmdmod.browse)
- {
- ! browseFile = do_browse(TRUE, (char_u *)_("Patch file"),
- ! NULL, NULL, eap->arg, BROWSE_FILTER_ALL_FILES, curbuf);
- if (browseFile == NULL)
- return; /* operation cancelled */
- eap->arg = browseFile;
- --- 744,751 ----
- #ifdef FEAT_BROWSE
- if (cmdmod.browse)
- {
- ! browseFile = do_browse(FALSE, (char_u *)_("Patch file"),
- ! eap->arg, NULL, NULL, BROWSE_FILTER_ALL_FILES, NULL);
- if (browseFile == NULL)
- return; /* operation cancelled */
- eap->arg = browseFile;
- *** ../vim60.162/src/ex_cmds.c Sun Feb 3 12:33:39 2002
- --- src/ex_cmds.c Sun Feb 3 13:29:29 2002
- ***************
- *** 2050,2057 ****
- #ifdef FEAT_BROWSE
- if (cmdmod.browse)
- {
- ! browse_file = do_browse(TRUE, (char_u *)_("Save As"), NULL,
- ! NULL, ffname, NULL, curbuf);
- if (browse_file == NULL)
- goto theend;
- ffname = browse_file;
- --- 2050,2057 ----
- #ifdef FEAT_BROWSE
- if (cmdmod.browse)
- {
- ! browse_file = do_browse(TRUE, (char_u *)_("Save As"), ffname,
- ! NULL, NULL, NULL, curbuf);
- if (browse_file == NULL)
- goto theend;
- ffname = browse_file;
- ***************
- *** 2308,2314 ****
- /* ":browse wall": ask for file name if there isn't one */
- if (buf->b_ffname == NULL && cmdmod.browse)
- buf->b_ffname = do_browse(TRUE, (char_u *)_("Save As"), NULL,
- ! NULL, (char_u *)"", NULL, buf);
- #endif
- if (buf->b_ffname == NULL)
- {
- --- 2308,2314 ----
- /* ":browse wall": ask for file name if there isn't one */
- if (buf->b_ffname == NULL && cmdmod.browse)
- buf->b_ffname = do_browse(TRUE, (char_u *)_("Save As"), NULL,
- ! NULL, NULL, NULL, buf);
- #endif
- if (buf->b_ffname == NULL)
- {
- ***************
- *** 2535,2542 ****
- #ifdef FEAT_BROWSE
- if (cmdmod.browse)
- {
- ! browse_file = do_browse(FALSE, (char_u *)_("Edit File"), NULL,
- ! NULL, ffname, NULL, curbuf);
- if (browse_file == NULL)
- goto theend;
- ffname = browse_file;
- --- 2535,2542 ----
- #ifdef FEAT_BROWSE
- if (cmdmod.browse)
- {
- ! browse_file = do_browse(FALSE, (char_u *)_("Edit File"), ffname,
- ! NULL, NULL, NULL, curbuf);
- if (browse_file == NULL)
- goto theend;
- ffname = browse_file;
- *** ../vim60.162/src/ex_cmds2.c Wed Oct 31 10:12:03 2001
- --- src/ex_cmds2.c Sun Feb 3 13:44:58 2002
- ***************
- *** 1711,1718 ****
- {
- char_u *fname = NULL;
-
- ! fname = do_browse(FALSE, (char_u *)_("Run Macro"),
- ! NULL, NULL, eap->arg, BROWSE_FILTER_MACROS, curbuf);
- if (fname != NULL)
- {
- cmd_source(fname, eap);
- --- 1711,1718 ----
- {
- char_u *fname = NULL;
-
- ! fname = do_browse(FALSE, (char_u *)_("Run Macro"), eap->arg,
- ! NULL, NULL, BROWSE_FILTER_MACROS, NULL);
- if (fname != NULL)
- {
- cmd_source(fname, eap);
- *** ../vim60.162/src/ex_docmd.c Wed Jan 30 16:52:44 2002
- --- src/ex_docmd.c Sun Feb 3 13:47:11 2002
- ***************
- *** 5554,5560 ****
- && eap->cmdidx != CMD_new)
- {
- fname = do_browse(FALSE, (char_u *)_("Edit File in new window"),
- ! NULL, NULL, eap->arg, NULL, curbuf);
- if (fname == NULL)
- goto theend;
- eap->arg = fname;
- --- 5554,5560 ----
- && eap->cmdidx != CMD_new)
- {
- fname = do_browse(FALSE, (char_u *)_("Edit File in new window"),
- ! eap->arg, NULL, NULL, NULL, curbuf);
- if (fname == NULL)
- goto theend;
- eap->arg = fname;
- ***************
- *** 5923,5930 ****
- {
- char_u *browseFile;
-
- ! browseFile = do_browse(FALSE, (char_u *)_("Append File"), NULL,
- ! NULL, eap->arg, NULL, curbuf);
- if (browseFile != NULL)
- {
- i = readfile(browseFile, NULL,
- --- 5923,5930 ----
- {
- char_u *browseFile;
-
- ! browseFile = do_browse(FALSE, (char_u *)_("Append File"), eap->arg,
- ! NULL, NULL, NULL, curbuf);
- if (browseFile != NULL)
- {
- i = readfile(browseFile, NULL,
- ***************
- *** 6449,6455 ****
- if (cmdmod.browse)
- {
- browseFile = do_browse(TRUE, (char_u *)_("Save Redirection"),
- ! NULL, NULL, eap->arg, BROWSE_FILTER_ALL_FILES, curbuf);
- if (browseFile == NULL)
- return; /* operation cancelled */
- eap->arg = browseFile;
- --- 6449,6455 ----
- if (cmdmod.browse)
- {
- browseFile = do_browse(TRUE, (char_u *)_("Save Redirection"),
- ! eap->arg, NULL, NULL, BROWSE_FILTER_ALL_FILES, curbuf);
- if (browseFile == NULL)
- return; /* operation cancelled */
- eap->arg = browseFile;
- ***************
- *** 6601,6607 ****
- eap->cmdidx == CMD_mksession ? (char_u *)_("Save Session") :
- # endif
- (char_u *)_("Save Setup"),
- ! NULL, (char_u *)"vim", fname, BROWSE_FILTER_MACROS, curbuf);
- if (browseFile == NULL)
- goto theend;
- fname = browseFile;
- --- 6601,6607 ----
- eap->cmdidx == CMD_mksession ? (char_u *)_("Save Session") :
- # endif
- (char_u *)_("Save Setup"),
- ! fname, (char_u *)"vim", NULL, BROWSE_FILTER_MACROS, NULL);
- if (browseFile == NULL)
- goto theend;
- fname = browseFile;
- *** ../vim60.162/src/gui_athena.c Wed Dec 12 20:36:34 2001
- --- src/gui_athena.c Sun Feb 3 15:24:05 2002
- ***************
- *** 1836,1841 ****
- --- 1836,1856 ----
- char_u *filter; /* not used (file name filter) */
- {
- Position x, y;
- + char_u dirbuf[MAXPATHL];
- +
- + /* Concatenate "initdir" and "dflt". */
- + if (initdir == NULL || *initdir == NUL)
- + mch_dirname(dirbuf, MAXPATHL);
- + else if (STRLEN(initdir) + 2 < MAXPATHL)
- + STRCPY(dirbuf, initdir);
- + else
- + dirbuf[0] = NUL;
- + if (dflt != NULL && *dflt != NUL
- + && STRLEN(dirbuf) + 2 + STRLEN(dflt) < MAXPATHL)
- + {
- + add_pathsep(dirbuf);
- + STRCAT(dirbuf, dflt);
- + }
-
- /* Position the file selector just below the menubar */
- XtTranslateCoords(vimShell, (Position)0, (Position)
- ***************
- *** 1845,1851 ****
- 0
- #endif
- , &x, &y);
- ! return (char_u *)vim_SelFile(vimShell, (char *)title, (char *)initdir,
- NULL, (int)x, (int)y, gui.menu_fg_pixel, gui.menu_bg_pixel);
- }
- #endif
- --- 1860,1866 ----
- 0
- #endif
- , &x, &y);
- ! return (char_u *)vim_SelFile(vimShell, (char *)title, (char *)dirbuf,
- NULL, (int)x, (int)y, gui.menu_fg_pixel, gui.menu_bg_pixel);
- }
- #endif
- *** ../vim60.162/src/gui_gtk.c Fri Dec 14 20:19:45 2001
- --- src/gui_gtk.c Sun Feb 3 15:25:14 2002
- ***************
- *** 875,890 ****
- /* if our pointer is currently hidden, then we should show it. */
- gui_mch_mousehide(FALSE);
-
- ! if (dflt == NULL)
- ! dflt = (char_u *)"";
- if (initdir == NULL || *initdir == NUL)
- - {
- mch_dirname(dirbuf, MAXPATHL);
- ! strcat((char *)dirbuf, "/"); /* make sure this is a directory */
- ! initdir = dirbuf;
- ! }
- gtk_file_selection_set_filename(GTK_FILE_SELECTION(gui.filedlg),
- ! (const gchar *)initdir);
-
- gui_gtk_position_in_parent(GTK_WIDGET(gui.mainwin),
- GTK_WIDGET(gui.filedlg), VW_POS_MOUSE);
- --- 875,895 ----
- /* if our pointer is currently hidden, then we should show it. */
- gui_mch_mousehide(FALSE);
-
- ! /* Concatenate "initdir" and "dflt". */
- if (initdir == NULL || *initdir == NUL)
- mch_dirname(dirbuf, MAXPATHL);
- ! else if (STRLEN(initdir) + 2 < MAXPATHL)
- ! STRCPY(dirbuf, initdir);
- ! else
- ! dirbuf[0] = NUL;
- ! /* Always need a trailing slash for a directory. */
- ! add_pathsep(dirbuf);
- ! if (dflt != NULL && *dflt != NUL
- ! && STRLEN(dirbuf) + 2 + STRLEN(dflt) < MAXPATHL)
- ! STRCAT(dirbuf, dflt);
- !
- gtk_file_selection_set_filename(GTK_FILE_SELECTION(gui.filedlg),
- ! (const gchar *)dirbuf);
-
- gui_gtk_position_in_parent(GTK_WIDGET(gui.mainwin),
- GTK_WIDGET(gui.filedlg), VW_POS_MOUSE);
- ***************
- *** 900,906 ****
-
- #endif /* FEAT_BROWSE */
-
- ! #ifdef FEAT_GUI_DIALOG
-
- static char_u *dialog_textfield = NULL;
- static GtkWidget *dialog_textentry;
- --- 905,911 ----
-
- #endif /* FEAT_BROWSE */
-
- ! #if defined(FEAT_GUI_DIALOG) || defined(PROTO)
-
- static char_u *dialog_textfield = NULL;
- static GtkWidget *dialog_textentry;
- *** ../vim60.162/src/gui_motif.c Wed Sep 26 16:47:48 2001
- --- src/gui_motif.c Sun Feb 3 14:23:53 2002
- ***************
- *** 1531,1537 ****
-
- str = XmStringCreate(new_label, STRING_TAG);
-
- ! if (str) {
- XtVaSetValues(w, XmNlabelString, str, NULL);
- XmStringFree(str);
- }
- --- 1531,1538 ----
-
- str = XmStringCreate(new_label, STRING_TAG);
-
- ! if (str)
- ! {
- XtVaSetValues(w, XmNlabelString, str, NULL);
- XmStringFree(str);
- }
- ***************
- *** 1552,1568 ****
- char_u *filter; /* file name filter */
- {
- char_u dirbuf[MAXPATHL];
- char_u *pattern;
- char_u *tofree = NULL;
-
- dialog_wgt = XmCreateFileSelectionDialog(vimShell, (char *)title, NULL, 0);
-
- - if (dflt == NULL)
- - dflt = (char_u *)"";
- if (initdir == NULL || *initdir == NUL)
- {
- mch_dirname(dirbuf, MAXPATHL);
- initdir = dirbuf;
- }
-
- /* Can only use one pattern for a file name. Get the first pattern out of
- --- 1553,1580 ----
- char_u *filter; /* file name filter */
- {
- char_u dirbuf[MAXPATHL];
- + char_u dfltbuf[MAXPATHL];
- char_u *pattern;
- char_u *tofree = NULL;
-
- dialog_wgt = XmCreateFileSelectionDialog(vimShell, (char *)title, NULL, 0);
-
- if (initdir == NULL || *initdir == NUL)
- {
- mch_dirname(dirbuf, MAXPATHL);
- initdir = dirbuf;
- + }
- +
- + if (dflt == NULL)
- + dflt = (char_u *)"";
- + else if (STRLEN(initdir) + STRLEN(dflt) + 2 < MAXPATHL)
- + {
- + /* The default selection should be the full path, "dflt" is only the
- + * file name. */
- + STRCPY(dfltbuf, initdir);
- + add_pathsep(dfltbuf);
- + STRCAT(dfltbuf, dflt);
- + dflt = dfltbuf;
- }
-
- /* Can only use one pattern for a file name. Get the first pattern out of
- *** ../vim60.162/src/message.c Fri Sep 28 22:19:57 2001
- --- src/message.c Sun Feb 3 13:42:00 2002
- ***************
- *** 2475,2483 ****
- do_browse(saving, title, dflt, ext, initdir, filter, buf)
- int saving; /* write action */
- char_u *title; /* title for the window */
- ! char_u *dflt; /* default file name */
- char_u *ext; /* extension added */
- ! char_u *initdir; /* initial directory, NULL for current dir */
- char_u *filter; /* file name filter */
- buf_T *buf; /* buffer to read/write for */
- {
- --- 2475,2484 ----
- do_browse(saving, title, dflt, ext, initdir, filter, buf)
- int saving; /* write action */
- char_u *title; /* title for the window */
- ! char_u *dflt; /* default file name (may include directory) */
- char_u *ext; /* extension added */
- ! char_u *initdir; /* initial directory, NULL for current dir or
- ! when using path from "dflt" */
- char_u *filter; /* file name filter */
- buf_T *buf; /* buffer to read/write for */
- {
- ***************
- *** 2498,2505 ****
- title = (char_u *)_("Open File dialog");
- }
-
- ! /* When no directory specified, use default dir, buffer dir, last dir
- ! * or current dir */
- if (initdir == NULL || *initdir == NUL)
- {
- /* When 'browsedir' is a directory, use it */
- --- 2499,2525 ----
- title = (char_u *)_("Open File dialog");
- }
-
- ! /* When no directory specified, use default file name, default dir, buffer
- ! * dir, last dir or current dir */
- ! if ((initdir == NULL || *initdir == NUL) && dflt != NULL && *dflt != NUL)
- ! {
- ! if (mch_isdir(dflt)) /* default file name is a directory */
- ! {
- ! initdir = dflt;
- ! dflt = NULL;
- ! }
- ! else if (gettail(dflt) != dflt) /* default file name includes a path */
- ! {
- ! tofree = vim_strsave(dflt);
- ! if (tofree != NULL)
- ! {
- ! initdir = tofree;
- ! *gettail(initdir) = NUL;
- ! dflt = gettail(dflt);
- ! }
- ! }
- ! }
- !
- if (initdir == NULL || *initdir == NUL)
- {
- /* When 'browsedir' is a directory, use it */
- ***************
- *** 2509,2515 ****
- else if ((saving || *p_bsdir == 'b')
- && buf != NULL && buf->b_ffname != NULL)
- {
- ! dflt = gettail(curbuf->b_ffname);
- tofree = vim_strsave(curbuf->b_ffname);
- if (tofree != NULL)
- {
- --- 2529,2536 ----
- else if ((saving || *p_bsdir == 'b')
- && buf != NULL && buf->b_ffname != NULL)
- {
- ! if (dflt == NULL || *dflt == NUL)
- ! dflt = gettail(curbuf->b_ffname);
- tofree = vim_strsave(curbuf->b_ffname);
- if (tofree != NULL)
- {
- ***************
- *** 2560,2566 ****
- *gettail(last_dir) = NUL;
- if (*last_dir == NUL)
- {
- ! /* filename only returned, must be in current dir*/
- vim_free(last_dir);
- last_dir = alloc(MAXPATHL);
- if (last_dir != NULL)
- --- 2581,2587 ----
- *gettail(last_dir) = NUL;
- if (*last_dir == NUL)
- {
- ! /* filename only returned, must be in current dir */
- vim_free(last_dir);
- last_dir = alloc(MAXPATHL);
- if (last_dir != NULL)
- *** ../vim60.162/src/version.c Sun Feb 3 12:42:13 2002
- --- src/version.c Sun Feb 3 15:16:22 2002
- ***************
- *** 608,609 ****
- --- 608,611 ----
- { /* Add new patch number below this line */
- + /**/
- + 163,
- /**/
-
- --
- hundred-and-one symptoms of being an internet addict:
- 168. You have your own domain name.
-
- /// Bram Moolenaar -- Bram@moolenaar.net -- http://www.moolenaar.net \\\
- ((( Creator of Vim -- http://vim.sf.net -- ftp://ftp.vim.org/pub/vim )))
- \\\ Help me helping AIDS orphans in Uganda - http://iccf-holland.org ///
-