From ce5aa9dc3eae79a59b352aab00411b4081e609c3 Mon Sep 17 00:00:00 2001 From: Philippe Saint-Pierre Date: Mon, 27 Apr 2009 00:51:27 +0000 Subject: [PATCH] Add Undo/Redo functionality to People contact manager (ticket #3824) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30453 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/people/PeopleWindow.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/apps/people/PeopleWindow.cpp b/src/apps/people/PeopleWindow.cpp index cb8ab48fde..53dc6be2a5 100644 --- a/src/apps/people/PeopleWindow.cpp +++ b/src/apps/people/PeopleWindow.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include "PeopleApp.h" #include "PeopleView.h" @@ -52,7 +53,9 @@ TPeopleWindow::TPeopleWindow(BRect frame, char *title, entry_ref *ref) menuBar->AddItem(menu); menu = new BMenu("Edit"); - menu->AddItem(fUndo = new BMenuItem("Undo", new BMessage(M_UNDO), 'Z')); + menu->AddItem(fUndo = new BMenuItem("Undo", new BMessage(B_UNDO), 'Z')); + fUndo->SetTarget(NULL, this); + fUndo->SetEnabled(false); menu->AddSeparatorItem(); menu->AddItem(fCut = new BMenuItem("Cut", new BMessage(B_CUT), 'X')); fCut->SetTarget(NULL, this); @@ -91,12 +94,20 @@ void TPeopleWindow::MenusBeginning(void) { bool enabled; + bool isRedo; enabled = fView->CheckSave(); fSave->SetEnabled(enabled); fRevert->SetEnabled(enabled); - fUndo->SetEnabled(false); + undo_state state = ((BTextView *)CurrentFocus())->UndoState(&isRedo); + fUndo->SetEnabled(state != B_UNDO_UNAVAILABLE); + + if (isRedo) + fUndo->SetLabel("Redo"); + else + fUndo->SetLabel("Undo"); + enabled = fView->TextSelected(); fCut->SetEnabled(enabled); fCopy->SetEnabled(enabled);