summaryrefslogtreecommitdiff
path: root/win
diff options
context:
space:
mode:
authorleo2005-03-09 22:28:58 +0000
committerleo2005-03-09 22:28:58 +0000
commit5568e69af7eab183a8cb47c9193fd0b2c8ec6407 (patch)
treea915369bed2b3be8f82de47913a5d647ece53031 /win
parent342008b552f16892b5abfe86eadce9feee4d0da0 (diff)
Fixed keyboard shortcuts being activated while the user is typing text in the pieces combobox.
git-svn-id: http://svn.leocad.org/trunk@388 c7d43263-9d01-0410-8a33-9dba5d9f93d6
Diffstat (limited to 'win')
-rw-r--r--win/Mainfrm.cpp43
-rw-r--r--win/Prefpage.cpp32
2 files changed, 48 insertions, 27 deletions
diff --git a/win/Mainfrm.cpp b/win/Mainfrm.cpp
index 43d393f..bc80225 100644
--- a/win/Mainfrm.cpp
+++ b/win/Mainfrm.cpp
@@ -65,6 +65,8 @@ static void mainframe_console_func (LC_CONSOLE_LEVEL level, const char* text, vo
break;
}
+ ctrl.SetRedraw(FALSE);
+
// select the last line
line = ctrl.GetLineCount ();
index = ctrl.LineIndex (line - 1);
@@ -83,6 +85,7 @@ static void mainframe_console_func (LC_CONSOLE_LEVEL level, const char* text, vo
index = ctrl.LineIndex (line - 1);
ctrl.SetSel (index, index);
+ ctrl.SetRedraw(TRUE);
ctrl.InvalidateRect(NULL, FALSE);
}
@@ -1108,14 +1111,32 @@ BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
bool Control = GetKeyState(VK_CONTROL) < 0;
bool Shift = GetKeyState(VK_SHIFT) < 0;
+ // Don't process key presses if the user is typing text.
+ if (m_wndPiecesBar.m_wndPiecesCombo.IsChild(GetFocus()) ||
+ m_wndPiecesBar.m_wndPiecesList.IsChild(GetFocus()))
+ {
+ if (!Control && (((pMsg->wParam >= 'A') && (pMsg->wParam <= 'Z')) || ((pMsg->wParam >= '0') && (pMsg->wParam <= '9'))))
+ {
+ return CFrameWnd::PreTranslateMessage(pMsg);
+ }
+ }
+
for (int i = 0; i < KeyboardShortcutsCount; i++)
{
LC_KEYBOARD_COMMAND& Cmd = KeyboardShortcuts[i];
+ if (Cmd.Flags & LC_KEYMOD_VIEWONLY)
+ {
+ if (GetFocus() != GetActiveView())
+ {
+ break;
+ }
+ }
+
if (pMsg->wParam == Cmd.Key1)
{
- if ((Shift == ((Cmd.Modifiers & LC_KEYMOD1_SHIFT) != 0)) &&
- (Control == ((Cmd.Modifiers & LC_KEYMOD1_CONTROL) != 0)))
+ if ((Shift == ((Cmd.Flags & LC_KEYMOD1_SHIFT) != 0)) &&
+ (Control == ((Cmd.Flags & LC_KEYMOD1_CONTROL) != 0)))
{
project->HandleCommand(Cmd.ID, 0);
return true;
@@ -1124,8 +1145,8 @@ BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
if (pMsg->wParam == Cmd.Key2)
{
- if ((Shift == ((Cmd.Modifiers & LC_KEYMOD2_SHIFT) != 0)) &&
- (Control == ((Cmd.Modifiers & LC_KEYMOD2_CONTROL) != 0)))
+ if ((Shift == ((Cmd.Flags & LC_KEYMOD2_SHIFT) != 0)) &&
+ (Control == ((Cmd.Flags & LC_KEYMOD2_CONTROL) != 0)))
{
project->HandleCommand(Cmd.ID, 0);
return true;
@@ -1140,7 +1161,7 @@ BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
void CMainFrame::UpdateMenuAccelerators()
{
- DWORD CmdToID[] =
+ WORD CmdToID[] =
{
ID_FILE_NEW, // LC_FILE_NEW
ID_FILE_OPEN, // LC_FILE_OPEN
@@ -1240,7 +1261,7 @@ void CMainFrame::UpdateMenuAccelerators()
for (int i = 0; i < KeyboardShortcutsCount; i++)
{
LC_KEYBOARD_COMMAND& Cmd = KeyboardShortcuts[i];
- DWORD ID = CmdToID[Cmd.ID];
+ WORD ID = CmdToID[Cmd.ID];
String str;
if (ID == 0)
@@ -1248,21 +1269,21 @@ void CMainFrame::UpdateMenuAccelerators()
if (Cmd.Key1)
{
- if (Cmd.Modifiers & LC_KEYMOD1_SHIFT)
+ if (Cmd.Flags & LC_KEYMOD1_SHIFT)
str += "Shift+";
- if (Cmd.Modifiers & LC_KEYMOD1_CONTROL)
+ if (Cmd.Flags & LC_KEYMOD1_CONTROL)
str += "Ctrl+";
str += GetKeyName(Cmd.Key1);
if (Cmd.Key2)
{
- str += ",";
- if (Cmd.Modifiers & LC_KEYMOD2_SHIFT)
+ str += ", ";
+ if (Cmd.Flags & LC_KEYMOD2_SHIFT)
str += "Shift+";
- if (Cmd.Modifiers & LC_KEYMOD2_CONTROL)
+ if (Cmd.Flags & LC_KEYMOD2_CONTROL)
str += "Ctrl+";
str += GetKeyName(Cmd.Key2);
diff --git a/win/Prefpage.cpp b/win/Prefpage.cpp
index adb1594..c9f25b1 100644
--- a/win/Prefpage.cpp
+++ b/win/Prefpage.cpp
@@ -784,14 +784,14 @@ void CPreferencesKeyboard::OnKeydlgRemove()
if (Sel == 0)
{
- Cmd.Modifiers >>= 4;
+ Cmd.Flags = LC_KEYMOD_2TO1(Cmd.Flags);
Cmd.Key1 = Cmd.Key2;
Cmd.Key2 = 0;
}
else
{
Cmd.Key2 = 0;
- Cmd.Modifiers &= 0x0f;
+ Cmd.Flags &= ~LC_KEYMOD2_MASK;
}
OnSelchangeKeydlgCmdlist();
@@ -812,8 +812,8 @@ void CPreferencesKeyboard::OnKeydlgAssign()
if (Cmd.Key1 == m_Edit.m_Key)
{
- if ((((Cmd.Modifiers & LC_KEYMOD1_SHIFT) != 0) == m_Edit.m_Shift) &&
- (((Cmd.Modifiers & LC_KEYMOD1_CONTROL) != 0) == m_Edit.m_Control))
+ if ((((Cmd.Flags & LC_KEYMOD1_SHIFT) != 0) == m_Edit.m_Shift) &&
+ (((Cmd.Flags & LC_KEYMOD1_CONTROL) != 0) == m_Edit.m_Control))
{
Match = 1;
}
@@ -821,8 +821,8 @@ void CPreferencesKeyboard::OnKeydlgAssign()
if (Cmd.Key2 == m_Edit.m_Key)
{
- if ((((Cmd.Modifiers & LC_KEYMOD2_SHIFT) != 0) == m_Edit.m_Shift) &&
- (((Cmd.Modifiers & LC_KEYMOD2_CONTROL) != 0) == m_Edit.m_Control))
+ if ((((Cmd.Flags & LC_KEYMOD2_SHIFT) != 0) == m_Edit.m_Shift) &&
+ (((Cmd.Flags & LC_KEYMOD2_CONTROL) != 0) == m_Edit.m_Control))
{
Match = 2;
}
@@ -844,14 +844,14 @@ void CPreferencesKeyboard::OnKeydlgAssign()
// Remove old shortcut.
if (Match == 1)
{
- Cmd.Modifiers >>= 4;
+ Cmd.Flags = LC_KEYMOD_2TO1(Cmd.Flags);
Cmd.Key1 = Cmd.Key2;
Cmd.Key2 = 0;
}
else
{
Cmd.Key2 = 0;
- Cmd.Modifiers |= 0x0f;
+ Cmd.Flags &= ~LC_KEYMOD2_MASK;
}
}
}
@@ -865,20 +865,20 @@ void CPreferencesKeyboard::OnKeydlgAssign()
Cmd.Key1 = m_Edit.m_Key;
if (m_Edit.m_Shift)
- Cmd.Modifiers |= LC_KEYMOD1_SHIFT;
+ Cmd.Flags |= LC_KEYMOD1_SHIFT;
if (m_Edit.m_Control)
- Cmd.Modifiers |= LC_KEYMOD1_CONTROL;
+ Cmd.Flags |= LC_KEYMOD1_CONTROL;
}
else
{
Cmd.Key2 = m_Edit.m_Key;
if (m_Edit.m_Shift)
- Cmd.Modifiers |= LC_KEYMOD2_SHIFT;
+ Cmd.Flags |= LC_KEYMOD2_SHIFT;
if (m_Edit.m_Control)
- Cmd.Modifiers |= LC_KEYMOD2_CONTROL;
+ Cmd.Flags |= LC_KEYMOD2_CONTROL;
}
m_Edit.ResetKey();
@@ -903,10 +903,10 @@ void CPreferencesKeyboard::OnSelchangeKeydlgCmdlist()
{
CString str;
- if (Cmd.Modifiers & LC_KEYMOD1_SHIFT)
+ if (Cmd.Flags & LC_KEYMOD1_SHIFT)
str = "Shift+";
- if (Cmd.Modifiers & LC_KEYMOD1_CONTROL)
+ if (Cmd.Flags & LC_KEYMOD1_CONTROL)
str += "Ctrl+";
str += GetKeyName(Cmd.Key1);
@@ -919,10 +919,10 @@ void CPreferencesKeyboard::OnSelchangeKeydlgCmdlist()
{
str = "";
- if (Cmd.Modifiers & LC_KEYMOD2_SHIFT)
+ if (Cmd.Flags & LC_KEYMOD2_SHIFT)
str = "Shift+";
- if (Cmd.Modifiers & LC_KEYMOD2_CONTROL)
+ if (Cmd.Flags & LC_KEYMOD2_CONTROL)
str += "Ctrl+";
str += GetKeyName(Cmd.Key2);