# HG changeset patch # Parent b76898e0d1adf3c55aabf4a5959ca35e90f21b8e # User sbr # Date 1346486603 -7200 Ctrl+Click in sign list to open a new viewport centered on the sign position. (r24508) diff -r b76898e0d1ad src/lang/english.txt --- a/src/lang/english.txt Sun Sep 02 11:19:45 2012 +0200 +++ b/src/lang/english.txt Sun Sep 02 19:10:51 2012 +0200 @@ -2749,6 +2749,7 @@ STR_SIGN_LIST_CLEAR :{BLACK}Clear filter STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Toggle matching case when comparing sign names against the filter string STR_SIGN_LIST_CLEAR_TOOLTIP :{BLACK}Clear filter string +STR_SIGN_LIST_CLICK_ON_LIST_TOOLTIP :{BLACK}Click on sign to centre main view on sign position. Ctrl+Click opens an extra viewport centered on sign location # Sign window STR_EDIT_SIGN_CAPTION :{WHITE}Edit sign text diff -r b76898e0d1ad src/signs_gui.cpp --- a/src/signs_gui.cpp Sun Sep 02 11:19:45 2012 +0200 +++ b/src/signs_gui.cpp Sun Sep 02 19:10:51 2012 +0200 @@ -27,6 +27,7 @@ #include "core/geometry_func.hpp" #include "hotkeys.h" #include "transparency.h" +#include "gui.h" #include "widgets/sign_widget.h" @@ -252,7 +253,11 @@ if (id_v == INT_MAX) return; const Sign *si = this->signs[id_v]; - ScrollMainWindowToTile(TileVirtXY(si->x, si->y)); + if (_ctrl_pressed) { + ShowExtraViewPortWindow(TileVirtXY(si->x, si->y)); // Ctrl+click to open a viewport centered on the sign. + } else { + ScrollMainWindowToTile(TileVirtXY(si->x, si->y)); // Click to move to sign position. + } break; } case WID_SIL_FILTER_CLEAR_BTN: @@ -394,6 +399,7 @@ NWidget(NWID_HORIZONTAL), NWidget(NWID_VERTICAL), NWidget(WWT_PANEL, COLOUR_GREY, WID_SIL_LIST), SetMinimalSize(WD_FRAMETEXT_LEFT + 16 + 255 + WD_FRAMETEXT_RIGHT, 50), + SetDataTip(STR_NULL, STR_SIGN_LIST_CLICK_ON_LIST_TOOLTIP), SetResize(1, 10), SetFill(1, 0), SetScrollbar(WID_SIL_SCROLLBAR), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1),