diff -r 2f259fa3e83a -r 3320e4e6e8bb uifw/EikStd/coctlsrc/AknButton.cpp --- a/uifw/EikStd/coctlsrc/AknButton.cpp Tue Feb 02 01:00:49 2010 +0200 +++ b/uifw/EikStd/coctlsrc/AknButton.cpp Fri Apr 16 15:13:44 2010 +0300 @@ -2227,8 +2227,7 @@ { // State is changed on button down event ChangeState( EFalse ); - redrawNeeded = EFalse; - DrawNow(); //Redraw before noticing the observer for observer might open dialog + redrawNeeded = ETrue; if ( Observer() ) { Observer()->HandleControlEventL( this, @@ -2336,7 +2335,6 @@ iButtonPressed = EFalse; } - TBool hasDrawn( EFalse ); if ( buttonEvent && !IsDimmed() ) { // feedback/BasicButton on up event, if hit test is @@ -2359,12 +2357,7 @@ !( iExtension->iFlags.IsSet( CAknButtonExtension::EKeyRepeatEventReported ) ) ) { ChangeState( EFalse ); - if ( !hasDrawn ) - { - DrawNow(); - hasDrawn = ETrue; - } - + redrawNeeded = ETrue; if ( Observer() ) { Observer()->HandleControlEventL( this, @@ -2375,11 +2368,6 @@ { if ( iExtension->iFlags.IsSet( CAknButtonExtension::ELongPressReported ) && Observer() ) { - if ( redrawNeeded && !hasDrawn ) - { - DrawNow(); - hasDrawn = ETrue; - } Observer()->HandleControlEventL( this, static_cast( CAknButton::ELongPressEndedEvent ) ); @@ -2390,11 +2378,6 @@ if ( RequestExit() && Observer() ) { - if ( redrawNeeded && !hasDrawn ) - { - DrawNow(); - hasDrawn = ETrue; - } Observer()->HandleControlEventL( this, MCoeControlObserver::EEventRequestExit ); } @@ -2402,11 +2385,6 @@ if ( !buttonEvent && !IsDimmed() && Observer() ) { - if ( redrawNeeded && !hasDrawn ) - { - DrawNow(); - hasDrawn = ETrue; - } Observer()->HandleControlEventL( this, MCoeControlObserver::EEventRequestCancel ); @@ -2419,10 +2397,7 @@ iExtension->iFlags.Clear( CAknButtonExtension::EKeyRepeatEventReported ); } } - if ( hasDrawn ) - { - redrawNeeded = EFalse; - } + break; }