Some fixes to the preview context menu

This commit is contained in:
paibox 2013-07-17 11:18:25 +02:00
parent 5fc4b5d09e
commit 07970e09f1

View File

@ -36,7 +36,7 @@ void STDCALL SceneHotkey(DWORD hotkey, UPARAM param, bool bDown);
enum enum
{ {
ID_LISTBOX_REMOVE=1, ID_LISTBOX_REMOVE = 1,
ID_LISTBOX_MOVEUP, ID_LISTBOX_MOVEUP,
ID_LISTBOX_MOVEDOWN, ID_LISTBOX_MOVEDOWN,
ID_LISTBOX_MOVETOTOP, ID_LISTBOX_MOVETOTOP,
@ -56,8 +56,6 @@ enum
ID_LISTBOX_HOTKEY, ID_LISTBOX_HOTKEY,
ID_LISTBOX_CONFIG, ID_LISTBOX_CONFIG,
ID_LISTBOX_ADD,
// Render frame related. // Render frame related.
ID_TOGGLERENDERVIEW, ID_TOGGLERENDERVIEW,
ID_TOGGLEPANEL, ID_TOGGLEPANEL,
@ -65,6 +63,8 @@ enum
ID_PREVIEWSCALETOFITMODE, ID_PREVIEWSCALETOFITMODE,
ID_PREVIEW1TO1MODE, ID_PREVIEW1TO1MODE,
ID_LISTBOX_ADD,
ID_LISTBOX_GLOBALSOURCE=5000, ID_LISTBOX_GLOBALSOURCE=5000,
}; };
@ -706,12 +706,13 @@ LRESULT CALLBACK OBS::ListboxHook(HWND hwnd, UINT message, WPARAM wParam, LPARAM
void OBS::TrackModifyListbox(HWND hwnd, int ret) void OBS::TrackModifyListbox(HWND hwnd, int ret)
{ {
UINT numSelected = (ListView_GetSelectedCount(hwnd)); HWND hwndSources = GetDlgItem(hwndMain, ID_SOURCES);
UINT numSelected = (ListView_GetSelectedCount(hwndSources));
XElement *selectedElement = NULL; XElement *selectedElement = NULL;
ClassInfo *curClassInfo = NULL; ClassInfo *curClassInfo = NULL;
if(numSelected == 1) if(numSelected == 1)
{ {
UINT selectedID = ListView_GetNextItem(hwnd, -1, LVNI_SELECTED); UINT selectedID = ListView_GetNextItem(hwndSources, -1, LVNI_SELECTED);
XElement *sourcesElement = App->sceneElement->GetElement(TEXT("sources")); XElement *sourcesElement = App->sceneElement->GetElement(TEXT("sources"));
selectedElement = sourcesElement->GetElementByID(selectedID); selectedElement = sourcesElement->GetElementByID(selectedID);
curClassInfo = App->GetImageSourceClass(selectedElement->GetString(TEXT("class"))); curClassInfo = App->GetImageSourceClass(selectedElement->GetString(TEXT("class")));
@ -827,19 +828,19 @@ void OBS::TrackModifyListbox(HWND hwnd, int ret)
UINT numSources = sources->NumElements(); UINT numSources = sources->NumElements();
// clear selection/focus for all items before adding the new item // clear selection/focus for all items before adding the new item
ListView_SetItemState(hwnd , -1 , 0, LVIS_SELECTED | LVIS_FOCUSED); ListView_SetItemState(hwndSources , -1 , 0, LVIS_SELECTED | LVIS_FOCUSED);
ListView_SetItemCount(hwnd, numSources); ListView_SetItemCount(hwndSources, numSources);
App->bChangingSources = true; App->bChangingSources = true;
App->InsertSourceItem(0, (LPWSTR)strName.Array(), true); App->InsertSourceItem(0, (LPWSTR)strName.Array(), true);
App->bChangingSources = false; App->bChangingSources = false;
SetFocus(hwnd); SetFocus(hwndSources);
// make sure the added item is visible/selected/focused and selection mark moved to it. // make sure the added item is visible/selected/focused and selection mark moved to it.
ListView_EnsureVisible(hwnd, 0, false); ListView_EnsureVisible(hwndSources, 0, false);
ListView_SetItemState(hwnd, 0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); ListView_SetItemState(hwndSources, 0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
ListView_SetSelectionMark(hwnd, 0); ListView_SetSelectionMark(hwndSources, 0);
App->ReportSourcesAddedOrRemoved(); App->ReportSourcesAddedOrRemoved();
} }
@ -861,15 +862,15 @@ void OBS::TrackModifyListbox(HWND hwnd, int ret)
TSTR oldStrName = sdup(strName.Array()); TSTR oldStrName = sdup(strName.Array());
if(DialogBoxParam(hinstMain, MAKEINTRESOURCE(IDD_ENTERNAME), hwndMain, OBS::EnterSourceNameDialogProc, (LPARAM)&strName) == IDOK) if(DialogBoxParam(hinstMain, MAKEINTRESOURCE(IDD_ENTERNAME), hwndMain, OBS::EnterSourceNameDialogProc, (LPARAM)&strName) == IDOK)
{ {
int curSel = (int)SendMessage(hwnd, LB_GETCURSEL, 0, 0); int curSel = (int)SendMessage(hwndSources, LB_GETCURSEL, 0, 0);
ListView_SetItemText(hwnd, curSel, 0, strName.Array()); ListView_SetItemText(hwndSources, curSel, 0, strName.Array());
selectedElement->SetName(strName); selectedElement->SetName(strName);
App->ReportSourceChanged(oldStrName, selectedElement); App->ReportSourceChanged(oldStrName, selectedElement);
Free((void*)oldStrName); Free((void*)oldStrName);
ListView_SetColumnWidth(hwnd, 0, LVSCW_AUTOSIZE_USEHEADER); ListView_SetColumnWidth(hwndSources, 0, LVSCW_AUTOSIZE_USEHEADER);
ListView_SetColumnWidth(hwnd, 1, LVSCW_AUTOSIZE_USEHEADER); ListView_SetColumnWidth(hwndSources, 1, LVSCW_AUTOSIZE_USEHEADER);
} }
App->EnableSceneSwitching(true); App->EnableSceneSwitching(true);
@ -1005,6 +1006,7 @@ void AppendModifyListbox(HWND hwnd, HMENU hMenu, int id, int numItems, bool bSel
String strFitToScreen = Str("Listbox.FitToScreen"); String strFitToScreen = Str("Listbox.FitToScreen");
String strResize = Str("Listbox.ResetSize"); String strResize = Str("Listbox.ResetSize");
String strResetCrop = Str("Listbox.ResetCrop"); String strResetCrop = Str("Listbox.ResetCrop");
String strConfig = Str("Listbox.Config");
if(id == ID_SOURCES) if(id == ID_SOURCES)
{ {