Right click menu for CtrlDisplayListView

This commit is contained in:
Kingcom 2013-10-02 00:41:37 +02:00
parent a176fb85d3
commit f388697f88
6 changed files with 107 additions and 4 deletions

View file

@ -1,10 +1,14 @@
#include "Windows/GEDebugger/CtrlDisplayListView.h"
#include "Core/Config.h"
#include "Windows/GEDebugger/GEDebugger.h"
#include "Windows/Main.h"
#include <algorithm>
const PTCHAR CtrlDisplayListView::windowClass = _T("CtrlDisplayListView");
const int POPUP_SUBMENU_ID_DISPLAYLISTVIEW = 8;
extern HMENU g_hPopupMenus;
void CtrlDisplayListView::registerClass()
{
WNDCLASSEX wndClass;
@ -99,6 +103,15 @@ LRESULT CALLBACK CtrlDisplayListView::wndProc(HWND hwnd, UINT msg, WPARAM wParam
case WM_LBUTTONDOWN:
win->onMouseDown(wParam,lParam,1);
break;
case WM_RBUTTONDOWN:
win->onMouseDown(wParam,lParam,2);
break;
case WM_LBUTTONUP:
win->onMouseUp(wParam,lParam,1);
break;
case WM_RBUTTONUP:
win->onMouseUp(wParam,lParam,2);
break;
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
win->onKeyDown(wParam,lParam);
@ -261,6 +274,71 @@ void CtrlDisplayListView::onMouseDown(WPARAM wParam, LPARAM lParam, int button)
redraw();
}
void CtrlDisplayListView::onMouseUp(WPARAM wParam, LPARAM lParam, int button)
{
if (button == 2)
{
//popup menu?
POINT pt;
GetCursorPos(&pt);
switch(TrackPopupMenuEx(GetSubMenu(g_hPopupMenus,POPUP_SUBMENU_ID_DISPLAYLISTVIEW),TPM_RIGHTBUTTON|TPM_RETURNCMD,pt.x,pt.y,wnd,0))
{
case ID_DISASM_GOTOINMEMORYVIEW:
for (int i=0; i<numCPUs; i++)
if (memoryWindow[i])
memoryWindow[i]->Goto(curAddress);
break;
case ID_DISASM_TOGGLEBREAKPOINT:
toggleBreakpoint();
redraw();
break;
case ID_DISASM_COPYINSTRUCTIONDISASM:
{
GPUDebugOp op = gpuDebug->DissassembleOp(curAddress);
W32Util::CopyTextToClipboard(wnd, op.desc.c_str());
}
break;
case ID_DISASM_COPYADDRESS:
{
char temp[16];
sprintf(temp,"%08X",curAddress);
W32Util::CopyTextToClipboard(wnd, temp);
}
break;
case ID_DISASM_SETPCTOHERE:
{
gpuDebug->ResetListPC(list.id,curAddress);
list.pc = curAddress;
redraw();
}
break;
case IDC_DEBUG_LIST_SETSTALL:
{
gpuDebug->ResetListStall(list.id,curAddress);
list.stall = curAddress;
redraw();
}
break;
case ID_DISASM_COPYINSTRUCTIONHEX:
{
char temp[16];
sprintf(temp,"%08X",Memory::ReadUnchecked_U32(curAddress));
W32Util::CopyTextToClipboard(wnd, temp);
}
break;
case ID_DISASM_RUNTOHERE:
{
SendMessage(GetParent(wnd),WM_GEDBG_RUNTOWPARAM,curAddress,0);
redraw();
}
break;
}
return;
}
redraw();
}
void CtrlDisplayListView::onVScroll(WPARAM wParam, LPARAM lParam)
{
switch (wParam & 0xFFFF)
@ -329,7 +407,6 @@ void CtrlDisplayListView::onKeyDown(WPARAM wParam, LPARAM lParam)
redraw();
}
void CtrlDisplayListView::scrollAddressIntoView()
{
u32 windowEnd = windowStart + visibleRows * instructionSize;