Implement switching of file sort order.
This commit is contained in:
parent
c6b0ad6963
commit
a55f54fb44
|
@ -93,10 +93,10 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "A&lle Dateiangaben" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "&Bestimmte Dateiangaben..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Nach N&ame" , 404
|
||||
MENUITEM "Nach T&yp" , 405
|
||||
MENUITEM "Nach &Größe" , 406
|
||||
MENUITEM "Nach &Datum" , 407
|
||||
MENUITEM "Nach N&ame" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "Nach T&yp" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "Nach &Größe" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "Nach &Datum" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Angaben ausw&ählen..." , 409
|
||||
}
|
||||
|
|
|
@ -92,12 +92,12 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "&All File Details" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "&Partial Details..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Sort by Name" , 404
|
||||
MENUITEM "Sort &by Type" , 405
|
||||
MENUITEM "Sort by Si&ze" , 406
|
||||
MENUITEM "Sort by &Date" , 407
|
||||
MENUITEM "&Sort by Name" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "Sort &by Type" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "Sort by Si&ze" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "Sort by &Date" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sort by &..." , 409
|
||||
MENUITEM "Filter by &..." , 409
|
||||
}
|
||||
|
||||
POPUP "&Options" {
|
||||
|
|
|
@ -90,10 +90,10 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "T&odos los detalles" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "Detalles &parciales..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Ordenar por &nombre" , 404
|
||||
MENUITEM "Ordenar por &tipo" , 405
|
||||
MENUITEM "Ordenar por t&amaño" , 406
|
||||
MENUITEM "Ordenar por &fecha" , 407
|
||||
MENUITEM "Ordenar por &nombre" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "Ordenar por &tipo" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "Ordenar por t&amaño" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "Ordenar por &fecha" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Ordenar por &..." , 409
|
||||
}
|
||||
|
|
|
@ -93,10 +93,10 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "Tous &les Détails" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "&Détails..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Trier par N&om" , 404
|
||||
MENUITEM "Trier par &Type" , 405
|
||||
MENUITEM "Trier par Ta&ille" , 406
|
||||
MENUITEM "Trier par Dat&e" , 407
|
||||
MENUITEM "Trier par N&om" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "Trier par &Type" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "Trier par Ta&ille" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "Trier par Dat&e" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Trier par &..." , 409
|
||||
}
|
||||
|
|
|
@ -93,10 +93,10 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "&Minden részlet" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "&Egyedi..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Rendezés név szerint" , 404
|
||||
MENUITEM "Rendezés k&iterjesztés szerint" , 405
|
||||
MENUITEM "Rendezés &méret szerint" , 406
|
||||
MENUITEM "Rendezés &dátum szerint" , 407
|
||||
MENUITEM "&Rendezés név szerint" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "Rendezés k&iterjesztés szerint" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "Rendezés &méret szerint" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "Rendezés &dátum szerint" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Egyedi rendezés &..." , 409
|
||||
}
|
||||
|
|
|
@ -93,10 +93,10 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "&Mostra tutti i dettagli sui file" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "&Mostra dettagli parziali..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ordina per Nome" , 404
|
||||
MENUITEM "&Ordina per Tipo" , 405
|
||||
MENUITEM "&Ordina per Dimensione" , 406
|
||||
MENUITEM "&Ordina per Data" , 407
|
||||
MENUITEM "&Ordina per Nome" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "&Ordina per Tipo" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "&Ordina per Dimensione" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "&Ordina per Data" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Ordina per &..." , 409
|
||||
}
|
||||
|
|
|
@ -89,10 +89,10 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "&Alle details" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "&Gedeeltelijke details..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sorteer op &naam" , 404
|
||||
MENUITEM "Sorteer op &type" , 405
|
||||
MENUITEM "Sorteer op &grootte" , 406
|
||||
MENUITEM "Sorteer op &datum" , 407
|
||||
MENUITEM "Sorteer op &naam" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "Sorteer op &type" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "Sorteer op &grootte" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "Sorteer op &datum" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sorteer op &..." , 409
|
||||
}
|
||||
|
|
|
@ -92,10 +92,10 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "&Todos os delalhes" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "D&etalhes parciais..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Classificar por nome" , 404
|
||||
MENUITEM "C&lassificar por tipo" , 405
|
||||
MENUITEM "Cl&assificar por tamanho" , 406
|
||||
MENUITEM "Cla&ssificar por &data" , 407
|
||||
MENUITEM "&Classificar por nome" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "C&lassificar por tipo" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "Cl&assificar por tamanho" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "Cla&ssificar por &data" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Classificar &por..." , 409
|
||||
}
|
||||
|
@ -219,10 +219,10 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "&Todos os delalhes" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "D&etalhes parciais..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Classificar por nome" , 404
|
||||
MENUITEM "C&lassificar por tipo" , 405
|
||||
MENUITEM "Cl&assificar por tamanho" , 406
|
||||
MENUITEM "Cla&ssificar por &data" , 407
|
||||
MENUITEM "&Classificar por nome" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "C&lassificar por tipo" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "Cl&assificar por tamanho" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "Cla&ssificar por &data" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Classificar &por..." , 409
|
||||
}
|
||||
|
|
|
@ -89,10 +89,10 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "Â&ñå ïîäðîáíîñòè î ôàéëå" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "&Âûáîðî÷íî î ôàéëå..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Сортировать по имени" , 404
|
||||
MENUITEM "Сортировать по &типу" , 405
|
||||
MENUITEM "Сортировать по &размеру" , 406
|
||||
MENUITEM "Сортировать по д&ате" , 407
|
||||
MENUITEM "&Сортировать по имени" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "Сортировать по &типу" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "Сортировать по &размеру" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "Сортировать по д&ате" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Ñîðòèðîâàòü ïî &..." , 409
|
||||
}
|
||||
|
|
|
@ -90,12 +90,12 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "&All File Details" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "&Partial Details..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Sort by Name" , 404
|
||||
MENUITEM "Sort &by Type" , 405
|
||||
MENUITEM "Sort by Si&ze" , 406
|
||||
MENUITEM "Sort by &Date" , 407
|
||||
MENUITEM "&Sort by Name" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "Sort &by Type" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "Sort by Si&ze" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "Sort by &Date" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sort by &..." , 409
|
||||
MENUITEM "Filter by &..." , 409
|
||||
}
|
||||
|
||||
POPUP "&Options" {
|
||||
|
|
|
@ -90,10 +90,10 @@ IDM_WINEFILE MENU FIXED IMPURE
|
|||
MENUITEM "文件详悉列表(&A)" , ID_VIEW_ALL_ATTRIBUTES, CHECKED
|
||||
MENUITEM "部分属性(&P)..." , ID_VIEW_SELECTED_ATTRIBUTES
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "按文件名排序(&S)" , 404
|
||||
MENUITEM "按类型排序(&B)" , 405
|
||||
MENUITEM "按大小排序(&Z)" , 406
|
||||
MENUITEM "按日期排序(&D)" , 407
|
||||
MENUITEM "按文件名排序(&S)" , ID_VIEW_SORT_NAME
|
||||
MENUITEM "按类型排序(&B)" , ID_VIEW_SORT_TYPE
|
||||
MENUITEM "按大小排序(&Z)" , ID_VIEW_SORT_SIZE
|
||||
MENUITEM "按日期排序(&D)" , ID_VIEW_SORT_DATE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "定制排序..." , 409
|
||||
}
|
||||
|
|
|
@ -44,6 +44,10 @@
|
|||
#define ID_VIEW_NAME 401
|
||||
#define ID_VIEW_ALL_ATTRIBUTES 402
|
||||
#define ID_VIEW_SELECTED_ATTRIBUTES 403
|
||||
#define ID_VIEW_SORT_NAME 404
|
||||
#define ID_VIEW_SORT_TYPE 405
|
||||
#define ID_VIEW_SORT_SIZE 406
|
||||
#define ID_VIEW_SORT_DATE 407
|
||||
#define ID_SELECT_FONT 510
|
||||
#define ID_VIEW_TOOL_BAR 508
|
||||
#define ID_VIEW_DRIVE_BAR 507
|
||||
|
|
|
@ -168,7 +168,8 @@ extern void WineWarranty(HWND hwnd);
|
|||
|
||||
|
||||
static void read_directory(Entry* dir, LPCTSTR path, SORT_ORDER sortOrder, HWND hwnd);
|
||||
static void set_curdir(ChildWnd* child, Entry* entry, HWND hwnd);
|
||||
static void set_curdir(ChildWnd* child, Entry* entry, int idx, HWND hwnd);
|
||||
static void refresh_child(ChildWnd* child);
|
||||
static void get_path(Entry* dir, PTSTR path);
|
||||
|
||||
LRESULT CALLBACK FrameWndProc(HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam);
|
||||
|
@ -1260,13 +1261,59 @@ static void read_directory(Entry* dir, LPCTSTR path, SORT_ORDER sortOrder, HWND
|
|||
}
|
||||
|
||||
|
||||
static ChildWnd* alloc_child_window(LPCTSTR path, LPITEMIDLIST pidl, HWND hwnd)
|
||||
static Entry* read_tree(Root* root, LPCTSTR path, LPITEMIDLIST pidl, LPTSTR drv, SORT_ORDER sortOrder, HWND hwnd)
|
||||
{
|
||||
const static TCHAR sBackslash[] = {'\\', '\0'};
|
||||
#if !defined(_NO_EXTENSIONS) && defined(__WINE__)
|
||||
const static TCHAR sSlash[] = {'/', '\0'};
|
||||
#endif
|
||||
const static TCHAR sBackslash[] = {'\\', '\0'};
|
||||
|
||||
#ifdef _SHELL_FOLDERS
|
||||
if (pidl)
|
||||
{
|
||||
/* read shell namespace tree */
|
||||
root->drive_type = DRIVE_UNKNOWN;
|
||||
drv[0] = '\\';
|
||||
drv[1] = '\0';
|
||||
load_string(root->volname, IDS_DESKTOP);
|
||||
root->fs_flags = 0;
|
||||
load_string(root->fs, IDS_SHELL);
|
||||
|
||||
return read_tree_shell(root, pidl, sortOrder, hwnd);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#if !defined(_NO_EXTENSIONS) && defined(__WINE__)
|
||||
if (*path == '/')
|
||||
{
|
||||
/* read unix file system tree */
|
||||
root->drive_type = GetDriveType(path);
|
||||
|
||||
lstrcat(drv, sSlash);
|
||||
load_string(root->volname, IDS_ROOT_FS);
|
||||
root->fs_flags = 0;
|
||||
load_string(root->fs, IDS_UNIXFS);
|
||||
|
||||
lstrcpy(root->path, sSlash);
|
||||
|
||||
return read_tree_unix(root, path, sortOrder, hwnd);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* read WIN32 file system tree */
|
||||
root->drive_type = GetDriveType(path);
|
||||
|
||||
lstrcat(drv, sBackslash);
|
||||
GetVolumeInformation(drv, root->volname, _MAX_FNAME, 0, 0, &root->fs_flags, root->fs, _MAX_DIR);
|
||||
|
||||
lstrcpy(root->path, drv);
|
||||
|
||||
return read_tree_win(root, path, sortOrder, hwnd);
|
||||
}
|
||||
|
||||
|
||||
static ChildWnd* alloc_child_window(LPCTSTR path, LPITEMIDLIST pidl, HWND hwnd)
|
||||
{
|
||||
TCHAR drv[_MAX_DRIVE+1], dir[_MAX_DIR], name[_MAX_FNAME], ext[_MAX_EXT];
|
||||
TCHAR b1[BUFFER_LEN];
|
||||
|
||||
|
@ -1308,44 +1355,7 @@ static ChildWnd* alloc_child_window(LPCTSTR path, LPITEMIDLIST pidl, HWND hwnd)
|
|||
|
||||
root->entry.level = 0;
|
||||
|
||||
#ifdef _SHELL_FOLDERS
|
||||
if (pidl)
|
||||
{
|
||||
root->drive_type = DRIVE_UNKNOWN;
|
||||
drv[0] = '\\';
|
||||
drv[1] = '\0';
|
||||
load_string(root->volname, IDS_DESKTOP);
|
||||
root->fs_flags = 0;
|
||||
load_string(root->fs, IDS_SHELL);
|
||||
|
||||
entry = read_tree_shell(root, pidl, child->sortOrder, hwnd);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#if !defined(_NO_EXTENSIONS) && defined(__WINE__)
|
||||
if (*path == '/')
|
||||
{
|
||||
root->drive_type = GetDriveType(path);
|
||||
|
||||
lstrcat(drv, sSlash);
|
||||
load_string(root->volname, IDS_ROOT_FS);
|
||||
root->fs_flags = 0;
|
||||
load_string(root->fs, IDS_UNIXFS);
|
||||
|
||||
lstrcpy(root->path, sSlash);
|
||||
entry = read_tree_unix(root, path, child->sortOrder, hwnd);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
root->drive_type = GetDriveType(path);
|
||||
|
||||
lstrcat(drv, sBackslash);
|
||||
GetVolumeInformation(drv, root->volname, _MAX_FNAME, 0, 0, &root->fs_flags, root->fs, _MAX_DIR);
|
||||
|
||||
lstrcpy(root->path, drv);
|
||||
entry = read_tree_win(root, path, child->sortOrder, hwnd);
|
||||
}
|
||||
entry = read_tree(root, path, pidl, drv, child->sortOrder, hwnd);
|
||||
|
||||
#ifdef _SHELL_FOLDERS
|
||||
if (root->entry.etype == ET_SHELL)
|
||||
|
@ -1359,7 +1369,7 @@ static ChildWnd* alloc_child_window(LPCTSTR path, LPITEMIDLIST pidl, HWND hwnd)
|
|||
child->left.root = &root->entry;
|
||||
child->right.root = NULL;
|
||||
|
||||
set_curdir(child, entry, hwnd);
|
||||
set_curdir(child, entry, 0, hwnd);
|
||||
|
||||
return child;
|
||||
}
|
||||
|
@ -1551,7 +1561,8 @@ static HWND create_child_window(ChildWnd* child)
|
|||
|
||||
ListBox_SetItemHeight(child->left.hwnd, 1, max(Globals.spaceSize.cy,IMAGE_HEIGHT+3));
|
||||
ListBox_SetItemHeight(child->right.hwnd, 1, max(Globals.spaceSize.cy,IMAGE_HEIGHT+3));
|
||||
idx = ListBox_FindItemData(child->left.hwnd, ListBox_GetCurSel(child->left.hwnd), child->left.cur);
|
||||
|
||||
idx = ListBox_FindItemData(child->left.hwnd, 0, child->left.cur);
|
||||
ListBox_SetCurSel(child->left.hwnd, idx);
|
||||
|
||||
return child->hwnd;
|
||||
|
@ -1814,6 +1825,13 @@ LRESULT CALLBACK FrameWndProc(HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam
|
|||
PostQuitMessage(0);
|
||||
break;
|
||||
|
||||
case WM_INITMENUPOPUP: {
|
||||
HWND hwndClient = (HWND) SendMessage(Globals.hmdiclient, WM_MDIGETACTIVE, 0, 0);
|
||||
|
||||
if (!SendMessage(hwndClient, WM_INITMENUPOPUP, wparam, lparam))
|
||||
return 0;
|
||||
break;}
|
||||
|
||||
case WM_COMMAND: {
|
||||
UINT cmd = LOWORD(wparam);
|
||||
HWND hwndClient = (HWND) SendMessage(Globals.hmdiclient, WM_MDIGETACTIVE, 0, 0);
|
||||
|
@ -3091,10 +3109,9 @@ static LRESULT pane_notify(Pane* pane, NMHDR* pnmh)
|
|||
#endif /* _NO_EXTENSIONS */
|
||||
|
||||
|
||||
static void scan_entry(ChildWnd* child, Entry* entry, HWND hwnd)
|
||||
static void scan_entry(ChildWnd* child, Entry* entry, int idx, HWND hwnd)
|
||||
{
|
||||
TCHAR path[MAX_PATH];
|
||||
int idx = ListBox_GetCurSel(child->left.hwnd);
|
||||
HCURSOR old_cursor = SetCursor(LoadCursor(0, IDC_WAIT));
|
||||
|
||||
/* delete sub entries in left pane */
|
||||
|
@ -3208,7 +3225,7 @@ static void collapse_entry(Pane* pane, Entry* dir)
|
|||
}
|
||||
|
||||
|
||||
static void set_curdir(ChildWnd* child, Entry* entry, HWND hwnd)
|
||||
static void set_curdir(ChildWnd* child, Entry* entry, int idx, HWND hwnd)
|
||||
{
|
||||
TCHAR path[MAX_PATH];
|
||||
|
||||
|
@ -3219,7 +3236,7 @@ static void set_curdir(ChildWnd* child, Entry* entry, HWND hwnd)
|
|||
child->right.cur = entry;
|
||||
|
||||
if (!entry->scanned)
|
||||
scan_entry(child, entry, hwnd);
|
||||
scan_entry(child, entry, idx, hwnd);
|
||||
else {
|
||||
ListBox_ResetContent(child->right.hwnd);
|
||||
insert_entries(&child->right, entry->down, -1);
|
||||
|
@ -3241,6 +3258,30 @@ static void set_curdir(ChildWnd* child, Entry* entry, HWND hwnd)
|
|||
}
|
||||
|
||||
|
||||
static void refresh_child(ChildWnd* child)
|
||||
{
|
||||
TCHAR path[MAX_PATH], drv[_MAX_DRIVE+1];
|
||||
Entry* entry;
|
||||
int idx;
|
||||
|
||||
get_path(child->left.cur, path);
|
||||
_tsplitpath(path, drv, NULL, NULL, NULL);
|
||||
|
||||
child->right.root = NULL;
|
||||
|
||||
scan_entry(child, &child->root.entry, 0, child->hwnd);
|
||||
|
||||
entry = read_tree(&child->root, path, NULL, drv, child->sortOrder, child->hwnd);
|
||||
|
||||
insert_entries(&child->left, child->root.entry.down, 0);
|
||||
|
||||
set_curdir(child, entry, 0, child->hwnd);
|
||||
|
||||
idx = ListBox_FindItemData(child->left.hwnd, 0, child->left.cur);
|
||||
ListBox_SetCurSel(child->left.hwnd, idx);
|
||||
}
|
||||
|
||||
|
||||
BOOL launch_file(HWND hwnd, LPCTSTR cmd, UINT nCmdShow)
|
||||
{
|
||||
HINSTANCE hinst = ShellExecute(hwnd, NULL/*operation*/, cmd, NULL/*parameters*/, NULL/*dir*/, nCmdShow);
|
||||
|
@ -3318,7 +3359,7 @@ static void activate_entry(ChildWnd* child, Pane* pane, HWND hwnd)
|
|||
int scanned_old = entry->scanned;
|
||||
|
||||
if (!scanned_old)
|
||||
scan_entry(child, entry, hwnd);
|
||||
scan_entry(child, entry, ListBox_GetCurSel(child->left.hwnd), hwnd);
|
||||
|
||||
#ifndef _NO_EXTENSIONS
|
||||
if (entry->data.cFileName[0]=='.' && entry->data.cFileName[1]=='\0')
|
||||
|
@ -3337,7 +3378,7 @@ static void activate_entry(ChildWnd* child, Pane* pane, HWND hwnd)
|
|||
if (!pane->treePane) focus_entry: {
|
||||
int idx = ListBox_FindItemData(child->left.hwnd, ListBox_GetCurSel(child->left.hwnd), entry);
|
||||
ListBox_SetCurSel(child->left.hwnd, idx);
|
||||
set_curdir(child, entry, hwnd);
|
||||
set_curdir(child, entry, idx, hwnd);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3403,6 +3444,23 @@ static BOOL pane_command(Pane* pane, UINT cmd)
|
|||
}
|
||||
|
||||
|
||||
static void set_sort_order(ChildWnd* child, SORT_ORDER sortOrder)
|
||||
{
|
||||
if (child->sortOrder != sortOrder) {
|
||||
child->sortOrder = sortOrder;
|
||||
refresh_child(child);
|
||||
}
|
||||
}
|
||||
|
||||
static void update_view_menu(ChildWnd* child)
|
||||
{
|
||||
CheckMenuItem(Globals.hMenuView, ID_VIEW_SORT_NAME, child->sortOrder==SORT_NAME? MF_CHECKED: MF_UNCHECKED);
|
||||
CheckMenuItem(Globals.hMenuView, ID_VIEW_SORT_TYPE, child->sortOrder==SORT_EXT? MF_CHECKED: MF_UNCHECKED);
|
||||
CheckMenuItem(Globals.hMenuView, ID_VIEW_SORT_SIZE, child->sortOrder==SORT_SIZE? MF_CHECKED: MF_UNCHECKED);
|
||||
CheckMenuItem(Globals.hMenuView, ID_VIEW_SORT_DATE, child->sortOrder==SORT_DATE? MF_CHECKED: MF_UNCHECKED);
|
||||
}
|
||||
|
||||
|
||||
static IContextMenu2* s_pctxmenu2 = NULL;
|
||||
static IContextMenu3* s_pctxmenu3 = NULL;
|
||||
|
||||
|
@ -3654,7 +3712,6 @@ LRESULT CALLBACK ChildWndProc(HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam
|
|||
#endif /* _NO_EXTENSIONS */
|
||||
|
||||
case WM_SETFOCUS:
|
||||
SetCurrentDirectory(child->path);
|
||||
if (SetCurrentDirectory(child->path))
|
||||
set_space_status();
|
||||
SetFocus(child->focus_pane? child->right.hwnd: child->left.hwnd);
|
||||
|
@ -3673,7 +3730,7 @@ LRESULT CALLBACK ChildWndProc(HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam
|
|||
break;}
|
||||
|
||||
case ID_REFRESH:
|
||||
scan_entry(child, pane->cur, hwnd);
|
||||
refresh_child(child);
|
||||
break;
|
||||
|
||||
case ID_ACTIVATE:
|
||||
|
@ -3710,12 +3767,28 @@ LRESULT CALLBACK ChildWndProc(HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam
|
|||
activate_entry(child, pane, hwnd);
|
||||
}
|
||||
else
|
||||
scan_entry(child, pane->root, hwnd);
|
||||
refresh_child(child);
|
||||
}
|
||||
else
|
||||
display_error(hwnd, GetLastError());
|
||||
break;}
|
||||
|
||||
case ID_VIEW_SORT_NAME:
|
||||
set_sort_order(child, SORT_NAME);
|
||||
break;
|
||||
|
||||
case ID_VIEW_SORT_TYPE:
|
||||
set_sort_order(child, SORT_EXT);
|
||||
break;
|
||||
|
||||
case ID_VIEW_SORT_SIZE:
|
||||
set_sort_order(child, SORT_SIZE);
|
||||
break;
|
||||
|
||||
case ID_VIEW_SORT_DATE:
|
||||
set_sort_order(child, SORT_DATE);
|
||||
break;
|
||||
|
||||
default:
|
||||
return pane_command(pane, LOWORD(wparam));
|
||||
}
|
||||
|
@ -3731,7 +3804,7 @@ LRESULT CALLBACK ChildWndProc(HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam
|
|||
Entry* entry = (Entry*) ListBox_GetItemData(pane->hwnd, idx);
|
||||
|
||||
if (pane == &child->left)
|
||||
set_curdir(child, entry, hwnd);
|
||||
set_curdir(child, entry, idx, hwnd);
|
||||
else
|
||||
pane->cur = entry;
|
||||
break;}
|
||||
|
@ -3801,6 +3874,7 @@ LRESULT CALLBACK ChildWndProc(HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam
|
|||
if (CtxMenu_HandleMenuMsg(nmsg, wparam, lparam))
|
||||
return 0;
|
||||
|
||||
update_view_menu(child);
|
||||
break;
|
||||
|
||||
case WM_MENUCHAR: /* only supported by IContextMenu3 */
|
||||
|
|
Loading…
Reference in New Issue