fixed order of run event

This commit is contained in:
hyzboy 2022-01-24 19:29:19 +08:00
parent b6f37bef87
commit 6280ace5a5
3 changed files with 33 additions and 16 deletions

View File

@ -47,14 +47,14 @@ namespace hgl
for(InputEvent *ie:sub_event_proc[header.type])
if(ie->OnEvent(header,data)==EventProcResult::Break)
return EventProcResult::Break;
}
if(sub_event_proc[size_t(InputEventSource::Root)].GetCount()>0
&&InputEventSource(header.type)!=InputEventSource::Root)
{
for(InputEvent *ie:sub_event_proc[size_t(InputEventSource::Root)])
if(ie->OnEvent(header,data)==EventProcResult::Break)
return EventProcResult::Break;
}
if(sub_event_proc[size_t(InputEventSource::Root)].GetCount()>0
&&InputEventSource(header.type)!=InputEventSource::Root)
{
for(InputEvent *ie:sub_event_proc[size_t(InputEventSource::Root)])
if(ie->OnEvent(header,data)==EventProcResult::Break)
return EventProcResult::Break;
}
return(EventProcResult::Continue);

View File

@ -180,9 +180,9 @@ namespace hgl
return EventProcResult::Continue;
}
virtual bool OnPressed(const KeyboardButton &kb){}
virtual bool OnReleased(const KeyboardButton &kb){}
virtual bool OnChar(const wchar_t &){}
virtual bool OnPressed(const KeyboardButton &kb){return(false);}
virtual bool OnReleased(const KeyboardButton &kb){return(false);}
virtual bool OnChar(const wchar_t &){return(false);}
};//class KeyboardEvent
class KeyboardStateEvent:public KeyboardEvent

View File

@ -1,4 +1,4 @@
#ifndef HGL_IO_MOUSE_EVENT_INCLUDE
#ifndef HGL_IO_MOUSE_EVENT_INCLUDE
#define HGL_IO_MOUSE_EVENT_INCLUDE
#include<hgl/io/event/InputEvent.h>
@ -7,7 +7,7 @@ namespace hgl
namespace io
{
/**
*
*
*/
enum class MouseButton
{
@ -19,7 +19,7 @@ namespace hgl
X1,X2,
ENUM_CLASS_RANGE(Left,X2)
ENUM_CLASS_RANGE(None,X2)
};
enum class MouseEventID
@ -50,9 +50,14 @@ namespace hgl
int x,y;
bool pressed_statues[size_t(MouseButton::RANGE_SIZE)];
public:
MouseEvent():InputEvent(InputEventSource::Mouse){}
MouseEvent():InputEvent(InputEventSource::Mouse)
{
hgl_zero(pressed_statues);
}
virtual ~MouseEvent()=default;
EventProcResult OnEvent(const EventHeader &header,const uint64 data) override
@ -73,8 +78,10 @@ namespace hgl
switch(MouseEventID(header.id))
{
case MouseEventID::Move: if(OnMove (med->x,med->y) )return EventProcResult::Break;break;
case MouseEventID::Pressed: if(OnPressed (med->x,med->y,MouseButton(med->button)))return EventProcResult::Break;break;
case MouseEventID::Released: if(OnReleased (med->x,med->y,MouseButton(med->button)))return EventProcResult::Break;break;
case MouseEventID::Pressed: pressed_statues[med->button]=true;
if(OnPressed (med->x,med->y,MouseButton(med->button)))return EventProcResult::Break;break;
case MouseEventID::Released: pressed_statues[med->button]=false;
if(OnReleased (med->x,med->y,MouseButton(med->button)))return EventProcResult::Break;break;
case MouseEventID::DblClicked: if(OnDblClicked (med->x,med->y,MouseButton(med->button)))return EventProcResult::Break;break;
}
}
@ -89,6 +96,16 @@ namespace hgl
virtual bool OnReleased (int,int,MouseButton){return false;}
virtual bool OnDblClicked(int,int,MouseButton){return false;}
/**
*
*/
const bool HasPressed(const MouseButton &mb)const
{
if(!RangeCheck(mb))return(false);
return pressed_statues[size_t(mb)];
}
public:
const int GetX()const{return x;}