Skip to content

Commit

Permalink
Add actions for mouse drag start and end
Browse files Browse the repository at this point in the history
  • Loading branch information
John Rennie committed Jan 10, 2015
1 parent 9d1a15d commit b9ded4c
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 7 deletions.
6 changes: 4 additions & 2 deletions xbmc/guilib/Key.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,10 @@
#define KEY_MOUSE_LONG_CLICK 0xE020
#define KEY_MOUSE_WHEEL_UP 0xE101
#define KEY_MOUSE_WHEEL_DOWN 0xE102
#define KEY_MOUSE_DRAG 0xE103
#define KEY_MOUSE_MOVE 0xE104
#define KEY_MOUSE_MOVE 0xE103
#define KEY_MOUSE_DRAG 0xE104
#define KEY_MOUSE_DRAG_START 0xE105
#define KEY_MOUSE_DRAG_END 0xE106
#define KEY_MOUSE_NOOP 0xEFFF
#define KEY_MOUSE_END 0xEFFF

Expand Down
4 changes: 3 additions & 1 deletion xbmc/input/ButtonTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -411,8 +411,10 @@ static const ActionMapping mousekeys[] =
{ "longclick", KEY_MOUSE_LONG_CLICK },
{ "wheelup", KEY_MOUSE_WHEEL_UP },
{ "wheeldown", KEY_MOUSE_WHEEL_DOWN },
{ "mousemove", KEY_MOUSE_MOVE },
{ "mousedrag", KEY_MOUSE_DRAG },
{ "mousemove", KEY_MOUSE_MOVE }
{ "mousedragstart", KEY_MOUSE_DRAG_START },
{ "mousedragend", KEY_MOUSE_DRAG_END }
};

static const ActionMapping touchcommands[] =
Expand Down
28 changes: 24 additions & 4 deletions xbmc/input/MouseStat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "settings/lib/Setting.h"
#include "utils/TimeUtils.h"
#include "windowing/WindowingFactory.h"
#include "utils/log.h"

CMouseStat::CMouseStat()
{
Expand Down Expand Up @@ -129,9 +130,15 @@ void CMouseStat::HandleEvent(XBMC_Event& newEvent)
bNothingDown = false;
break;
case CButtonState::MB_DRAG_START:
bHold[i] = CButtonState::MB_DRAG_START;
bNothingDown = false;
break;
case CButtonState::MB_DRAG:
bHold[i] = CButtonState::MB_DRAG;
bNothingDown = false;
break;
case CButtonState::MB_DRAG_END:
bHold[i] = action - CButtonState::MB_DRAG_START + 1;
bHold[i] = CButtonState::MB_DRAG_END;
bNothingDown = false;
break;
default:
Expand Down Expand Up @@ -163,9 +170,22 @@ void CMouseStat::HandleEvent(XBMC_Event& newEvent)

if (m_Key == KEY_MOUSE_NOOP)
{
// The bHold array is set true if CButtonState::Update spots a mouse drag
if (bHold[MOUSE_LEFT_BUTTON])
m_Key = KEY_MOUSE_DRAG;
// The bHold array is set to the drag action
if (bHold[MOUSE_LEFT_BUTTON] != 0)
{
switch (bHold[MOUSE_LEFT_BUTTON])
{
case CButtonState::MB_DRAG:
m_Key = KEY_MOUSE_DRAG;
break;
case CButtonState::MB_DRAG_START:
m_Key = KEY_MOUSE_DRAG_START;
break;
case CButtonState::MB_DRAG_END:
m_Key = KEY_MOUSE_DRAG_END;
break;
}
}

// dz is +1 on wheel up and -1 on wheel down
else if (m_mouseState.dz > 0)
Expand Down

0 comments on commit b9ded4c

Please sign in to comment.