@@ -184,7 +184,6 @@ draw_image_window_contents(ViewerState& viewer, PlaceholderUiState& ui_state,
184184 ImTextureRef closeup_texture_ref;
185185 bool has_main_texture = false ;
186186 bool has_closeup_texture = false ;
187- bool image_canvas_pressed = false ;
188187 bool image_canvas_hovered = false ;
189188 bool image_canvas_active = false ;
190189 PendingZoomRequest pending_zoom = shortcut_zoom_request;
@@ -260,11 +259,10 @@ draw_image_window_contents(ViewerState& viewer, PlaceholderUiState& ui_state,
260259 coord_map.window_pos = ImGui::GetWindowPos ();
261260 if (has_main_texture && coord_map.valid ) {
262261 ImGui::SetCursorScreenPos (coord_map.image_rect_min );
263- image_canvas_pressed = ImGui::InvisibleButton (
264- " ##image_canvas" , image_size,
265- ImGuiButtonFlags_MouseButtonLeft
266- | ImGuiButtonFlags_MouseButtonRight
267- | ImGuiButtonFlags_MouseButtonMiddle);
262+ ImGui::InvisibleButton (" ##image_canvas" , image_size,
263+ ImGuiButtonFlags_MouseButtonLeft
264+ | ImGuiButtonFlags_MouseButtonRight
265+ | ImGuiButtonFlags_MouseButtonMiddle);
268266 image_canvas_hovered = ImGui::IsItemHovered (
269267 ImGuiHoveredFlags_AllowWhenBlockedByActiveItem);
270268 image_canvas_active = ImGui::IsItemActive ();
@@ -318,11 +316,10 @@ draw_image_window_contents(ViewerState& viewer, PlaceholderUiState& ui_state,
318316 const ImGuiIO& io = ImGui::GetIO ();
319317 const ImVec2 mouse = io.MousePos ;
320318 const bool area_probe_mode = ui_state.show_area_probe_window ;
321- const bool selection_capable_mode = (ui_state.mouse_mode == 3 )
322- || area_probe_mode;
323- const bool mouse_in_image = point_in_rect (mouse,
324- coord_map.image_rect_min ,
325- coord_map.image_rect_max );
319+ const bool selection_capable_mode = area_probe_mode;
320+ const bool mouse_in_image = point_in_rect (mouse,
321+ coord_map.image_rect_min ,
322+ coord_map.image_rect_max );
326323 const bool mouse_in_viewport
327324 = point_in_rect (mouse, coord_map.viewport_rect_min ,
328325 coord_map.viewport_rect_max );
@@ -332,24 +329,16 @@ draw_image_window_contents(ViewerState& viewer, PlaceholderUiState& ui_state,
332329 && mouse_in_viewport;
333330 const bool image_canvas_accepts_mouse = image_canvas_hovered
334331 || image_canvas_active;
335- const bool image_canvas_clicked_left
336- = image_canvas_pressed && io.MouseReleased [ImGuiMouseButton_Left];
337- const bool image_canvas_clicked_right
338- = image_canvas_pressed && io.MouseReleased [ImGuiMouseButton_Right];
339332 const bool empty_viewport_clicked_left
340333 = viewport_accepts_mouse && !mouse_in_image
341334 && ImGui::IsMouseClicked (ImGuiMouseButton_Left);
342- const bool empty_viewport_clicked_right
343- = viewport_accepts_mouse && !mouse_in_image
344- && ImGui::IsMouseClicked (ImGuiMouseButton_Right);
345335 const ImVec2 clamped_mouse
346336 = clamp_pos_to_rect (mouse, coord_map.image_rect_min ,
347337 coord_map.image_rect_max );
348338 ImVec2 selection_source_uv (0 .5f , 0 .5f );
349339 const bool have_selection_source_uv
350340 = screen_to_source_uv (coord_map, clamped_mouse,
351341 selection_source_uv);
352- bool selection_consumed_left_release = false ;
353342
354343 ImVec2 source_uv (0 .0f , 0 .0f );
355344 int px = 0 ;
@@ -423,15 +412,13 @@ draw_image_window_contents(ViewerState& viewer, PlaceholderUiState& ui_state,
423412 viewer.selection_xend , viewer.selection_yend );
424413 viewer.last_error .clear ();
425414 }
426- selection_consumed_left_release = true ;
427415 } else if ((selection_capable_mode || area_probe_mode)
428416 && (viewport_accepts_mouse
429417 || image_canvas_accepts_mouse)) {
430418 clear_image_selection (viewer);
431419 sync_area_probe_to_selection (viewer, ui_state);
432420 viewer.status_message = " Selection cleared" ;
433421 viewer.last_error .clear ();
434- selection_consumed_left_release = true ;
435422 }
436423 viewer.selection_press_active = false ;
437424 viewer.selection_drag_active = false ;
@@ -445,7 +432,6 @@ draw_image_window_contents(ViewerState& viewer, PlaceholderUiState& ui_state,
445432 sync_area_probe_to_selection (viewer, ui_state);
446433 viewer.status_message = " Selection cleared" ;
447434 viewer.last_error .clear ();
448- selection_consumed_left_release = true ;
449435 }
450436
451437 bool want_pan = false ;
@@ -455,38 +441,23 @@ draw_image_window_contents(ViewerState& viewer, PlaceholderUiState& ui_state,
455441 if (ui_state.mouse_mode == 1 ) {
456442 want_pan = (!area_probe_mode
457443 && ImGui::IsMouseDown (ImGuiMouseButton_Left))
458- || ImGui::IsMouseDown (ImGuiMouseButton_Right)
459444 || ImGui::IsMouseDown (ImGuiMouseButton_Middle);
460445 } else if (ui_state.mouse_mode == 0 ) {
461- const bool want_middle_pan
462- = ImGui::IsMouseDown (ImGuiMouseButton_Middle)
446+ const bool want_left_pan
447+ = !area_probe_mode
448+ && ImGui::IsMouseDown (ImGuiMouseButton_Left)
463449 && (viewer.pan_drag_active || image_canvas_accepts_mouse
464450 || viewport_accepts_mouse);
465- const bool want_alt_left_pan
466- = !area_probe_mode && io.KeyAlt
467- && ImGui::IsMouseDown (ImGuiMouseButton_Left)
451+ const bool want_middle_pan
452+ = ImGui::IsMouseDown (ImGuiMouseButton_Middle)
468453 && (viewer.pan_drag_active || image_canvas_accepts_mouse
469454 || viewport_accepts_mouse);
470- want_pan = want_middle_pan || want_alt_left_pan ;
471- want_zoom_drag = io. KeyAlt
455+ want_pan = want_left_pan || want_middle_pan ;
456+ want_zoom_drag = !area_probe_mode
472457 && ImGui::IsMouseDown (ImGuiMouseButton_Right)
473458 && (viewer.zoom_drag_active
474459 || image_canvas_accepts_mouse
475460 || viewport_accepts_mouse);
476- if (!area_probe_mode && !io.KeyAlt
477- && (image_canvas_clicked_left || image_canvas_clicked_right
478- || empty_viewport_clicked_left
479- || empty_viewport_clicked_right)) {
480- if (!selection_consumed_left_release
481- && (image_canvas_clicked_left
482- || empty_viewport_clicked_left)) {
483- request_zoom_scale (pending_zoom, 2 .0f , true );
484- }
485- if (image_canvas_clicked_right
486- || empty_viewport_clicked_right) {
487- request_zoom_scale (pending_zoom, 0 .5f , true );
488- }
489- }
490461 }
491462 }
492463
@@ -519,7 +490,7 @@ draw_image_window_contents(ViewerState& viewer, PlaceholderUiState& ui_state,
519490 } else {
520491 const float dx = mouse.x - viewer.drag_prev_mouse .x ;
521492 const float dy = mouse.y - viewer.drag_prev_mouse .y ;
522- const float scale = 1 .0f + 0 .005f * (dx + dy );
493+ const float scale = 1 .0f + 0 .005f * (dy - dx );
523494 if (scale > 0 .0f )
524495 request_zoom_scale (pending_zoom, scale, true );
525496 viewer.drag_prev_mouse = mouse;
0 commit comments