DolphinWX: Allow short-hand searching in the code window

Lessens the restrictions on the searching in the code view.
Now typing out the full 8 digit hex number isn't needed. For example, you don't need to type 000000FF to go to FF, you just literally type FF.

Also makes JumpToAddress a boolean function to remain consistent with the DSP code view.

This will also change the address search box to have a red background if
either an invalid hex number is given, or if it's longer than 8 characters
This commit is contained in:
Lioncash 2014-07-10 23:17:38 -04:00
parent dc526aa0a6
commit 26f3867e20
2 changed files with 27 additions and 12 deletions

View File

@ -195,10 +195,18 @@ void CCodeWindow::OnCodeStep(wxCommandEvent& event)
Parent->UpdateGUI();
}
void CCodeWindow::JumpToAddress(u32 _Address)
bool CCodeWindow::JumpToAddress(u32 address)
{
codeview->Center(_Address);
UpdateLists();
// Jump to anywhere in memory
if (address <= 0xFFFFFFFF)
{
codeview->Center(address);
UpdateLists();
return true;
}
return false;
}
void CCodeWindow::OnCodeViewChange(wxCommandEvent &event)
@ -208,20 +216,27 @@ void CCodeWindow::OnCodeViewChange(wxCommandEvent &event)
void CCodeWindow::OnAddrBoxChange(wxCommandEvent& event)
{
if (!GetToolBar()) return;
if (!GetToolBar())
return;
wxTextCtrl* pAddrCtrl = (wxTextCtrl*)GetToolBar()->FindControl(IDM_ADDRBOX);
wxString txt = pAddrCtrl->GetValue();
wxString txt = pAddrCtrl->GetValue().Strip(wxString::stripType::both);
std::string text(WxStrToStr(txt));
text = StripSpaces(text);
if (text.size() == 8)
bool success = false;
unsigned long addr;
if (txt.ToULong(&addr, 16))
{
u32 addr;
sscanf(text.c_str(), "%08x", &addr);
JumpToAddress(addr);
if (JumpToAddress(addr))
success = true;
}
if (success)
pAddrCtrl->SetBackgroundColour(wxNullColour);
else
pAddrCtrl->SetBackgroundColour(*wxRED);
pAddrCtrl->Refresh();
event.Skip();
}

View File

@ -60,7 +60,7 @@ class CCodeWindow
bool AutomaticStart();
bool JITNoBlockCache();
bool JITBlockLinking();
void JumpToAddress(u32 _Address);
bool JumpToAddress(u32 address);
void Update() override;
void NotifyMapLoaded();