/** * @brief Slot called when the current tab changes. * @param index Index of the new current tab. */ void EditorTabs::current_editor_changed(int /* index */) { Editor* editor = get_editor(); if (editor == nullptr) { get_undo_group().setActiveStack(nullptr); emit can_cut_changed(false); emit can_copy_changed(false); emit can_paste_changed(false); } else { get_undo_group().setActiveStack(&editor->get_undo_stack()); connect(editor, &Editor::can_cut_changed, [=](bool can_cut) { if (get_editor() == editor) { emit can_cut_changed(can_cut); } }); connect(editor, &Editor::can_copy_changed, [=](bool can_copy) { if (get_editor() == editor) { emit can_copy_changed(can_copy); } }); connect(editor, &Editor::can_paste_changed, [=](bool can_paste) { if (get_editor() == editor) { emit can_paste_changed(can_paste); } }); emit can_cut_changed(editor->can_cut()); emit can_copy_changed(editor->can_copy()); emit can_paste_changed(editor->can_paste()); } }
/** * @brief Slot called when the user changes the selection in the map. */ void MapEditor::map_selection_changed() { // Update whether cut/copy are available. bool empty_selection = ui.map_view->is_selection_empty(); can_cut_changed(!empty_selection); can_copy_changed(!empty_selection); }