- Changed the DWORDs in dobject.h into uint32s, since they were preventing

edit-and-continue from working for the Windows source files.
- When a WM_KEYDOWN message is received with VK_PROCESSKEY, the scan key is
  now used to retrieve the real virtual key for the message. This fixes the
  previous issue that caused me to completely disable the IME.
- Removed the code that disables the IME, since it also disables the ability
  to switch between keyboard layouts that do not use an IME.
- TranslateMessage() is no longer called if GUI capture mode is off, so no
  dead key processing is performed until it might be useful.


SVN r1758 (trunk)
This commit is contained in:
Randy Heit 2009-08-08 00:36:35 +00:00
parent 63e26df7b2
commit 4d4e8e89b3
4 changed files with 35 additions and 27 deletions

View file

@ -1,4 +1,15 @@
August 6, 2009 August 7, 2009
- Changed the DWORDs in dobject.h into uint32s, since they were preventing
edit-and-continue from working for the Windows source files.
- When a WM_KEYDOWN message is received with VK_PROCESSKEY, the scan key is
now used to retrieve the real virtual key for the message. This fixes the
previous issue that caused me to completely disable the IME.
- Removed the code that disables the IME, since it also disables the ability
to switch between keyboard layouts that do not use an IME.
- TranslateMessage() is no longer called if GUI capture mode is off, so no
dead key processing is performed until it might be useful.
August 6, 2009
- Added player MugShotMaxHealth property. Negative values use the player's - Added player MugShotMaxHealth property. Negative values use the player's
max health as the mug shot max health, zero uses 100 as the mug shot max max health as the mug shot max health, zero uses 100 as the mug shot max
health, and positive values used directly as the mug shot max health. health, and positive values used directly as the mug shot max health.

View file

@ -90,11 +90,11 @@ enum EMetaType
class FMetaData class FMetaData
{ {
private: private:
FMetaData (EMetaType type, DWORD id) : Type(type), ID(id) {} FMetaData (EMetaType type, uint32 id) : Type(type), ID(id) {}
FMetaData *Next; FMetaData *Next;
EMetaType Type; EMetaType Type;
DWORD ID; uint32 ID;
union union
{ {
int Int; int Int;
@ -113,19 +113,19 @@ public:
~FMetaTable(); ~FMetaTable();
FMetaTable &operator = (const FMetaTable &other); FMetaTable &operator = (const FMetaTable &other);
void SetMetaInt (DWORD id, int parm); void SetMetaInt (uint32 id, int parm);
void SetMetaFixed (DWORD id, fixed_t parm); void SetMetaFixed (uint32 id, fixed_t parm);
void SetMetaString (DWORD id, const char *parm); // The string is copied void SetMetaString (uint32 id, const char *parm); // The string is copied
int GetMetaInt (DWORD id, int def=0) const; int GetMetaInt (uint32 id, int def=0) const;
fixed_t GetMetaFixed (DWORD id, fixed_t def=0) const; fixed_t GetMetaFixed (uint32 id, fixed_t def=0) const;
const char *GetMetaString (DWORD id) const; const char *GetMetaString (uint32 id) const;
FMetaData *FindMeta (EMetaType type, DWORD id) const; FMetaData *FindMeta (EMetaType type, uint32 id) const;
private: private:
FMetaData *Meta; FMetaData *Meta;
FMetaData *FindMetaDef (EMetaType type, DWORD id); FMetaData *FindMetaDef (EMetaType type, uint32 id);
void FreeMeta (); void FreeMeta ();
void CopyMeta (const FMetaTable *other); void CopyMeta (const FMetaTable *other);
}; };
@ -249,7 +249,7 @@ namespace GC
extern DObject *Root; extern DObject *Root;
// Current white value for potentially-live objects. // Current white value for potentially-live objects.
extern DWORD CurrentWhite; extern uint32 CurrentWhite;
// Current collector state. // Current collector state.
extern EGCState State; extern EGCState State;
@ -264,7 +264,7 @@ namespace GC
extern int StepMul; extern int StepMul;
// Current white value for known-dead objects. // Current white value for known-dead objects.
static inline DWORD OtherWhite() static inline uint32 OtherWhite()
{ {
return CurrentWhite ^ OF_WhiteBits; return CurrentWhite ^ OF_WhiteBits;
} }
@ -446,7 +446,7 @@ private:
public: public:
DObject *ObjNext; // Keep track of all allocated objects DObject *ObjNext; // Keep track of all allocated objects
DObject *GCNext; // Next object in this collection list DObject *GCNext; // Next object in this collection list
DWORD ObjectFlags; // Flags for this object uint32 ObjectFlags; // Flags for this object
public: public:
DObject (); DObject ();

View file

@ -207,6 +207,12 @@ bool GUIWndProcHook(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESU
if (GetKeyState(VK_SHIFT) & 0x8000) ev.data3 |= GKM_SHIFT; if (GetKeyState(VK_SHIFT) & 0x8000) ev.data3 |= GKM_SHIFT;
if (GetKeyState(VK_CONTROL) & 0x8000) ev.data3 |= GKM_CTRL; if (GetKeyState(VK_CONTROL) & 0x8000) ev.data3 |= GKM_CTRL;
if (GetKeyState(VK_MENU) & 0x8000) ev.data3 |= GKM_ALT; if (GetKeyState(VK_MENU) & 0x8000) ev.data3 |= GKM_ALT;
if (wParam == VK_PROCESSKEY)
{ // Use the scan code to determine the real virtual-key code.
// ImmGetVirtualKey() will supposedly do this, but it just returns
// VK_PROCESSKEY again.
wParam = MapVirtualKey((lParam >> 16) & 255, 1);
}
if ( (ev.data1 = MapVirtualKey(wParam, 2)) ) if ( (ev.data1 = MapVirtualKey(wParam, 2)) )
{ {
D_PostEvent(&ev); D_PostEvent(&ev);
@ -702,7 +708,10 @@ void I_GetEvent ()
exit (mess.wParam); exit (mess.wParam);
if (EAXEditWindow == 0 || !IsDialogMessage (EAXEditWindow, &mess)) if (EAXEditWindow == 0 || !IsDialogMessage (EAXEditWindow, &mess))
{ {
TranslateMessage (&mess); if (GUICapture)
{
TranslateMessage (&mess);
}
DispatchMessage (&mess); DispatchMessage (&mess);
} }
} }

View file

@ -917,18 +917,6 @@ void DoMain (HINSTANCE hInstance)
width = 512; width = 512;
height = 384; height = 384;
// Disable the input method editor (not present in Win95/NT4)
HMODULE imm32 = LoadLibrary("imm32.dll");
if (imm32 != NULL)
{
BOOL (WINAPI *DisableIME)(DWORD) = (BOOL(WINAPI *)(DWORD))GetProcAddress(imm32, "ImmDisableIME");
if (DisableIME != NULL)
{
DisableIME(0);
}
FreeLibrary(imm32);
}
// Many Windows structures that specify their size do so with the first // Many Windows structures that specify their size do so with the first
// element. DEVMODE is not one of those structures. // element. DEVMODE is not one of those structures.
memset (&displaysettings, 0, sizeof(displaysettings)); memset (&displaysettings, 0, sizeof(displaysettings));