diff -uNr old/SlideSorterView.cxx new/SlideSorterView.cxx --- old/SlideSorterView.cxx 2007-11-05 10:46:50.000000000 +0800 +++ new/SlideSorterView.cxx 2007-11-05 13:36:16.000000000 +0800 @@ -114,7 +114,7 @@ // Hide the page that contains the page objects. SetPageVisible (FALSE); - ModelHasChanged(); + LocalModelHasChanged(); } @@ -228,26 +228,40 @@ { if (mbModelChangedWhileModifyEnabled) { - mbModelChangedWhileModifyEnabled = false; + // Lock the controller + controller::SlideSorterController::ModelChangeLock aLock( GetController() ); - // First call our base class. - View::ModelHasChanged (); + // Make the controller deal with the model change + GetController().HandleModelChange(); - // Then re-set the page as current page that contains the page objects. - ShowSdrPage(mpPage); - - // Initialize everything that depends on a page view, now that we have - // one. - GetSdrPageView()->SetApplicationBackgroundColor( - Application::GetSettings().GetStyleSettings().GetWindowColor()); - - UpdatePageBorders(); + LocalModelHasChanged(); } } +void SlideSorterView::LocalModelHasChanged(void) +{ + mbModelChangedWhileModifyEnabled = false; + + // First call our base class. + View::ModelHasChanged (); + + // Then re-set the page as current page that contains the page objects. + ShowSdrPage(mpPage); + + // Initialize everything that depends on a page view, now that we have + // one. + GetSdrPageView()->SetApplicationBackgroundColor( + Application::GetSettings().GetStyleSettings().GetWindowColor()); + + UpdatePageBorders(); +} + + + + void SlideSorterView::PreModelChange (void) { // Reset the slide under the mouse. It will be set to the correct slide diff -uNr old/SlideSorterView.hxx new/SlideSorterView.hxx --- old/SlideSorterView.hxx 2007-11-05 10:47:46.000000000 +0800 +++ new/SlideSorterView.hxx 2007-11-05 10:59:00.000000000 +0800 @@ -150,6 +150,8 @@ virtual void ModelHasChanged (void); + void LocalModelHasChanged(void); + /** This method is typically called before a model change takes place. All references to model data are released. PostModelChange() has to be called to complete the handling of the model change. When the