From c3b06b81c7b672b0c9fb56a19a6b845d082f28e5 Mon Sep 17 00:00:00 2001 From: lethosor Date: Thu, 16 May 2019 23:22:11 -0400 Subject: [PATCH] mousequery: use map dimensions to determine edge scrolling locations TWBT modifies the map dimensions, so using the window dimensions to handle edge scrolling produces the wrong behavior when using a larger map tileset than text tileset. --- plugins/mousequery.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/plugins/mousequery.cpp b/plugins/mousequery.cpp index 5aab0b584..fb6c1e4c5 100644 --- a/plugins/mousequery.cpp +++ b/plugins/mousequery.cpp @@ -572,12 +572,11 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest static decltype(enabler->clock) last_t = 0; auto dims = Gui::getDwarfmodeViewDims(); - auto right_margin = (dims.menu_x1 > 0) ? dims.menu_x1 : gps->dimx; int32_t mx, my; auto mpos = get_mouse_pos(mx, my); bool mpos_valid = mpos.x != -30000 && mpos.y != -30000 && mpos.z != -30000; - if (mx < 1 || mx > right_margin - 2 || my < 1 || my > gps->dimy - 2) + if (mx < 1 || mx > dims.map_x2 || my < 1 || my > dims.map_y2) mpos_valid = false; // Check if in lever binding mode @@ -683,7 +682,7 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest return; } - if (mx > right_margin - scroll_buffer) + if (mx > dims.map_x2 - scroll_buffer) { sendKey(interface_key::CURSOR_RIGHT); return; @@ -695,7 +694,7 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest return; } - if (my > gps->dimy - scroll_buffer) + if (my > dims.map_y2 - scroll_buffer) { sendKey(interface_key::CURSOR_DOWN); return;