0000917: Task watcher doesn't update on object creation/destruction

This commit is contained in:
wmayer 2012-12-21 14:51:44 +01:00
parent 0d17470a37
commit b52f67f740
6 changed files with 48 additions and 0 deletions

View File

@ -284,6 +284,8 @@ Document* Application::newDocument(const char * Name, const char * UserName)
_pActiveDoc->signalChangedObject.connect(boost::bind(&App::Application::slotChangedObject, this, _1, _2));
_pActiveDoc->signalRenamedObject.connect(boost::bind(&App::Application::slotRenamedObject, this, _1));
_pActiveDoc->signalActivatedObject.connect(boost::bind(&App::Application::slotActivatedObject, this, _1));
_pActiveDoc->signalUndo.connect(boost::bind(&App::Application::slotUndoDocument, this, _1));
_pActiveDoc->signalRedo.connect(boost::bind(&App::Application::slotRedoDocument, this, _1));
// make sure that the active document is set in case no GUI is up
{
@ -827,6 +829,15 @@ void Application::slotActivatedObject(const App::DocumentObject&O)
this->signalActivatedObject(O);
}
void Application::slotUndoDocument(const App::Document& d)
{
this->signalUndoDocument(d);
}
void Application::slotRedoDocument(const App::Document& d)
{
this->signalRedoDocument(d);
}
//**************************************************************************
// Init, Destruct and singleton

View File

@ -116,6 +116,10 @@ public:
boost::signal<void (const Document&)> signalStartRestoreDocument;
/// signal on restoring Document
boost::signal<void (const Document&)> signalFinishRestoreDocument;
/// signal on undo in document
boost::signal<void (const Document&)> signalUndoDocument;
/// signal on redo in document
boost::signal<void (const Document&)> signalRedoDocument;
//@}
@ -240,6 +244,8 @@ protected:
void slotChangedObject(const App::DocumentObject&, const App::Property& Prop);
void slotRenamedObject(const App::DocumentObject&);
void slotActivatedObject(const App::DocumentObject&);
void slotUndoDocument(const App::Document&);
void slotRedoDocument(const App::Document&);
//@}
private:

View File

@ -239,6 +239,9 @@ bool Document::undo(void)
delete mUndoTransactions.back();
mUndoTransactions.pop_back();
signalUndo(*this);
return true;
}
return false;
@ -263,6 +266,9 @@ bool Document::redo(void)
delete mRedoTransactions.back();
mRedoTransactions.pop_back();
signalRedo(*this);
return true;
}
return false;

View File

@ -92,6 +92,10 @@ public:
boost::signal<void (const App::DocumentObject&)> signalRenamedObject;
/// signal on activated Object
boost::signal<void (const App::DocumentObject&)> signalActivatedObject;
/// signal on undo
boost::signal<void (const App::Document&)> signalUndo;
/// signal on redo
boost::signal<void (const App::Document&)> signalRedo;
/** signal on load/save document
* this signal is given when the document gets streamed.
* you can use this hook to write additional information in

View File

@ -204,6 +204,12 @@ TaskView::TaskView(QWidget *parent)
connectApplicationDeleteDocument =
App::GetApplication().signalDeletedDocument.connect
(boost::bind(&Gui::TaskView::TaskView::slotDeletedDocument, this));
connectApplicationUndoDocument =
App::GetApplication().signalUndoDocument.connect
(boost::bind(&Gui::TaskView::TaskView::slotUndoDocument, this, _1));
connectApplicationRedoDocument =
App::GetApplication().signalRedoDocument.connect
(boost::bind(&Gui::TaskView::TaskView::slotRedoDocument, this, _1));
}
TaskView::~TaskView()
@ -259,6 +265,17 @@ void TaskView::slotDeletedDocument()
updateWatcher();
}
void TaskView::slotUndoDocument(const App::Document&)
{
if (!ActiveDialog)
updateWatcher();
}
void TaskView::slotRedoDocument(const App::Document&)
{
if (!ActiveDialog)
updateWatcher();
}
/// @cond DOXERR
void TaskView::OnChange(Gui::SelectionSingleton::SubjectType &rCaller,

View File

@ -127,6 +127,8 @@ protected:
void slotActiveDocument(const App::Document&);
void slotDeletedDocument();
void slotUndoDocument(const App::Document&);
void slotRedoDocument(const App::Document&);
std::vector<TaskWatcher*> ActiveWatcher;
@ -136,6 +138,8 @@ protected:
Connection connectApplicationActiveDocument;
Connection connectApplicationDeleteDocument;
Connection connectApplicationUndoDocument;
Connection connectApplicationRedoDocument;
};
} //namespace TaskView