[haiku-commits] haiku: hrev44510 - src/kits/tracker

  • From: stpere@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 10 Aug 2012 18:34:48 +0200 (CEST)

hrev44510 adds 2 changesets to branch 'master'
old head: 44f900e22159f63301079c68abb711ead5669a4d
new head: c01e918c0a1ed600180bde084f51284c756a6d1c

----------------------------------------------------------------------------

66c09a3: Delayed widget editing, crash avoidance
  
  Make the PoseView stop watching a TextWidget if it's being deleted.
  Could happen in race conditions for example, if you click to edit
  the name widget of a pose while the pose is being deleted soon after.

c01e918: Cancel editing of Widget if sorting of poses occured.
  
  Since the position of the widget was registered at the first click,
  it likely changed and its causing drawing afterfacts (it's editing at
  its old location).

                                [ Philippe Saint-Pierre <stpere@xxxxxxxxx> ]

----------------------------------------------------------------------------

3 files changed, 9 insertions(+), 3 deletions(-)
src/kits/tracker/PoseView.cpp   |    7 +++++--
src/kits/tracker/PoseView.h     |    2 +-
src/kits/tracker/TextWidget.cpp |    3 +++

############################################################################

Commit:      66c09a35546f869af3fef1968a3c423d04cc7495
URL:         http://cgit.haiku-os.org/haiku/commit/?id=66c09a3
Author:      Philippe Saint-Pierre <stpere@xxxxxxxxx>
Date:        Fri Aug 10 16:08:45 2012 UTC

Delayed widget editing, crash avoidance

Make the PoseView stop watching a TextWidget if it's being deleted.
Could happen in race conditions for example, if you click to edit
the name widget of a pose while the pose is being deleted soon after.

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp
index 0a07665..c04d395 100644
--- a/src/kits/tracker/PoseView.cpp
+++ b/src/kits/tracker/PoseView.cpp
@@ -7137,9 +7137,10 @@ BPoseView::MouseDown(BPoint where)
 
 
 void
-BPoseView::SetTextWidgetToCheck(BTextWidget* widget)
+BPoseView::SetTextWidgetToCheck(BTextWidget* widget, BTextWidget* old)
 {
-       fTextWidgetToCheck = widget;
+       if (old == NULL || fTextWidgetToCheck == old)
+               fTextWidgetToCheck = widget;
 }
 
 
diff --git a/src/kits/tracker/PoseView.h b/src/kits/tracker/PoseView.h
index 09f21e8..ffd08fd 100644
--- a/src/kits/tracker/PoseView.h
+++ b/src/kits/tracker/PoseView.h
@@ -425,7 +425,7 @@ class BPoseView : public BView {
                virtual void AdaptToVolumeChange(BMessage*);
                virtual void AdaptToDesktopIntegrationChange(BMessage*);
 
-               void SetTextWidgetToCheck(BTextWidget*);
+               void SetTextWidgetToCheck(BTextWidget*, BTextWidget* = NULL);
 
        protected:
                // view setup
diff --git a/src/kits/tracker/TextWidget.cpp b/src/kits/tracker/TextWidget.cpp
index 1a0f93e..636b4f5 100644
--- a/src/kits/tracker/TextWidget.cpp
+++ b/src/kits/tracker/TextWidget.cpp
@@ -78,6 +78,9 @@ BTextWidget::BTextWidget(Model* model, BColumn* column, 
BPoseView* view)
 
 BTextWidget::~BTextWidget()
 {
+       if (fLastClickedTime != 0)
+               fParams.poseView->SetTextWidgetToCheck(NULL, this);
+
        delete fText;
 }
 

############################################################################

Revision:    hrev44510
Commit:      c01e918c0a1ed600180bde084f51284c756a6d1c
URL:         http://cgit.haiku-os.org/haiku/commit/?id=c01e918
Author:      Philippe Saint-Pierre <stpere@xxxxxxxxx>
Date:        Fri Aug 10 16:23:08 2012 UTC

Cancel editing of Widget if sorting of poses occured.

Since the position of the widget was registered at the first click,
it likely changed and its causing drawing afterfacts (it's editing at
its old location).

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp
index c04d395..0ec53c7 100644
--- a/src/kits/tracker/PoseView.cpp
+++ b/src/kits/tracker/PoseView.cpp
@@ -9169,6 +9169,8 @@ DumpOne(BPose* pose, void*)
 void
 BPoseView::SortPoses()
 {
+       if (fTextWidgetToCheck != NULL)
+               fTextWidgetToCheck->CancelWait();
        CommitActivePose();
        // PRINT(("pose list count %d\n", fPoseList->CountItems()));
 #if xDEBUG


Other related posts:

  • » [haiku-commits] haiku: hrev44510 - src/kits/tracker - stpere