diff --git a/draw.cpp b/draw.cpp index 4ee0dbc..b87a53e 100644 --- a/draw.cpp +++ b/draw.cpp @@ -924,6 +924,16 @@ void GraphicsWindow::EditControlDone(char *s) { } } +bool GraphicsWindow::KeyDown(int c) { + if(c == ('h' - 'a') + 1) { + // Treat backspace identically to escape. + MenuEdit(MNU_UNSELECT_ALL); + return true; + } + + return false; +} + void GraphicsWindow::MouseScroll(double x, double y, int delta) { double offsetRight = offset.Dot(projRight); double offsetUp = offset.Dot(projUp); diff --git a/ui.h b/ui.h index b7df140..bd324df 100644 --- a/ui.h +++ b/ui.h @@ -483,6 +483,7 @@ public: void MouseRightUp(double x, double y); void MouseScroll(double x, double y, int delta); void MouseLeave(void); + bool KeyDown(int c); void EditControlDone(char *s); SDWORD lastSpaceNavigatorTime; diff --git a/win32/w32main.cpp b/win32/w32main.cpp index 1c4108b..b0c9fe4 100644 --- a/win32/w32main.cpp +++ b/win32/w32main.cpp @@ -533,24 +533,21 @@ static BOOL ProcessKeyDown(WPARAM wParam) } } - if(wParam == VK_BACK && !GraphicsEditControlIsVisible()) { - TextWindow::ScreenHome(0, 0); - SS.TW.Show(); - return TRUE; - } - int c; switch(wParam) { - case VK_OEM_PLUS: c = '+'; break; - case VK_OEM_MINUS: c = '-'; break; - case VK_ESCAPE: c = 27; break; - case VK_OEM_1: c = ';'; break; - case VK_OEM_4: c = '['; break; - case VK_OEM_6: c = ']'; break; - case VK_OEM_5: c = '\\'; break; - case VK_SPACE: c = ' '; break; - case VK_DELETE: c = 127; break; - case VK_TAB: c = '\t'; break; + case VK_OEM_PLUS: c = '+'; break; + case VK_OEM_MINUS: c = '-'; break; + case VK_ESCAPE: c = 27; break; + case VK_OEM_1: c = ';'; break; + case VK_OEM_4: c = '['; break; + case VK_OEM_6: c = ']'; break; + case VK_OEM_5: c = '\\'; break; + case VK_SPACE: c = ' '; break; + case VK_DELETE: c = 127; break; + case VK_TAB: c = '\t'; break; + + case VK_BROWSER_BACK: + case VK_BACK: c = 1 + 'h' - 'a'; break; case VK_F1: case VK_F2: @@ -588,6 +585,8 @@ static BOOL ProcessKeyDown(WPARAM wParam) } } + if(SS.GW.KeyDown(c)) return TRUE; + // No accelerator; process the key as normal. return FALSE; } diff --git a/wishlist.txt b/wishlist.txt index 5361182..9a86d8d 100644 --- a/wishlist.txt +++ b/wishlist.txt @@ -1,7 +1,6 @@ grid multi-drag -backslash / escape ----- wireframe export