aboutsummaryrefslogtreecommitdiff
path: root/src/Body.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Body.cpp')
-rw-r--r--src/Body.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/Body.cpp b/src/Body.cpp
index 0971e00..c008c40 100644
--- a/src/Body.cpp
+++ b/src/Body.cpp
@@ -258,9 +258,9 @@ namespace QuickMedia {
if(item != selected_item)
selected_scrolled = 0.0f;
selected_item = item;
+ clamp_selection();
if(reset_prev_selected_item)
prev_selected_item = selected_item;
- clamp_selection();
clamp_selected_item_to_body_count = 1;
//page_scroll = 0.0f;
}
@@ -759,8 +759,6 @@ namespace QuickMedia {
if(!items_cut_off_set)
items_cut_off = false;
- mouse_left_clicked = false;
-
for(auto it = item_thumbnail_textures.begin(); it != item_thumbnail_textures.end();) {
if(!it->second->referenced) {
it = item_thumbnail_textures.erase(it);
@@ -784,6 +782,14 @@ namespace QuickMedia {
loaded_textures_changed = false;
malloc_trim(0);
}
+
+ mouse_left_clicked = false;
+ if(clicked_body_item) {
+ auto clicked_body_item_tmp = clicked_body_item; // tmp because below call to body_item_select_callback may call this same draw function
+ clicked_body_item = nullptr;
+ if(body_item_select_callback)
+ body_item_select_callback(clicked_body_item_tmp.get());
+ }
}
void Body::update_dirty_state(BodyItem *body_item, float width) {
@@ -953,12 +959,12 @@ namespace QuickMedia {
item_pos.x = std::floor(pos.x);
item_pos.y = std::floor(pos.y);
- if(body_item_select_callback && mouse_left_clicked) {
+ if(body_item_select_callback && mouse_left_clicked && !clicked_body_item) {
sf::FloatRect item_box(pos, sf::Vector2f(size.x, item_height));
// TODO: Scale mouse_press_pixels_moved_abs with monitor PPI instead of using get_ui_scale()
if(item_box.contains(mouse_click_pos) && item_box.contains(mouse_release_pos) && mouse_press_pixels_moved_abs <= 50.0 * get_ui_scale()) {
+ clicked_body_item = items[item_index];
set_selected_item(item_index, false);
- body_item_select_callback(item);
}
}