diff --git a/source/map_display.cpp b/source/map_display.cpp index ca45d16b..1bbbf863 100644 --- a/source/map_display.cpp +++ b/source/map_display.cpp @@ -1999,18 +1999,22 @@ void MapCanvas::OnDelete(wxCommandEvent &WXUNUSED(event)) { } void MapCanvas::OnCopyPosition(wxCommandEvent &WXUNUSED(event)) { - if (!editor.hasSelection()) { - return; + if (editor.hasSelection()) { + auto minPos = editor.getSelection().minPosition(); + auto maxPos = editor.getSelection().maxPosition(); + if (minPos != maxPos) { + posToClipboard(minPos.x, minPos.y, minPos.z, maxPos.x, maxPos.y, maxPos.z, g_settings.getInteger(Config::COPY_POSITION_FORMAT)); + return; + } } - Position minPos = editor.getSelection().minPosition(); - Position maxPos = editor.getSelection().maxPosition(); - if (minPos != maxPos) { - int format = g_settings.getInteger(Config::COPY_AREA_FORMAT); - posToClipboard(minPos.x, minPos.y, minPos.z, maxPos.x, maxPos.y, maxPos.z, format); - } else { - int format = g_settings.getInteger(Config::COPY_POSITION_FORMAT); - posToClipboard(minPos.x, minPos.y, minPos.z, format); + MapTab* tab = g_gui.GetCurrentMapTab(); + if (tab) { + MapCanvas* canvas = tab->GetCanvas(); + int x, y; + int z = canvas->GetFloor(); + canvas->MouseToMap(&x, &y); + posToClipboard(x, y, z, g_settings.getInteger(Config::COPY_POSITION_FORMAT)); } } @@ -2522,7 +2526,7 @@ void MapPopupMenu::Update() { copyItem->Enable(anything_selected); wxMenuItem* copyPositionItem = Append(MAP_POPUP_MENU_COPY_POSITION, "&Copy Position", "Copy the position as a lua table"); - copyPositionItem->Enable(anything_selected); + copyPositionItem->Enable(true); wxMenuItem* pasteItem = Append(MAP_POPUP_MENU_PASTE, "&Paste\tCTRL+V", "Paste items in the copybuffer here"); pasteItem->Enable(editor.copybuffer.canPaste());