diff --git a/src/wintourguide.cpp b/src/wintourguide.cpp index d75e9493a..e18108659 100644 --- a/src/wintourguide.cpp +++ b/src/wintourguide.cpp @@ -38,6 +38,8 @@ BOOL APIENTRY TourGuideProc(HWND hDlg, return EndDialog(hDlg, 0); SetWindowLong(hDlg, DWL_USER, lParam); + guide->selectedDest = NULL; + HWND hwnd = GetDlgItem(hDlg, IDC_COMBO_TOURGUIDE); const DestinationList* destinations = guide->appCore->getDestinations(); if (hwnd != NULL && destinations != NULL) @@ -89,7 +91,29 @@ BOOL APIENTRY TourGuideProc(HWND hDlg, } else if (LOWORD(wParam) == IDC_BUTTON_GOTO) { - tourGuide->appCore->charEntered('G'); + Simulation* sim = tourGuide->appCore->getSimulation(); + if (tourGuide->selectedDest != NULL && sim != NULL) + { + Selection sel = sim->findObjectFromPath(tourGuide->selectedDest->target); + if (!sel.empty()) + { + sim->setSelection(sel); + if (tourGuide->selectedDest->distance <= 0) + { + // Use the default distance + sim->gotoSelection(5.0, + Vec3f(0, 1, 0), + astro::ObserverLocal); + } + else + { + sim->gotoSelection(5.0, + tourGuide->selectedDest->distance, + Vec3f(0, 1, 0), + astro::ObserverLocal); + } + } + } } else if (LOWORD(wParam) == IDC_COMBO_TOURGUIDE) { @@ -101,16 +125,10 @@ BOOL APIENTRY TourGuideProc(HWND hDlg, if (item != CB_ERR && item < destinations->size()) { Destination* dest = (*destinations)[item]; - Selection sel = tourGuide->appCore->getSimulation()->findObjectFromPath(dest->target); - SetDlgItemText(hDlg, IDC_TEXT_DESCRIPTION, dest->description.c_str()); - - if (!sel.empty()) - { - tourGuide->appCore->getSimulation()->setSelection(sel); - } + tourGuide->selectedDest = dest; } } } @@ -125,6 +143,7 @@ TourGuide::TourGuide(HINSTANCE appInstance, HWND _parent, CelestiaCore* _appCore) : appCore(_appCore), + selectedDest(NULL), parent(_parent) { hwnd = CreateDialogParam(appInstance, diff --git a/src/wintourguide.h b/src/wintourguide.h index 48d853343..f8ce7569b 100644 --- a/src/wintourguide.h +++ b/src/wintourguide.h @@ -22,6 +22,7 @@ class TourGuide public: CelestiaCore* appCore; + Destination* selectedDest; HWND parent; HWND hwnd; };