mirror of
https://github.com/slint-ui/slint.git
synced 2025-09-29 13:24:48 +00:00
Pass the ComponentWindow to ItemVTable::input_event
This commit is contained in:
parent
72ee03a1a5
commit
7053aee0c8
15 changed files with 125 additions and 55 deletions
|
@ -135,7 +135,7 @@ namespace private_api {
|
|||
template<typename GetDynamic>
|
||||
inline InputEventResult process_input_event(ComponentRef component, int64_t &mouse_grabber,
|
||||
MouseEvent mouse_event, Slice<ItemTreeNode> tree,
|
||||
GetDynamic get_dynamic)
|
||||
GetDynamic get_dynamic, const ComponentWindow *window)
|
||||
{
|
||||
if (mouse_grabber != -1) {
|
||||
auto item_index = mouse_grabber & 0xffffffff;
|
||||
|
@ -152,11 +152,11 @@ inline InputEventResult process_input_event(ComponentRef component, int64_t &mou
|
|||
reinterpret_cast<char *>(component.instance)
|
||||
+ item_node.item.item.offset,
|
||||
},
|
||||
mouse_event);
|
||||
mouse_event, window);
|
||||
break;
|
||||
case ItemTreeNode::Tag::DynamicTree: {
|
||||
ComponentRef comp = get_dynamic(item_node.dynamic_tree.index, rep_index);
|
||||
result = comp.vtable->input_event(comp, mouse_event);
|
||||
result = comp.vtable->input_event(comp, mouse_event, window);
|
||||
} break;
|
||||
}
|
||||
if (result != InputEventResult::GrabMouse) {
|
||||
|
@ -165,7 +165,7 @@ inline InputEventResult process_input_event(ComponentRef component, int64_t &mou
|
|||
return result;
|
||||
} else {
|
||||
return cbindgen_private::sixtyfps_process_ungrabbed_mouse_event(component, mouse_event,
|
||||
&mouse_grabber);
|
||||
window, &mouse_grabber);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,20 +17,24 @@ inline void mock_elapsed_time(int64_t time_in_ms)
|
|||
cbindgen_private::sixtyfps_mock_elapsed_time(time_in_ms);
|
||||
}
|
||||
template<typename Component>
|
||||
inline void send_mouse_click(Component &component, float x, float y) {
|
||||
cbindgen_private::sixtyfps_send_mouse_click({&Component::component_type, &component}, x, y);
|
||||
inline void send_mouse_click(Component &component, float x, float y)
|
||||
{
|
||||
cbindgen_private::sixtyfps_send_mouse_click({ &Component::component_type, &component }, x, y,
|
||||
&component.window);
|
||||
}
|
||||
|
||||
#define assert_eq(A, B) sixtyfps::testing::private_api::assert_eq_impl(A, B, #A, #B, __FILE__, __LINE__)
|
||||
#define assert_eq(A, B) \
|
||||
sixtyfps::testing::private_api::assert_eq_impl(A, B, #A, #B, __FILE__, __LINE__)
|
||||
|
||||
namespace private_api {
|
||||
template<typename A, typename B>
|
||||
void assert_eq_impl(const A &a, const B &b, const char *a_str, const char *b_str,
|
||||
const char *file, int line) {
|
||||
void assert_eq_impl(const A &a, const B &b, const char *a_str, const char *b_str, const char *file,
|
||||
int line)
|
||||
{
|
||||
if (a != b) {
|
||||
std::cerr << file << ":" << line <<": assert_eq FAILED!\n"
|
||||
<< a_str << ": " << a << "\n"
|
||||
<< b_str << ": " << b << std::endl;
|
||||
std::cerr << file << ":" << line << ": assert_eq FAILED!\n"
|
||||
<< a_str << ": " << a << "\n"
|
||||
<< b_str << ": " << b << std::endl;
|
||||
std::abort();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue