summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorleo2005-03-09 22:28:58 +0000
committerleo2005-03-09 22:28:58 +0000
commit5568e69af7eab183a8cb47c9193fd0b2c8ec6407 (patch)
treea915369bed2b3be8f82de47913a5d647ece53031 /common
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 'common')
-rw-r--r--common/keyboard.cpp44
-rw-r--r--common/keyboard.h14
2 files changed, 34 insertions, 24 deletions
diff --git a/common/keyboard.cpp b/common/keyboard.cpp
index 0a83bc8..d056d7a 100644
--- a/common/keyboard.cpp
+++ b/common/keyboard.cpp
@@ -65,13 +65,13 @@ LC_KEYBOARD_COMMAND DefaultKeyboardShortcuts[] =
// { LC_VIEW_STEP_SET, "", 0, 0, 0 },
// { LC_VIEW_STOP, "", 0, 0, 0 },
// { LC_VIEW_PLAY, "", 0, 0, 0 },
- { LC_VIEW_CAMERA_FRONT, "Camera Front", 0, LC_KEY_F, 0 },
- { LC_VIEW_CAMERA_BACK, "Camera Back", 0, LC_KEY_B, 0 },
- { LC_VIEW_CAMERA_TOP, "Camera Top", 0, LC_KEY_T, 0 },
- { LC_VIEW_CAMERA_BOTTOM, "Camera Bottom", 0, LC_KEY_U, 0 },
- { LC_VIEW_CAMERA_LEFT, "Camera Left", 0, LC_KEY_L, 0 },
- { LC_VIEW_CAMERA_RIGHT, "Camera Right", 0, LC_KEY_R, 0 },
- { LC_VIEW_CAMERA_MAIN, "Camera Main", 0, LC_KEY_M, 0 },
+ { LC_VIEW_CAMERA_FRONT, "Camera Front", LC_KEYMOD_VIEWONLY, LC_KEY_F, 0 },
+ { LC_VIEW_CAMERA_BACK, "Camera Back", LC_KEYMOD_VIEWONLY, LC_KEY_B, 0 },
+ { LC_VIEW_CAMERA_TOP, "Camera Top", LC_KEYMOD_VIEWONLY, LC_KEY_T, 0 },
+ { LC_VIEW_CAMERA_BOTTOM, "Camera Bottom", LC_KEYMOD_VIEWONLY, LC_KEY_U, 0 },
+ { LC_VIEW_CAMERA_LEFT, "Camera Left", LC_KEYMOD_VIEWONLY, LC_KEY_L, 0 },
+ { LC_VIEW_CAMERA_RIGHT, "Camera Right", LC_KEYMOD_VIEWONLY, LC_KEY_R, 0 },
+ { LC_VIEW_CAMERA_MAIN, "Camera Main", LC_KEYMOD_VIEWONLY, LC_KEY_M, 0 },
// { LC_VIEW_CAMERA_MENU, "", 0, 0, 0 },
// { LC_VIEW_CAMERA_RESET, "", 0, 0, 0 },
// { LC_VIEW_AUTOPAN, "", 0, 0, 0 },
@@ -130,10 +130,10 @@ bool SaveKeyboardShortcuts(const char* FileName)
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 += "\"";
@@ -145,10 +145,10 @@ bool SaveKeyboardShortcuts(const char* FileName)
{
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 += "\"";
@@ -179,7 +179,7 @@ bool LoadKeyboardShortcuts(const char* FileName)
Cmd.Key1 = 0;
Cmd.Key2 = 0;
- Cmd.Modifiers = 0;
+ Cmd.Flags = DefaultKeyboardShortcuts[i].Flags & ~LC_KEYMOD_MASK;
}
char Line[1024];
@@ -203,13 +203,13 @@ bool LoadKeyboardShortcuts(const char* FileName)
if (!strncmp(ptr, "Shift+", 6))
{
- Cmd.Modifiers |= LC_KEYMOD1_SHIFT;
+ Cmd.Flags |= LC_KEYMOD1_SHIFT;
ptr += 6;
}
if (!strncmp(ptr, "Ctrl+", 5))
{
- Cmd.Modifiers |= LC_KEYMOD1_CONTROL;
+ Cmd.Flags |= LC_KEYMOD1_CONTROL;
ptr += 5;
}
@@ -218,8 +218,8 @@ bool LoadKeyboardShortcuts(const char* FileName)
if (ptr2 == NULL)
{
- Cmd.Modifiers = 0;
- continue;
+ Cmd.Flags &= ~(LC_KEYMOD1_SHIFT | LC_KEYMOD1_CONTROL);
+ break;
}
*ptr2 = 0;
@@ -228,18 +228,18 @@ bool LoadKeyboardShortcuts(const char* FileName)
ptr = ptr2 + 1;
if (*ptr != ',')
- continue;
+ break;
ptr++;
if (!strncmp(ptr, "Shift+", 6))
{
- Cmd.Modifiers |= LC_KEYMOD2_SHIFT;
+ Cmd.Flags |= LC_KEYMOD2_SHIFT;
ptr += 6;
}
if (!strncmp(ptr, "Ctrl+", 5))
{
- Cmd.Modifiers |= LC_KEYMOD2_CONTROL;
+ Cmd.Flags |= LC_KEYMOD2_CONTROL;
ptr += 5;
}
@@ -248,12 +248,14 @@ bool LoadKeyboardShortcuts(const char* FileName)
if (ptr2 == NULL)
{
- Cmd.Modifiers &= ~(LC_KEYMOD2_SHIFT | LC_KEYMOD2_CONTROL);
- continue;
+ Cmd.Flags &= ~(LC_KEYMOD2_SHIFT | LC_KEYMOD2_CONTROL);
+ break;
}
*ptr2 = 0;
Cmd.Key2 = GetKeyFromName(ptr);
+
+ break;
}
}
diff --git a/common/keyboard.h b/common/keyboard.h
index 9151542..9d43f4a 100644
--- a/common/keyboard.h
+++ b/common/keyboard.h
@@ -117,14 +117,22 @@
#define LC_KEYMOD1_SHIFT 0x01
#define LC_KEYMOD1_CONTROL 0x02
-#define LC_KEYMOD2_SHIFT 0x10
-#define LC_KEYMOD2_CONTROL 0x20
+#define LC_KEYMOD2_SHIFT 0x04
+#define LC_KEYMOD2_CONTROL 0x08
+#define LC_KEYMOD_VIEWONLY 0x10
+
+#define LC_KEYMOD1_MASK (LC_KEYMOD1_SHIFT | LC_KEYMOD1_CONTROL)
+#define LC_KEYMOD2_MASK (LC_KEYMOD2_SHIFT | LC_KEYMOD2_CONTROL)
+#define LC_KEYMOD_MASK (LC_KEYMOD1_MASK | LC_KEYMOD2_MASK)
+
+#define LC_KEYMOD_1TO2(a) ((a & ~LC_KEYMOD_MASK) | ((a & LC_KEYMOD1_MASK) << 2))
+#define LC_KEYMOD_2TO1(a) ((a & ~LC_KEYMOD_MASK) | ((a & LC_KEYMOD2_MASK) >> 2))
typedef struct
{
LC_COMMANDS ID;
const char* Description;
- unsigned char Modifiers;
+ unsigned char Flags;
unsigned char Key1;
unsigned char Key2;
} LC_KEYBOARD_COMMAND;