summaryrefslogtreecommitdiffstats
path: root/Gui
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-10-15 18:33:39 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-10-15 18:33:39 +0000
commitf19fba1d05b2912b16b75bd693a14466f3209d44 (patch)
tree01ae23c7bf9665c7ca7a9ed0c755b08363014e9e /Gui
parent140ee2645b5275e5fa1fc1388cd4d5add13a7150 (diff)
downloadmpv-f19fba1d05b2912b16b75bd693a14466f3209d44.tar.bz2
mpv-f19fba1d05b2912b16b75bd693a14466f3209d44.tar.xz
Move "Play CD/DVD/VCD/SVCD" submenu generation to right-click handling
so that Volume names are updated after changing media. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@20251 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'Gui')
-rw-r--r--Gui/win32/gui.c49
1 files changed, 21 insertions, 28 deletions
diff --git a/Gui/win32/gui.c b/Gui/win32/gui.c
index cd8ace137d..76f527550d 100644
--- a/Gui/win32/gui.c
+++ b/Gui/win32/gui.c
@@ -843,11 +843,16 @@ static LRESULT CALLBACK EventProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
point.y = GET_Y_LPARAM(lParam);
ClientToScreen(hWnd, &point);
errmode = SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
+ while (GetMenuItemCount(gui->diskmenu) > 0)
+ DeleteMenu(gui->diskmenu, 0, MF_BYPOSITION);
len = GetLogicalDriveStrings(MAX_PATH, device);
while(pos < len)
{
if(GetDriveType(device + pos) == DRIVE_CDROM)
{
+ char volname[MAX_PATH];
+ char menuitem[MAX_PATH];
+ int flags = MF_STRING;
mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] checking %s for CD/VCD/SVCD/DVDs\n", device + pos);
sprintf(searchpath, "%sVIDEO_TS", device + pos);
sprintf(searchpath2, "%sMpegav", device + pos);
@@ -855,14 +860,26 @@ static LRESULT CALLBACK EventProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
sprintf(searchpath3, "%sTrack01.cda", device + pos);
#endif
if(GetFileAttributes(searchpath) != INVALID_FILE_ATTRIBUTES)
- EnableMenuItem(gui->diskmenu, IDPLAYDISK + cdromdrive, MF_BYCOMMAND | MF_ENABLED);
+ flags |= MF_ENABLED;
else if(GetFileAttributes(searchpath2) != INVALID_FILE_ATTRIBUTES)
- EnableMenuItem(gui->diskmenu, IDPLAYDISK + cdromdrive, MF_BYCOMMAND | MF_ENABLED);
+ flags |= MF_ENABLED;
#ifdef HAVE_LIBCDIO
else if(GetFileAttributes(searchpath3) != INVALID_FILE_ATTRIBUTES)
- EnableMenuItem(gui->diskmenu, IDPLAYDISK + cdromdrive, MF_BYCOMMAND | MF_ENABLED);
+ flags |= MF_ENABLED;
#endif
- else EnableMenuItem(gui->diskmenu, IDPLAYDISK + cdromdrive, MF_BYCOMMAND | MF_GRAYED);
+ else
+ flags |= MF_GRAYED;
+ volname[0] = 0;
+ strcpy(menuitem, device + pos);
+ menuitem[strlen(menuitem) - 1]=0;
+ GetVolumeInformation(device + pos, volname, MAX_PATH, NULL, NULL, NULL, NULL, 0);
+ if (strlen(volname))
+ {
+ capitalize(volname);
+ strcat(menuitem, " - ");
+ strcat(menuitem, volname);
+ }
+ AppendMenu(gui->diskmenu, flags, IDPLAYDISK + cdromdrive, menuitem);
cdromdrive++;
}
pos += strlen(device + pos) + 1;
@@ -1159,31 +1176,7 @@ extern int destroy_window(gui_t *gui)
static void create_menu(gui_t *gui)
{
- char device[MAX_PATH];
- char volname[MAX_PATH];
- char menuitem[MAX_PATH];
- int len, pos = 0, cdromdrive = 0;
gui->diskmenu = CreatePopupMenu();
- len = GetLogicalDriveStrings(MAX_PATH, device);
- while(pos < len)
- {
- if(GetDriveType(device + pos) == DRIVE_CDROM)
- {
- volname[0] = 0;
- strcpy(menuitem, device + pos);
- menuitem[strlen(menuitem) - 1]=0;
- GetVolumeInformation(device + pos, volname, MAX_PATH, NULL, NULL, NULL, NULL, 0);
- if (strlen(volname))
- {
- capitalize(volname);
- strcat(menuitem, " - ");
- strcat(menuitem, volname);
- }
- AppendMenu(gui->diskmenu, MF_STRING, IDPLAYDISK + cdromdrive, menuitem);
- cdromdrive++;
- }
- pos += strlen(device + pos) + 1;
- }
gui->menu=CreatePopupMenu();
gui->trayplaymenu = CreatePopupMenu();
AppendMenu(gui->menu, MF_STRING | MF_POPUP, (UINT) gui->trayplaymenu, "Open...");