focus event
This commit is contained in:
parent
917e638538
commit
780189a1a6
4 changed files with 37 additions and 11 deletions
|
|
@ -42,10 +42,10 @@ export namespace Crafter::CppDOMBindings {
|
|||
std::unordered_map<int, std::function<void(Crafter::MouseEvent)>>* mouseUpHandlers = new std::unordered_map<int, std::function<void(Crafter::MouseEvent)>>();
|
||||
|
||||
std::int32_t focusHandlerMaxId = 0;
|
||||
std::unordered_map<int, std::function<void(void)>>* focusHandlers = new std::unordered_map<int, std::function<void(void)>>();
|
||||
std::unordered_map<int, std::function<void(Crafter::FocusEvent)>>* focusHandlers = new std::unordered_map<int, std::function<void(Crafter::FocusEvent)>>();
|
||||
|
||||
std::int32_t blurHandlerMaxId = 0;
|
||||
std::unordered_map<int, std::function<void(void)>>* blurHandlers = new std::unordered_map<int, std::function<void(void)>>();
|
||||
std::unordered_map<int, std::function<void(Crafter::FocusEvent)>>* blurHandlers = new std::unordered_map<int, std::function<void(Crafter::FocusEvent)>>();
|
||||
|
||||
std::int32_t keyDownHandlerMaxId = 0;
|
||||
std::unordered_map<int, std::function<void(Crafter::KeyboardEvent)>>* keyDownHandlers = new std::unordered_map<int, std::function<void(Crafter::KeyboardEvent)>>();
|
||||
|
|
@ -130,12 +130,12 @@ extern "C" {
|
|||
Crafter::CppDOMBindings::mouseUpHandlers->find(handlerID)->second(Crafter::MouseEvent(clientX, clientY, screenX, screenY, button, buttons, altKey, ctrlKey, shiftKey, metaKey));
|
||||
}
|
||||
|
||||
__attribute__((export_name("ExecuteFocusHandler"))) void ExecuteFocusHandler(std::int32_t handlerID) {
|
||||
Crafter::CppDOMBindings::focusHandlers->find(handlerID)->second();
|
||||
__attribute__((export_name("ExecuteFocusHandler"))) void ExecuteFocusHandler(std::int32_t handlerID, void* target, void* relatedTarget) {
|
||||
Crafter::CppDOMBindings::focusHandlers->find(handlerID)->second(Crafter::FocusEvent(target, relatedTarget));
|
||||
}
|
||||
|
||||
__attribute__((export_name("ExecuteBlurHandler"))) void ExecuteBlurHandler(std::int32_t handlerID) {
|
||||
Crafter::CppDOMBindings::blurHandlers->find(handlerID)->second();
|
||||
__attribute__((export_name("ExecuteBlurHandler"))) void ExecuteBlurHandler(std::int32_t handlerID, void* target, void* relatedTarget) {
|
||||
Crafter::CppDOMBindings::blurHandlers->find(handlerID)->second(Crafter::FocusEvent(target, relatedTarget));
|
||||
}
|
||||
|
||||
__attribute__((export_name("ExecuteKeyDownHandler"))) void ExecuteKeyDownHandler(std::int32_t handlerID, const char* key, std::int32_t keyCode, bool altKey, bool ctrlKey, bool shiftKey, bool metaKey) {
|
||||
|
|
|
|||
|
|
@ -32,6 +32,12 @@ export namespace Crafter {
|
|||
KeyboardEvent(const char* key, std::int32_t keyCode, bool altKey, bool ctrlKey, bool shiftKey, bool metaKey) : key(key), keyCode(keyCode), altKey(altKey), ctrlKey(ctrlKey), shiftKey(shiftKey), metaKey(metaKey) {}
|
||||
};
|
||||
|
||||
struct FocusEvent {
|
||||
void* target;
|
||||
void* relatedTarget;
|
||||
FocusEvent(void* target, void* relatedTarget) : target(target), relatedTarget(relatedTarget) {}
|
||||
};
|
||||
|
||||
// Mouse event structure
|
||||
struct MouseEvent {
|
||||
double clientX;
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ namespace Crafter {
|
|||
}
|
||||
|
||||
// Focus Events
|
||||
std::int32_t AddFocusListener(std::function<void(void)> callback) {
|
||||
std::int32_t AddFocusListener(std::function<void(Crafter::FocusEvent)> callback) {
|
||||
std::int32_t id = CppDOMBindings::focusHandlerMaxId++;
|
||||
focusHandlers.push_back(id);
|
||||
CppDOMBindings::focusHandlers->insert({id, callback});
|
||||
|
|
@ -162,7 +162,7 @@ namespace Crafter {
|
|||
CppDOMBindings::RemoveFocusListener(ptr, id);
|
||||
}
|
||||
|
||||
std::int32_t AddBlurListener(std::function<void(void)> callback) {
|
||||
std::int32_t AddBlurListener(std::function<void(Crafter::FocusEvent)> callback) {
|
||||
std::int32_t id = CppDOMBindings::blurHandlerMaxId++;
|
||||
blurHandlers.push_back(id);
|
||||
CppDOMBindings::blurHandlers->insert({id, callback});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue