Kaydet (Commit) 98940fc9 authored tarafından Eike Rathke's avatar Eike Rathke

introduce ScCaptionPtr InUndo

Change-Id: Iccc2671b61f524244107233b77b56aaa45f5c72a
üst 71f94273
......@@ -85,6 +85,9 @@ public:
*/
bool forget();
/** Flag that this instance is in Undo, so drawing layer owns it. */
void setInUndo();
oslInterlockedCount getRefs() const;
private:
......@@ -101,6 +104,14 @@ private:
Head* mpHead; ///< points to the "master" entry
mutable ScCaptionPtr* mpNext; ///< next in list
SdrCaptionObj* mpCaption; ///< the caption object, managed by head master
bool mbInUndo; ///< whether this caption object is held in Undo
/* TODO: can that be moved to Head?
* It's unclear when to reset, so
* each instance has its own flag.
* The last reference count
* decrement automatically has the
* then current state available.
* */
void newHead(); //< Allocate a new Head and init.
void incRef() const;
......
......@@ -445,12 +445,12 @@ ScNoteCaptionCreator::ScNoteCaptionCreator( ScDocument& rDoc, const ScAddress& r
ScCaptionPtr::ScCaptionPtr() :
mpHead(nullptr), mpNext(nullptr), mpCaption(nullptr)
mpHead(nullptr), mpNext(nullptr), mpCaption(nullptr), mbInUndo(false)
{
}
ScCaptionPtr::ScCaptionPtr( SdrCaptionObj* p ) :
mpHead(nullptr), mpNext(nullptr), mpCaption(p)
mpHead(nullptr), mpNext(nullptr), mpCaption(p), mbInUndo(false)
{
if (p)
{
......@@ -459,7 +459,7 @@ ScCaptionPtr::ScCaptionPtr( SdrCaptionObj* p ) :
}
ScCaptionPtr::ScCaptionPtr( const ScCaptionPtr& r ) :
mpHead(r.mpHead), mpCaption(r.mpCaption)
mpHead(r.mpHead), mpCaption(r.mpCaption), mbInUndo(false)
{
if (r.mpCaption)
{
......@@ -477,7 +477,7 @@ ScCaptionPtr::ScCaptionPtr( const ScCaptionPtr& r ) :
}
ScCaptionPtr::ScCaptionPtr( ScCaptionPtr&& r ) :
mpHead(r.mpHead), mpNext(r.mpNext), mpCaption(r.mpCaption)
mpHead(r.mpHead), mpNext(r.mpNext), mpCaption(r.mpCaption), mbInUndo(false)
{
r.replaceInList( this );
r.mpCaption = nullptr;
......@@ -534,6 +534,11 @@ ScCaptionPtr& ScCaptionPtr::operator=( const ScCaptionPtr& r )
return *this;
}
void ScCaptionPtr::setInUndo()
{
mbInUndo = true;
}
ScCaptionPtr::Head::Head( ScCaptionPtr* p ) :
mpFirst(p), mnRefs(1)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment