@@ -1707,6 +1707,27 @@ MainWindow::cm_undo ()
17071707 }
17081708}
17091709
1710+ void
1711+ MainWindow::cm_undo_list ()
1712+ {
1713+ if (current_view () && m_manager.available_undo ().first ) {
1714+
1715+ std::unique_ptr<lay::UndoRedoListForm> dialog (new lay::UndoRedoListForm (this , &m_manager, true ));
1716+
1717+ int steps = 0 ;
1718+ if (dialog->exec (steps)) {
1719+ for (std::vector <lay::LayoutViewWidget *>::iterator vp = mp_views.begin (); vp != mp_views.end (); ++vp) {
1720+ (*vp)->view ()->clear_selection ();
1721+ (*vp)->view ()->cancel ();
1722+ }
1723+ while (steps-- > 0 ) {
1724+ m_manager.undo ();
1725+ }
1726+ }
1727+
1728+ }
1729+ }
1730+
17101731void
17111732MainWindow::cm_redo ()
17121733{
@@ -1719,6 +1740,27 @@ MainWindow::cm_redo ()
17191740 }
17201741}
17211742
1743+ void
1744+ MainWindow::cm_redo_list ()
1745+ {
1746+ if (current_view () && m_manager.available_redo ().first ) {
1747+
1748+ std::unique_ptr<lay::UndoRedoListForm> dialog (new lay::UndoRedoListForm (this , &m_manager, false ));
1749+
1750+ int steps = 0 ;
1751+ if (dialog->exec (steps)) {
1752+ for (std::vector <lay::LayoutViewWidget *>::iterator vp = mp_views.begin (); vp != mp_views.end (); ++vp) {
1753+ (*vp)->view ()->clear_selection ();
1754+ (*vp)->view ()->cancel ();
1755+ }
1756+ while (steps-- > 0 ) {
1757+ m_manager.redo ();
1758+ }
1759+ }
1760+
1761+ }
1762+ }
1763+
17221764void
17231765MainWindow::cm_goto_position ()
17241766{
@@ -1847,6 +1889,11 @@ MainWindow::update_action_states ()
18471889 undo_action->set_title (undo_txt);
18481890 undo_action->set_enabled (undo_enable && edits_enabled ());
18491891
1892+ if (menu ()->is_valid (" edit_menu.undo_list" )) {
1893+ Action *undo_list_action = menu ()->action (" edit_menu.undo_list" );
1894+ undo_list_action->set_enabled (undo_enable && edits_enabled ());
1895+ }
1896+
18501897 }
18511898
18521899 if (menu ()->is_valid (" edit_menu.redo" )) {
@@ -1862,6 +1909,11 @@ MainWindow::update_action_states ()
18621909 redo_action->set_title (redo_txt);
18631910 redo_action->set_enabled (redo_enable && edits_enabled ());
18641911
1912+ if (menu ()->is_valid (" edit_menu.redo_list" )) {
1913+ Action *redo_list_action = menu ()->action (" edit_menu.redo_list" );
1914+ redo_list_action->set_enabled (redo_enable && edits_enabled ());
1915+ }
1916+
18651917 }
18661918
18671919 if (menu ()->is_valid (" edit_menu.paste" )) {
@@ -3922,6 +3974,10 @@ MainWindow::menu_activated (const std::string &symbol)
39223974 cm_undo ();
39233975 } else if (symbol == " cm_redo" ) {
39243976 cm_redo ();
3977+ } else if (symbol == " cm_undo_list" ) {
3978+ cm_undo_list ();
3979+ } else if (symbol == " cm_redo_list" ) {
3980+ cm_redo_list ();
39253981 } else if (symbol == " cm_goto_position" ) {
39263982 cm_goto_position ();
39273983 } else if (symbol == " cm_manage_bookmarks" ) {
0 commit comments