diff --git a/visualization/motion_planning_tasks/src/task_display.cpp b/visualization/motion_planning_tasks/src/task_display.cpp index 149e3e9f..227e2643 100644 --- a/visualization/motion_planning_tasks/src/task_display.cpp +++ b/visualization/motion_planning_tasks/src/task_display.cpp @@ -98,8 +98,8 @@ void TaskDisplay::onInitialize() { trajectory_visual_->onInitialize(scene_node_, context_); task_list_model_->setDisplayContext(context_); // create a new TaskPanel by default - // by post-poning this to main loop, we can ensure that rviz has loaded everything before - mainloop_jobs_.addJob([this]() { TaskPanel::incDisplayCount(context_->getWindowManager()); }); + // by post-poning this to Qt's GUI loop, we can ensure that rviz has loaded everything before + QTimer::singleShot(0, [this]() { TaskPanel::incDisplayCount(context_->getWindowManager()); }); } void TaskDisplay::loadRobotModel() { diff --git a/visualization/motion_planning_tasks/src/task_panel.cpp b/visualization/motion_planning_tasks/src/task_panel.cpp index 08cf33bd..ab20b78a 100644 --- a/visualization/motion_planning_tasks/src/task_panel.cpp +++ b/visualization/motion_planning_tasks/src/task_panel.cpp @@ -135,7 +135,7 @@ void TaskPanel::incDisplayCount(rviz::WindowManagerInterface* window_manager) { rviz::VisualizationFrame* vis_frame = dynamic_cast(window_manager); if (SINGLETON || !vis_frame) - return; // already define, nothing to do + return; // already defined, nothing to do QDockWidget* dock = vis_frame->addPanelByName("Motion Planning Tasks", "moveit_task_constructor/Motion Planning Tasks",