mirror of
https://repo.dec05eba.com/gpu-screen-recorder-ui
synced 2026-05-07 15:19:56 +09:00
Fix scrollbar not working with mouse, fix being able to click filechooser items outside area
This commit is contained in:
@@ -96,7 +96,12 @@ namespace gsr {
|
|||||||
selected_item_background.set_color(get_color_theme().tint_color);
|
selected_item_background.set_color(get_color_theme().tint_color);
|
||||||
window.draw(selected_item_background);
|
window.draw(selected_item_background);
|
||||||
}
|
}
|
||||||
if(!has_parent_with_selected_child_widget() && mouse_over_item == -1 && mgl::FloatRect(item_pos, item_size).contains(mouse_pos)) {
|
|
||||||
|
if(!has_parent_with_selected_child_widget() && mouse_over_item == -1 &&
|
||||||
|
mouse_pos.x >= scissor.position.x && mouse_pos.x <= scissor.position.x + scissor.size.x &&
|
||||||
|
mouse_pos.y >= scissor.position.y && mouse_pos.y <= scissor.position.y + scissor.size.y &&
|
||||||
|
mgl::FloatRect(item_pos, item_size).contains(mouse_pos))
|
||||||
|
{
|
||||||
// mgl::Rectangle selected_item_background(item_size.floor());
|
// mgl::Rectangle selected_item_background(item_size.floor());
|
||||||
// selected_item_background.set_position(item_pos.floor());
|
// selected_item_background.set_position(item_pos.floor());
|
||||||
// selected_item_background.set_color(mgl::Color(20, 20, 20, 150));
|
// selected_item_background.set_color(mgl::Color(20, 20, 20, 150));
|
||||||
|
|||||||
@@ -28,12 +28,12 @@ namespace gsr {
|
|||||||
offset.y += scroll_y;
|
offset.y += scroll_y;
|
||||||
Widget *selected_widget = selected_child_widget;
|
Widget *selected_widget = selected_child_widget;
|
||||||
|
|
||||||
if(event.type == mgl::Event::MouseButtonPressed || event.type == mgl::Event::MouseButtonReleased) {
|
if(event.type == mgl::Event::MouseButtonPressed && scrollbar_rect.contains(mgl::vec2f(event.mouse_button.x, event.mouse_button.y))) {
|
||||||
if(!mgl::IntRect(scissor_pos, scissor_size).contains({event.mouse_button.x, event.mouse_button.y}))
|
set_widget_as_selected_in_parent();
|
||||||
return true;
|
moving_scrollbar_with_cursor = true;
|
||||||
} else if(event.type == mgl::Event::MouseMoved) {
|
scrollbar_move_cursor_start_pos = mgl::vec2f(event.mouse_button.x, event.mouse_button.y);
|
||||||
if(!mgl::IntRect(scissor_pos, scissor_size).contains({event.mouse_move.x, event.mouse_move.y}))
|
scrollbar_move_cursor_scroll_y_start = scroll_y;
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event.type == mgl::Event::MouseButtonReleased && moving_scrollbar_with_cursor) {
|
if(event.type == mgl::Event::MouseButtonReleased && moving_scrollbar_with_cursor) {
|
||||||
@@ -42,6 +42,14 @@ namespace gsr {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(event.type == mgl::Event::MouseButtonPressed || event.type == mgl::Event::MouseButtonReleased) {
|
||||||
|
if(!mgl::IntRect(scissor_pos, scissor_size).contains({event.mouse_button.x, event.mouse_button.y}))
|
||||||
|
return true;
|
||||||
|
} else if(event.type == mgl::Event::MouseMoved) {
|
||||||
|
if(!mgl::IntRect(scissor_pos, scissor_size).contains({event.mouse_move.x, event.mouse_move.y}))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if(selected_widget) {
|
if(selected_widget) {
|
||||||
if(!selected_widget->on_event(event, window, offset))
|
if(!selected_widget->on_event(event, window, offset))
|
||||||
return false;
|
return false;
|
||||||
@@ -65,14 +73,6 @@ namespace gsr {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event.type == mgl::Event::MouseButtonPressed && scrollbar_rect.contains(mgl::vec2f(event.mouse_button.x, event.mouse_button.y))) {
|
|
||||||
set_widget_as_selected_in_parent();
|
|
||||||
moving_scrollbar_with_cursor = true;
|
|
||||||
scrollbar_move_cursor_start_pos = mgl::vec2f(event.mouse_button.x, event.mouse_button.y);
|
|
||||||
scrollbar_move_cursor_scroll_y_start = scroll_y;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user