Zoom in/out menu functions now use mouse position for zoom center instead of center (if mouse is inside window)

This commit is contained in:
Matthias Koefferlein 2023-05-06 21:40:36 +02:00
parent 7ff9b4d8e6
commit 7b4ff5d823
2 changed files with 17 additions and 2 deletions

View File

@ -3852,13 +3852,26 @@ LayoutViewBase::pan_center (const db::DPoint &p)
void
LayoutViewBase::zoom_in ()
{
shift_window (zoom_factor, 0.0, 0.0);
zoom_by (zoom_factor);
}
void
LayoutViewBase::zoom_out ()
{
shift_window (1.0 / zoom_factor, 0.0, 0.0);
zoom_by (1.0 / zoom_factor);
}
void
LayoutViewBase::zoom_by (double f)
{
db::DBox b = mp_canvas->viewport ().box ();
db::DPoint c = b.center ();
if (mp_canvas->mouse_in_window ()) {
c = mp_canvas->mouse_position_um ();
}
zoom_box ((b.moved (db::DPoint () - c) * f).moved (c - db::DPoint ()));
}
void

View File

@ -2881,6 +2881,8 @@ private:
bool has_max_hier () const;
int max_hier_level () const;
void zoom_by (double f);
void update_event_handlers ();
void viewport_changed ();
void cellview_changed (unsigned int index);