diff --git a/doomsday/engine/api/dd_share.h b/doomsday/engine/api/dd_share.h index 188e3440fc..1f98dd7baf 100644 --- a/doomsday/engine/api/dd_share.h +++ b/doomsday/engine/api/dd_share.h @@ -302,8 +302,9 @@ enum { DD_TORCH_GREEN, DD_TORCH_BLUE, DD_TORCH_ADDITIVE, - DD_TM_FLOOR_Z, ///< output from P_CheckPosition - DD_TM_CEILING_Z ///< output from P_CheckPosition + DD_TM_FLOOR_Z, ///< output from P_CheckPosition + DD_TM_CEILING_Z, ///< output from P_CheckPosition + DD_SHIFT_DOWN }; /// Bounding box coordinates. diff --git a/doomsday/engine/portable/include/dd_input.h b/doomsday/engine/portable/include/dd_input.h index 8a5286c234..007773c805 100644 --- a/doomsday/engine/portable/include/dd_input.h +++ b/doomsday/engine/portable/include/dd_input.h @@ -217,6 +217,7 @@ void I_ShutdownInputDevices(void); void I_ClearDeviceContextAssociations(void); void I_DeviceReset(uint ident); void I_ResetAllDevices(void); +boolean I_ShiftDown(void); inputdev_t* I_GetDevice(uint ident, boolean ifactive); inputdev_t* I_GetDeviceByName(const char* name, boolean ifactive); diff --git a/doomsday/engine/portable/src/dd_input.c b/doomsday/engine/portable/src/dd_input.c index e653ee09da..6c35eb0cfd 100644 --- a/doomsday/engine/portable/src/dd_input.c +++ b/doomsday/engine/portable/src/dd_input.c @@ -614,6 +614,11 @@ static void I_UpdateAxis(inputdev_t *dev, uint axis, float pos, timespan_t ticLe }*/ } +boolean I_ShiftDown(void) +{ + return shiftDown; +} + /** * Update the input device state table. */ diff --git a/doomsday/engine/portable/src/dd_main.c b/doomsday/engine/portable/src/dd_main.c index d7a38ec4a0..7207ad433e 100644 --- a/doomsday/engine/portable/src/dd_main.c +++ b/doomsday/engine/portable/src/dd_main.c @@ -2038,6 +2038,9 @@ int DD_GetInteger(int ddvalue) { switch(ddvalue) { + case DD_SHIFT_DOWN: + return I_ShiftDown(); + case DD_WINDOW_WIDTH: return Window_Width(theWindow); diff --git a/doomsday/plugins/common/src/g_game.c b/doomsday/plugins/common/src/g_game.c index d7ef1899b7..2dc638654e 100644 --- a/doomsday/plugins/common/src/g_game.c +++ b/doomsday/plugins/common/src/g_game.c @@ -1028,7 +1028,7 @@ int G_UIResponder(event_t* ev) if(!(ev->type == EV_KEY || ev->type == EV_MOUSE_BUTTON || ev->type == EV_JOY_BUTTON)) return false; - if(!Hu_MenuIsActive()) + if(!Hu_MenuIsActive() && !DD_GetInteger(DD_SHIFT_DOWN)) { // Any key/button down pops up menu if in demos. if((G_GameAction() == GA_NONE && !singledemo && Get(DD_PLAYBACK)) ||