2525
2626#include < QAction>
2727#include < QAbstractButton>
28+ #include < QCheckBox>
2829#include < QContextMenuEvent>
2930#include < QDialog>
3031#include < QDialogButtonBox>
@@ -120,6 +121,9 @@ void MapFindFeature::showDialog()
120121 connect (controller.getMap (), &Map::objectSelectionChanged, this , &MapFindFeature::objectSelectionChanged);
121122 objectSelectionChanged ();
122123
124+ center_view = new QCheckBox (tr (" Center view" ));
125+ connect (center_view, &QCheckBox::stateChanged, this , &MapFindFeature::centerView);
126+
123127 auto tags_button = new QPushButton (tr (" Query editor" ));
124128 tags_button->setCheckable (true );
125129
@@ -141,9 +145,10 @@ void MapFindFeature::showDialog()
141145 layout->addWidget (find_all, 0 , 1 , 1 , 1 );
142146 layout->addWidget (find_next, 1 , 1 , 1 , 1 );
143147 layout->addWidget (delete_find_next, 2 , 1 , 1 , 1 );
144- layout->addWidget (tags_button, 4 , 1 , 1 , 1 );
145- layout->addWidget (tag_selector_buttons, 6 , 1 , 1 , 1 );
146- layout->addWidget (button_box, 7 , 0 , 1 , 2 );
148+ layout->addWidget (center_view, 3 , 1 , 1 , 1 );
149+ layout->addWidget (tags_button, 5 , 1 , 1 , 1 );
150+ layout->addWidget (tag_selector_buttons, 7 , 1 , 1 , 1 );
151+ layout->addWidget (button_box, 8 , 0 , 1 , 2 );
147152
148153 find_dialog->setLayout (layout);
149154 }
@@ -230,7 +235,10 @@ void MapFindFeature::findNext()
230235 if (next_object)
231236 map->addObjectToSelection (next_object, false );
232237 map->emitSelectionChanged ();
233- map->ensureVisibilityOfSelectedObjects (Map::FullVisibility);
238+ if (center_view->isChecked ())
239+ map->ensureVisibilityOfSelectedObjects (Map::CenterFullVisibility);
240+ else
241+ map->ensureVisibilityOfSelectedObjects (Map::FullVisibility);
234242
235243 if (!map->selectedObjects ().empty ())
236244 controller.setEditTool ();
@@ -271,7 +279,10 @@ void MapFindFeature::findAll()
271279 map->addObjectToSelection (object, false );
272280 }, search);
273281 map->emitSelectionChanged ();
274- map->ensureVisibilityOfSelectedObjects (Map::FullVisibility);
282+ if (center_view->isChecked ())
283+ map->ensureVisibilityOfSelectedObjects (Map::CenterFullVisibility);
284+ else
285+ map->ensureVisibilityOfSelectedObjects (Map::FullVisibility);
275286 controller.getWindow ()->showStatusBarMessage (OpenOrienteering::TagSelectWidget::tr (" %n object(s) selected" , nullptr , map->getNumSelectedObjects ()), 2000 );
276287
277288 if (!map->selectedObjects ().empty ())
@@ -287,6 +298,18 @@ void MapFindFeature::objectSelectionChanged()
287298}
288299
289300
301+ // slot
302+ void MapFindFeature::centerView ()
303+ {
304+ if (center_view->isChecked ())
305+ {
306+ auto map = controller.getMap ();
307+ if (map->getNumSelectedObjects ())
308+ map->ensureVisibilityOfSelectedObjects (Map::CenterFullVisibility);
309+ }
310+ }
311+
312+
290313// slot
291314void MapFindFeature::showHelp () const
292315{
0 commit comments