Advertisement
BeniS

GWT-Presenter Bug 1 (Place)

Feb 16th, 2013
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.41 KB | None | 0 0
  1. diff --git c/src/main/java/net/customware/gwt/presenter/client/place/Place.java w/src/main/java/net/customware/gwt/presenter/client/place/Place.java
  2. index f9fa5df..6f63434 100644
  3. --- c/src/main/java/net/customware/gwt/presenter/client/place/Place.java
  4. +++ w/src/main/java/net/customware/gwt/presenter/client/place/Place.java
  5. @@ -18,6 +18,7 @@ import net.customware.gwt.presenter.client.EventBus;
  6. */
  7. public abstract class Place {
  8. private HandlerRegistration placeRequestRegistration;
  9. + protected boolean isHandling = false;
  10.  
  11. public Place() {
  12. }
  13. @@ -80,8 +81,13 @@ public abstract class Place {
  14. public void onPlaceRequest( PlaceRequestEvent event ) {
  15. PlaceRequest request = event.getRequest();
  16. if ( matchesRequest( request ) ) {
  17. - handleRequest( request );
  18. - PlaceRevealedEvent.fire( eventBus, Place.this, request );
  19. + isHandling = true;
  20. + try {
  21. + handleRequest( request );
  22. + PlaceRevealedEvent.fire( eventBus, Place.this, request );
  23. + } finally {
  24. + isHandling = false;
  25. + }
  26. }
  27. }
  28. } );
  29. diff --git c/src/main/java/net/customware/gwt/presenter/client/place/PresenterPlace.java w/src/main/java/net/customware/gwt/presenter/client/place/PresenterPlace.java
  30. index 13a93c2..57a2a4e 100644
  31. --- c/src/main/java/net/customware/gwt/presenter/client/place/PresenterPlace.java
  32. +++ w/src/main/java/net/customware/gwt/presenter/client/place/PresenterPlace.java
  33. @@ -61,7 +61,7 @@ public abstract class PresenterPlace<T extends Presenter> extends Place {
  34. */
  35. @SuppressWarnings("unchecked")
  36. public void onPresenterChanged( PresenterChangedEvent event ) {
  37. - if ( isPlaceFor(event.getPresenter()) ) {
  38. + if ( !isHandling && isPlaceFor(event.getPresenter()) ) {
  39. PlaceRequest request = prepareRequest( new PlaceRequest(getName()), (T) event.getPresenter() );
  40. PlaceChangedEvent.fire( eventBus, PresenterPlace.this, request );
  41. }
  42. @@ -71,7 +71,7 @@ public abstract class PresenterPlace<T extends Presenter> extends Place {
  43. presenterRevealedRegistration = eventBus.addHandler( PresenterRevealedEvent.getType(), new PresenterRevealedHandler() {
  44. @SuppressWarnings("unchecked")
  45. public void onPresenterRevealed( PresenterRevealedEvent event ) {
  46. - if ( event.isOriginator() && isPlaceFor(event.getPresenter()) ) {
  47. + if ( !isHandling && event.isOriginator() && isPlaceFor(event.getPresenter()) ) {
  48. PlaceRequest request = prepareRequest( new PlaceRequest(getName()), (T) event.getPresenter() );
  49. PlaceRevealedEvent.fire( eventBus, PresenterPlace.this, request );
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement