Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
7a50e6bb
Commit
7a50e6bb
authored
Aug 18, 2000
by
Gerard Patel
Committed by
Alexandre Julliard
Aug 18, 2000
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Avoids changing 2 levels when clicking .. in the directory list.
parent
eca7f9fc
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
61 additions
and
39 deletions
+61
-39
filedlg.c
dlls/commdlg/filedlg.c
+61
-39
No files found.
dlls/commdlg/filedlg.c
View file @
7a50e6bb
...
...
@@ -17,12 +17,9 @@
#include "ldt.h"
#include "heap.h"
#include "commdlg.h"
#include "dialog.h"
#include "dlgs.h"
#include "module.h"
#include "drive.h"
#include "debugtools.h"
#include "winproc.h"
#include "cderr.h"
#include "tweak.h"
...
...
@@ -315,17 +312,17 @@ static BOOL FILEDLG_CallWindowProc(LFSPRIVATE lfs, UINT wMsg, WPARAM wParam,
/***********************************************************************
* FILEDLG_ScanDir
[internal]
* FILEDLG_ScanDir
[internal]
*/
static
BOOL
FILEDLG_ScanDir
(
HWND
hWnd
,
LPWSTR
newPath
)
static
BOOL
FILEDLG_ScanDir
(
HWND
hWnd
,
LPWSTR
newPath
,
BOOL
bChgDir
)
{
WCHAR
buffer
[
BUFFILE
];
HWND
hdlg
;
if
(
bChgDir
)
if
(
!
SetCurrentDirectoryW
(
newPath
))
return
FALSE
;
lstrcpynW
(
buffer
,
newPath
,
sizeof
(
buffer
));
if
(
!
SetCurrentDirectoryW
(
newPath
))
return
FALSE
;
/* get the list of spec files */
GetDlgItemTextW
(
hWnd
,
edt1
,
buffer
,
sizeof
(
buffer
));
/* list of files */
...
...
@@ -351,6 +348,7 @@ static BOOL FILEDLG_ScanDir(HWND hWnd, LPWSTR newPath)
return
DlgDirListW
(
hWnd
,
buffer
,
lst2
,
stc1
,
DDL_EXCLUSIVE
|
DDL_DIRECTORY
);
}
/***********************************************************************
* FILEDLG_GetFileType [internal]
*/
...
...
@@ -587,9 +585,9 @@ static LONG FILEDLG_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
}
else
*
tmpstr
=
0
;
if
(
!
FILEDLG_ScanDir
(
hWnd
,
tmpstr
))
{
if
(
!
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
))
{
*
tmpstr
=
0
;
if
(
!
FILEDLG_ScanDir
(
hWnd
,
tmpstr
))
if
(
!
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
))
WARN
(
"Couldn't read initial directory %s!
\n
"
,
debugstr_w
(
tmpstr
));
}
/* select current drive in combo 2, omit missing drives */
...
...
@@ -667,6 +665,54 @@ void FILEDLG_UpdateFileTitle(LFSPRIVATE lfs)
}
}
/***********************************************************************
* FILEDLG_DirListDblClick [internal]
*/
static
LRESULT
FILEDLG_DirListDblClick
(
HWND
hWnd
,
LFSPRIVATE
lfs
)
{
LONG
lRet
;
LPWSTR
pstr
;
WCHAR
tmpstr
[
BUFFILE
];
/* get the raw string (with brackets) */
lRet
=
SendDlgItemMessageW
(
hWnd
,
lst2
,
LB_GETCURSEL
,
0
,
0
);
if
(
lRet
==
LB_ERR
)
return
TRUE
;
pstr
=
HeapAlloc
(
GetProcessHeap
(),
0
,
BUFFILEALLOC
);
SendDlgItemMessageW
(
hWnd
,
lst2
,
LB_GETTEXT
,
lRet
,
(
LPARAM
)
pstr
);
strcpyW
(
tmpstr
,
pstr
);
HeapFree
(
GetProcessHeap
(),
0
,
pstr
);
/* get the selected directory in tmpstr */
if
(
tmpstr
[
0
]
==
'['
)
{
tmpstr
[
lstrlenW
(
tmpstr
)
-
1
]
=
0
;
strcpyW
(
tmpstr
,
tmpstr
+
1
);
}
strcatW
(
tmpstr
,
FILE_bslash
);
/* directory *has* to be changed before notifying the hook */
SetCurrentDirectoryW
(
tmpstr
);
/* notify the app */
if
(
lfs
->
hook
)
{
if
(
FILEDLG_CallWindowProc
(
lfs
,
lfs
->
lbselchstring
,
lst2
,
MAKELONG
(
lRet
,
CD_LBSELCHANGE
)))
return
TRUE
;
}
lRet
=
SendDlgItemMessageW
(
hWnd
,
cmb1
,
CB_GETCURSEL
,
0
,
0
);
if
(
lRet
==
LB_ERR
)
return
TRUE
;
pstr
=
(
LPWSTR
)
SendDlgItemMessageW
(
hWnd
,
cmb1
,
CB_GETITEMDATA
,
lRet
,
0
);
TRACE
(
"Selected filter : %s
\n
"
,
debugstr_w
(
pstr
));
SetDlgItemTextW
(
hWnd
,
edt1
,
pstr
);
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
FALSE
);
return
TRUE
;
}
/***********************************************************************
* FILEDLG_WMCommand [internal]
*/
...
...
@@ -707,31 +753,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, LPARAM lParam, UINT notification,
FILEDLG_StripEditControl
(
hWnd
);
if
(
notification
==
LBN_DBLCLK
)
{
/* get the raw string (with brackets) */
lRet
=
SendDlgItemMessageW
(
hWnd
,
lst2
,
LB_GETCURSEL
,
0
,
0
);
if
(
lRet
==
LB_ERR
)
return
TRUE
;
pstr
=
HeapAlloc
(
GetProcessHeap
(),
0
,
BUFFILEALLOC
);
SendDlgItemMessageW
(
hWnd
,
lst2
,
LB_GETTEXT
,
lRet
,
(
LPARAM
)
pstr
);
strcpyW
(
tmpstr
,
pstr
);
HeapFree
(
GetProcessHeap
(),
0
,
pstr
);
/* get the selected directory in tmpstr */
if
(
tmpstr
[
0
]
==
'['
)
{
tmpstr
[
lstrlenW
(
tmpstr
)
-
1
]
=
0
;
strcpyW
(
tmpstr
,
tmpstr
+
1
);
}
strcatW
(
tmpstr
,
FILE_bslash
);
/* directory *has* to be changed before notifying the hook */
SetCurrentDirectoryW
(
tmpstr
);
/* notify the app */
if
(
lfs
->
hook
)
{
if
(
FILEDLG_CallWindowProc
(
lfs
,
lfs
->
lbselchstring
,
control
,
MAKELONG
(
lRet
,
CD_LBSELCHANGE
)))
return
TRUE
;
}
goto
reset_scan
;
return
FILEDLG_DirListDblClick
(
hWnd
,
lfs
);
}
return
TRUE
;
...
...
@@ -767,7 +789,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, LPARAM lParam, UINT notification,
pstr
=
(
LPWSTR
)
SendDlgItemMessageW
(
hWnd
,
cmb1
,
CB_GETITEMDATA
,
lRet
,
0
);
TRACE
(
"Selected filter : %s
\n
"
,
debugstr_w
(
pstr
));
SetDlgItemTextW
(
hWnd
,
edt1
,
pstr
);
FILEDLG_ScanDir
(
hWnd
,
tmpstr
);
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
);
in_update
=
TRUE
;
case
IDOK
:
...
...
@@ -796,7 +818,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, LPARAM lParam, UINT notification,
TRACE
(
"tmpstr=%s, tmpstr2=%s
\n
"
,
debugstr_w
(
tmpstr
),
debugstr_w
(
tmpstr2
));
SetDlgItemTextW
(
hWnd
,
edt1
,
tmpstr2
);
FILEDLG_ScanDir
(
hWnd
,
tmpstr
);
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
);
return
TRUE
;
}
/* no wildcards, we might have a directory or a filename */
...
...
@@ -817,7 +839,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, LPARAM lParam, UINT notification,
if
(
!
in_update
)
{
/* if ScanDir succeeds, we have changed the directory */
if
(
FILEDLG_ScanDir
(
hWnd
,
tmpstr
))
if
(
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
))
return
TRUE
;
}
/* if not, this must be a filename */
...
...
@@ -830,7 +852,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, LPARAM lParam, UINT notification,
SetDlgItemTextW
(
hWnd
,
edt1
,
pstr
+
1
);
lstrcpynW
(
tmpstr2
,
pstr
+
1
,
sizeof
(
tmpstr2
)
);
/* Should we MessageBox() if this fails? */
if
(
!
FILEDLG_ScanDir
(
hWnd
,
tmpstr
))
return
TRUE
;
if
(
!
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
))
return
TRUE
;
strcpyW
(
tmpstr
,
tmpstr2
);
}
else
SetDlgItemTextW
(
hWnd
,
edt1
,
tmpstr
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment