uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp
branchRCL_3
changeset 15 08e69e956a8c
parent 4 8ca85d2f0db7
child 18 0aa5fbdfbc30
equal deleted inserted replaced
10:9f56a4e1b8ab 15:08e69e956a8c
   171 // CAknStylusPopUpMenu::ShowMenu
   171 // CAknStylusPopUpMenu::ShowMenu
   172 // ---------------------------------------------------------------------------
   172 // ---------------------------------------------------------------------------
   173 //
   173 //
   174 EXPORT_C void CAknStylusPopUpMenu::ShowMenu()
   174 EXPORT_C void CAknStylusPopUpMenu::ShowMenu()
   175     {
   175     {
   176     TRAPD( err, 
   176     // if contoller exists, re-use it .
   177            iController = CAknPreviewPopUpController::NewL( *iContent,
   177     if ( !iController )
   178                    CAknPreviewPopUpController::ELayoutSubMenu | 
   178         {
   179                    CAknPreviewPopUpController::EAutoMirror |
   179         TRAPD( err, 
   180                    CAknPreviewPopUpController::EDontClose ) );
   180                iController = CAknPreviewPopUpController::NewL( *iContent,
   181     if ( err )
   181                        CAknPreviewPopUpController::ELayoutSubMenu | 
   182         {
   182                        CAknPreviewPopUpController::EAutoMirror |
   183         return;
   183                        CAknPreviewPopUpController::EDontClose ) );
   184         }
   184         if ( err )
       
   185             {
       
   186             return;
       
   187             }
   185             
   188             
   186     iController->SetPopUpShowDelay( KDefaultPopUpShowDelay );
   189         iController->SetPopUpShowDelay( KDefaultPopUpShowDelay );
   187     iController->SetPopUpHideDelay( KDefaultPopUpHideDelay );
   190         iController->SetPopUpHideDelay( KDefaultPopUpHideDelay );
   188     iContent->Parent()->DrawableWindow()->SetNonFading(ETrue);
   191         iContent->Parent()->DrawableWindow()->SetNonFading(ETrue);
       
   192         }
   189     
   193     
   190     TSize size(iController->Size());
   194     TSize size(iController->Size());
   191     iController->ShowPopUp();
   195     iController->ShowPopUp();
   192 
   196 
   193     if ( size.iWidth == 0 && size.iHeight == 0 )
   197     if ( size.iWidth == 0 && size.iHeight == 0 )
   377             iController->HidePopUp();
   381             iController->HidePopUp();
   378             }
   382             }
   379 
   383 
   380         if ( iMenuObserver )
   384         if ( iMenuObserver )
   381             {
   385             {
       
   386             TBool isAlreadySet = iFlags.IsSet( EIdleDisabled );
       
   387 
   382             iFlags.Set( EIdleDisabled );
   388             iFlags.Set( EIdleDisabled );
   383             TBool isDeleted = EFalse;
   389             TBool isDeleted = EFalse;
   384             iIsDeleted = &isDeleted;
   390             iIsDeleted = &isDeleted;
   385 
   391 
   386             iMenuObserver->ProcessCommandL( iContent->CurrentCommandId() );
   392             iMenuObserver->ProcessCommandL( iContent->CurrentCommandId() );
   389                 {
   395                 {
   390                 return;
   396                 return;
   391                 }
   397                 }
   392 
   398 
   393             iIsDeleted = NULL;
   399             iIsDeleted = NULL;
   394             iFlags.Clear( EIdleDisabled );
   400             if( !isAlreadySet )
       
   401                 {
       
   402                 iFlags.Clear( EIdleDisabled );
       
   403                 }
   395             }
   404             }
   396 
   405 
   397         StartControllerIdleL();
   406         StartControllerIdleL();
   398         }
   407         }
   399     else if ( aControl && aEventType == EEventRequestExit )
   408     else if ( aControl && aEventType == EEventRequestExit )
   411         }
   420         }
   412     else if ( aControl && aEventType == EEventRequestCancel )
   421     else if ( aControl && aEventType == EEventRequestCancel )
   413         {
   422         {
   414         if ( iMenuObserver )
   423         if ( iMenuObserver )
   415             {
   424             {
       
   425             TBool isAlreadySet = iFlags.IsSet( EIdleDisabled );
       
   426 
   416             iFlags.Set( EIdleDisabled );
   427             iFlags.Set( EIdleDisabled );
   417             iMenuObserver->ProcessCommandL( KErrCancel );
   428             iMenuObserver->ProcessCommandL( KErrCancel );
   418             iFlags.Clear( EIdleDisabled );
   429 
       
   430             if( !isAlreadySet )
       
   431                 {
       
   432                 iFlags.Clear( EIdleDisabled );
       
   433                 }
       
   434 
   419             }
   435             }
   420 
   436 
   421         StartControllerIdleL();
   437         StartControllerIdleL();
   422         }
   438         }
   423     }
   439     }