Right click/double click support in main GUI handler, minimap updates-drag and order issuing

This was SVN commit r3381.
This commit is contained in:
pyrolink
2006-01-21 11:07:25 +00:00
parent bda61f8030
commit 230b7a896c
6 changed files with 151 additions and 37 deletions
+37 -3
View File
@@ -39,10 +39,11 @@ gee@pyro.nu
#include "scripting/ScriptingHost.h"
#include "Hotkey.h"
#include "ps/Globals.h"
#include "lib/timer.h"
// namespaces used
using namespace std;
const double SELECT_DBLCLICK_RATE = 0.5;
#include "ps/CLogger.h"
#define LOG_CATEGORY "gui"
@@ -202,8 +203,41 @@ InReaction CGUI::HandleEvent(const SDL_Event* ev)
case SDL_BUTTON_LEFT:
if (pNearest)
{
pNearest->HandleMessage(SGUIMessage(GUIM_MOUSE_RELEASE_LEFT));
pNearest->ScriptEvent("mouseleftrelease");
double timeElapsed = get_time() - pNearest->m_LastClickTime[SDL_BUTTON_LEFT];
pNearest->m_LastClickTime[SDL_BUTTON_LEFT] = get_time();
//Double click?
if (timeElapsed < SELECT_DBLCLICK_RATE)
{
pNearest->HandleMessage(SGUIMessage(GUIM_MOUSE_DBLCLICK_LEFT));
pNearest->ScriptEvent("mouseleftdoubleclick");
}
else
{
pNearest->HandleMessage(SGUIMessage(GUIM_MOUSE_RELEASE_LEFT));
pNearest->ScriptEvent("mouseleftrelease");
}
ret = IN_HANDLED;
}
break;
case SDL_BUTTON_RIGHT:
if (pNearest)
{
double timeElapsed = get_time() - pNearest->m_LastClickTime[SDL_BUTTON_RIGHT];
pNearest->m_LastClickTime[SDL_BUTTON_RIGHT] = get_time();
//Double click?
if (timeElapsed < SELECT_DBLCLICK_RATE)
{
pNearest->HandleMessage(SGUIMessage(GUIM_MOUSE_DBLCLICK_RIGHT));
//pNearest->ScriptEvent("mouserightdoubleclick");
}
else
{
pNearest->HandleMessage(SGUIMessage(GUIM_MOUSE_RELEASE_RIGHT));
//pNearest->ScriptEvent("mouserightrelease");
}
ret = IN_HANDLED;
}