LCOV - code coverage report
Current view: top level - svx/source/tbxctrls - itemwin.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 70 275 25.5 %
Date: 2014-11-03 Functions: 20 41 48.8 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <com/sun/star/drawing/FillStyle.hpp>
      21             : 
      22             : #include <sfx2/dispatch.hxx>
      23             : #include <sfx2/objsh.hxx>
      24             : #include <sfx2/viewsh.hxx>
      25             : #include <sfx2/module.hxx>
      26             : #include <tools/urlobj.hxx>
      27             : 
      28             : #include <vcl/svapp.hxx>
      29             : #include <vcl/settings.hxx>
      30             : 
      31             : #include <svx/dialogs.hrc>
      32             : 
      33             : #define DELAY_TIMEOUT           100
      34             : 
      35             : #include <svx/xlnclit.hxx>
      36             : #include <svx/xlnwtit.hxx>
      37             : #include <svx/xlineit0.hxx>
      38             : #include <svx/xlndsit.hxx>
      39             : #include <svx/xtable.hxx>
      40             : #include "svx/drawitem.hxx"
      41             : #include <svx/dialmgr.hxx>
      42             : #include "svx/dlgutil.hxx"
      43             : #include <svx/itemwin.hxx>
      44             : #include "svx/linectrl.hxx"
      45             : #include <svtools/colorcfg.hxx>
      46             : 
      47             : using namespace ::com::sun::star;
      48             : using namespace ::com::sun::star::uno;
      49             : using namespace ::com::sun::star::frame;
      50             : using namespace ::com::sun::star::util;
      51             : using namespace ::com::sun::star::lang;
      52             : using namespace ::com::sun::star::beans;
      53             : 
      54             : #define LOGICAL_EDIT_HEIGHT         12
      55             : 
      56         126 : SvxLineBox::SvxLineBox( vcl::Window* pParent, const Reference< XFrame >& rFrame, WinBits nBits ) :
      57             :     LineLB( pParent, nBits ),
      58             :     nCurPos     ( 0 ),
      59             :     aLogicalSize(40,140),
      60             :     bRelease    ( true ),
      61             :     mpSh        ( NULL ),
      62         126 :     mxFrame     ( rFrame )
      63             : {
      64         126 :     SetSizePixel( LogicToPixel( aLogicalSize, MAP_APPFONT ));
      65         126 :     Show();
      66             : 
      67         126 :     aDelayTimer.SetTimeout( DELAY_TIMEOUT );
      68         126 :     aDelayTimer.SetTimeoutHdl( LINK( this, SvxLineBox, DelayHdl_Impl ) );
      69         126 :     aDelayTimer.Start();
      70         126 : }
      71             : 
      72             : 
      73             : 
      74         252 : SvxLineBox::~SvxLineBox()
      75             : {
      76         252 : }
      77             : 
      78             : 
      79             : 
      80         210 : IMPL_LINK_NOARG(SvxLineBox, DelayHdl_Impl)
      81             : {
      82         105 :     if ( GetEntryCount() == 0 )
      83             :     {
      84         105 :         mpSh = SfxObjectShell::Current();
      85         105 :         FillControl();
      86             :     }
      87         105 :     return 0;
      88             : }
      89             : 
      90             : 
      91             : 
      92           0 : void SvxLineBox::Select()
      93             : {
      94             :     // Call the parent's Select() member to trigger accessibility events.
      95           0 :     LineLB::Select();
      96             : 
      97           0 :     if ( !IsTravelSelect() )
      98             :     {
      99             :         XLineStyle eXLS;
     100           0 :         sal_Int32 nPos = GetSelectEntryPos();
     101             : 
     102           0 :         switch ( nPos )
     103             :         {
     104             :             case 0:
     105           0 :                 eXLS = XLINE_NONE;
     106           0 :                 break;
     107             : 
     108             :             case 1:
     109           0 :                 eXLS = XLINE_SOLID;
     110           0 :                 break;
     111             : 
     112             :             default:
     113             :             {
     114           0 :                 eXLS = XLINE_DASH;
     115             : 
     116           0 :                 if ( nPos != LISTBOX_ENTRY_NOTFOUND &&
     117           0 :                      SfxObjectShell::Current()  &&
     118           0 :                      SfxObjectShell::Current()->GetItem( SID_DASH_LIST ) )
     119             :                 {
     120             :                     // LineDashItem will only be sent if it also has a dash.
     121             :                     // Notify cares!
     122             :                     SvxDashListItem aItem( *static_cast<const SvxDashListItem*>(
     123           0 :                         SfxObjectShell::Current()->GetItem( SID_DASH_LIST ) ) );
     124             :                     XLineDashItem aLineDashItem( GetSelectEntry(),
     125           0 :                         aItem.GetDashList()->GetDash( nPos - 2 )->GetDash() );
     126             : 
     127           0 :                     Any a;
     128           0 :                     Sequence< PropertyValue > aArgs( 1 );
     129           0 :                     aArgs[0].Name = "LineDash";
     130           0 :                     aLineDashItem.QueryValue ( a );
     131           0 :                     aArgs[0].Value = a;
     132           0 :                     SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ),
     133             :                                                  OUString( ".uno:LineDash" ),
     134           0 :                                                  aArgs );
     135             :                 }
     136             :             }
     137           0 :             break;
     138             :         }
     139             : 
     140           0 :         XLineStyleItem aLineStyleItem( eXLS );
     141           0 :         Any a;
     142           0 :         Sequence< PropertyValue > aArgs( 1 );
     143           0 :         aArgs[0].Name = "XLineStyle";
     144           0 :         aLineStyleItem.QueryValue ( a );
     145           0 :         aArgs[0].Value = a;
     146           0 :         SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ),
     147             :                                      OUString( ".uno:XLineStyle" ),
     148           0 :                                      aArgs );
     149             : 
     150           0 :         nCurPos = GetSelectEntryPos();
     151           0 :         ReleaseFocus_Impl();
     152             :     }
     153           0 : }
     154             : 
     155             : 
     156             : 
     157           0 : bool SvxLineBox::PreNotify( NotifyEvent& rNEvt )
     158             : {
     159           0 :     sal_uInt16 nType = rNEvt.GetType();
     160             : 
     161           0 :     switch(nType)
     162             :     {
     163             :         case EVENT_MOUSEBUTTONDOWN:
     164             :         case EVENT_GETFOCUS:
     165           0 :             nCurPos = GetSelectEntryPos();
     166           0 :         break;
     167             :         case EVENT_LOSEFOCUS:
     168           0 :             SelectEntryPos(nCurPos);
     169           0 :         break;
     170             :         case EVENT_KEYINPUT:
     171             :         {
     172           0 :             const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
     173           0 :             if( pKEvt->GetKeyCode().GetCode() == KEY_TAB)
     174             :             {
     175           0 :                 bRelease = false;
     176           0 :                 Select();
     177             :             }
     178             :         }
     179           0 :         break;
     180             :     }
     181           0 :     return LineLB::PreNotify( rNEvt );
     182             : }
     183             : 
     184             : 
     185             : 
     186           0 : bool SvxLineBox::Notify( NotifyEvent& rNEvt )
     187             : {
     188           0 :     bool nHandled = LineLB::Notify( rNEvt );
     189             : 
     190           0 :     if ( rNEvt.GetType() == EVENT_KEYINPUT )
     191             :     {
     192           0 :         const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
     193             : 
     194           0 :         switch ( pKEvt->GetKeyCode().GetCode() )
     195             :         {
     196             :             case KEY_RETURN:
     197           0 :                 Select();
     198           0 :                 nHandled = true;
     199           0 :                 break;
     200             : 
     201             :             case KEY_ESCAPE:
     202           0 :                 SelectEntryPos( nCurPos );
     203           0 :                 ReleaseFocus_Impl();
     204           0 :                 nHandled = true;
     205           0 :                 break;
     206             :         }
     207             :     }
     208           0 :     return nHandled;
     209             : }
     210             : 
     211             : 
     212             : 
     213           0 : void SvxLineBox::ReleaseFocus_Impl()
     214             : {
     215           0 :     if(!bRelease)
     216             :     {
     217           0 :         bRelease = true;
     218           0 :         return;
     219             :     }
     220             : 
     221           0 :     if( SfxViewShell::Current() )
     222             :     {
     223           0 :         vcl::Window* pShellWnd = SfxViewShell::Current()->GetWindow();
     224             : 
     225           0 :         if ( pShellWnd )
     226           0 :             pShellWnd->GrabFocus();
     227             :     }
     228             : }
     229             : 
     230           0 : void SvxLineBox::DataChanged( const DataChangedEvent& rDCEvt )
     231             : {
     232           0 :     if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
     233           0 :          (rDCEvt.GetFlags() & SETTINGS_STYLE) )
     234             :     {
     235           0 :         SetSizePixel(LogicToPixel(aLogicalSize, MAP_APPFONT));
     236           0 :         Size aDropSize( aLogicalSize.Width(), LOGICAL_EDIT_HEIGHT);
     237           0 :         SetDropDownSizePixel(LogicToPixel(aDropSize, MAP_APPFONT));
     238             :     }
     239             : 
     240           0 :     LineLB::DataChanged( rDCEvt );
     241           0 : }
     242             : 
     243         105 : void SvxLineBox::FillControl()
     244             : {
     245             :     // FillStyles();
     246         105 :     if ( !mpSh )
     247           0 :         mpSh = SfxObjectShell::Current();
     248             : 
     249         105 :     if( mpSh )
     250             :     {
     251         105 :         const SvxDashListItem* pItem = static_cast<const SvxDashListItem*>( mpSh->GetItem( SID_DASH_LIST ) );
     252         105 :         if ( pItem )
     253         105 :             Fill( pItem->GetDashList() );
     254             :     }
     255         105 : }
     256             : 
     257         126 : SvxMetricField::SvxMetricField(
     258             :     vcl::Window* pParent, const Reference< XFrame >& rFrame, WinBits nBits )
     259             :     : MetricField(pParent, nBits)
     260             :     , aCurTxt()
     261             :     , ePoolUnit(SFX_MAPUNIT_CM)
     262         126 :     , mxFrame(rFrame)
     263             : {
     264         126 :     Size aSize = Size(GetTextWidth( OUString("99,99mm") ),GetTextHeight());
     265         126 :     aSize.Width() += 20;
     266         126 :     aSize.Height() += 6;
     267         126 :     SetSizePixel( aSize );
     268         126 :     aLogicalSize = PixelToLogic(aSize, MAP_APPFONT);
     269         126 :     SetUnit( FUNIT_MM );
     270         126 :     SetDecimalDigits( 2 );
     271         126 :     SetMax( 5000 );
     272         126 :     SetMin( 0 );
     273         126 :     SetLast( 5000 );
     274         126 :     SetFirst( 0 );
     275             : 
     276         126 :     eDlgUnit = SfxModule::GetModuleFieldUnit( mxFrame );
     277         126 :     SetFieldUnit( *this, eDlgUnit, false );
     278         126 :     Show();
     279         126 : }
     280             : 
     281             : 
     282             : 
     283         252 : SvxMetricField::~SvxMetricField()
     284             : {
     285         252 : }
     286             : 
     287             : 
     288             : 
     289          66 : void SvxMetricField::Update( const XLineWidthItem* pItem )
     290             : {
     291          66 :     if ( pItem )
     292             :     {
     293          66 :         if ( pItem->GetValue() != GetCoreValue( *this, ePoolUnit ) )
     294           0 :             SetMetricValue( *this, pItem->GetValue(), ePoolUnit );
     295             :     }
     296             :     else
     297           0 :         SetText( "" );
     298          66 : }
     299             : 
     300             : 
     301             : 
     302           0 : void SvxMetricField::Modify()
     303             : {
     304           0 :     MetricField::Modify();
     305           0 :     long nTmp = GetCoreValue( *this, ePoolUnit );
     306           0 :     XLineWidthItem aLineWidthItem( nTmp );
     307             : 
     308           0 :     Any a;
     309           0 :     Sequence< PropertyValue > aArgs( 1 );
     310           0 :     aArgs[0].Name = "LineWidth";
     311           0 :     aLineWidthItem.QueryValue( a );
     312           0 :     aArgs[0].Value = a;
     313           0 :     SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ),
     314             :                                  OUString( ".uno:LineWidth" ),
     315           0 :                                  aArgs );
     316           0 : }
     317             : 
     318             : 
     319             : 
     320           0 : void SvxMetricField::ReleaseFocus_Impl()
     321             : {
     322           0 :     if( SfxViewShell::Current() )
     323             :     {
     324           0 :         vcl::Window* pShellWnd = SfxViewShell::Current()->GetWindow();
     325           0 :         if ( pShellWnd )
     326           0 :             pShellWnd->GrabFocus();
     327             :     }
     328           0 : }
     329             : 
     330           0 : void SvxMetricField::Down()
     331             : {
     332           0 :     MetricField::Down();
     333           0 : }
     334             : 
     335           0 : void SvxMetricField::Up()
     336             : {
     337           0 :     MetricField::Up();
     338           0 : }
     339             : 
     340          66 : void SvxMetricField::SetCoreUnit( SfxMapUnit eUnit )
     341             : {
     342          66 :     ePoolUnit = eUnit;
     343          66 : }
     344             : 
     345         114 : void SvxMetricField::RefreshDlgUnit()
     346             : {
     347         114 :     FieldUnit eTmpUnit = SfxModule::GetModuleFieldUnit( mxFrame );
     348         114 :     if ( eDlgUnit != eTmpUnit )
     349             :     {
     350           0 :         eDlgUnit = eTmpUnit;
     351           0 :         SetFieldUnit( *this, eDlgUnit, false );
     352             :     }
     353         114 : }
     354             : 
     355           0 : bool SvxMetricField::PreNotify( NotifyEvent& rNEvt )
     356             : {
     357           0 :     sal_uInt16 nType = rNEvt.GetType();
     358             : 
     359           0 :     if ( EVENT_MOUSEBUTTONDOWN == nType || EVENT_GETFOCUS == nType )
     360           0 :         aCurTxt = GetText();
     361             : 
     362           0 :     return MetricField::PreNotify( rNEvt );
     363             : }
     364             : 
     365             : 
     366             : 
     367           0 : bool SvxMetricField::Notify( NotifyEvent& rNEvt )
     368             : {
     369           0 :     bool nHandled = MetricField::Notify( rNEvt );
     370             : 
     371           0 :     if ( rNEvt.GetType() == EVENT_KEYINPUT )
     372             :     {
     373           0 :         const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
     374           0 :         const vcl::KeyCode& rKey = pKEvt->GetKeyCode();
     375           0 :         SfxViewShell* pSh = SfxViewShell::Current();
     376             : 
     377           0 :         if ( rKey.GetModifier() && rKey.GetGroup() != KEYGROUP_CURSOR && pSh )
     378           0 :             pSh->KeyInput( *pKEvt );
     379             :         else
     380             :         {
     381           0 :             bool bHandled = false;
     382             : 
     383           0 :             switch ( rKey.GetCode() )
     384             :             {
     385             :                 case KEY_RETURN:
     386           0 :                     Reformat();
     387           0 :                     bHandled = true;
     388           0 :                     break;
     389             : 
     390             :                 case KEY_ESCAPE:
     391           0 :                     SetText( aCurTxt );
     392           0 :                     bHandled = true;
     393           0 :                     break;
     394             :             }
     395             : 
     396           0 :             if ( bHandled )
     397             :             {
     398           0 :                 nHandled = true;
     399           0 :                 Modify();
     400           0 :                 ReleaseFocus_Impl();
     401             :             }
     402             :         }
     403             :     }
     404           0 :     return nHandled;
     405             : }
     406             : 
     407           0 : void SvxMetricField::DataChanged( const DataChangedEvent& rDCEvt )
     408             : {
     409           0 :     if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
     410           0 :          (rDCEvt.GetFlags() & SETTINGS_STYLE) )
     411             :     {
     412           0 :         SetSizePixel(LogicToPixel(aLogicalSize, MAP_APPFONT));
     413             :     }
     414             : 
     415           0 :     MetricField::DataChanged( rDCEvt );
     416           0 : }
     417             : 
     418         126 : SvxFillTypeBox::SvxFillTypeBox( vcl::Window* pParent, WinBits nBits ) :
     419             :     FillTypeLB( pParent, nBits | WB_TABSTOP ),
     420             :     nCurPos ( 0 ),
     421             :     bSelect ( false ),
     422         126 :     bRelease( true )
     423             : {
     424         126 :     SetSizePixel( LogicToPixel( Size(40, 40 ),MAP_APPFONT ));
     425         126 :     Fill();
     426         126 :     SelectEntryPos( drawing::FillStyle_SOLID );
     427         126 :     Show();
     428         126 : }
     429             : 
     430           0 : extern "C" SAL_DLLPUBLIC_EXPORT vcl::Window* SAL_CALL makeSvxFillTypeBox(vcl::Window *pParent, VclBuilder::stringmap &)
     431             : {
     432           0 :     return new SvxFillTypeBox(pParent);
     433             : }
     434             : 
     435             : 
     436             : 
     437         252 : SvxFillTypeBox::~SvxFillTypeBox()
     438             : {
     439         252 : }
     440             : 
     441             : 
     442             : 
     443           0 : bool SvxFillTypeBox::PreNotify( NotifyEvent& rNEvt )
     444             : {
     445           0 :     sal_uInt16 nType = rNEvt.GetType();
     446             : 
     447           0 :     if ( EVENT_MOUSEBUTTONDOWN == nType || EVENT_GETFOCUS == nType )
     448           0 :         nCurPos = GetSelectEntryPos();
     449           0 :     else if ( EVENT_LOSEFOCUS == nType
     450           0 :         && Application::GetFocusWindow()
     451           0 :         && !IsWindowOrChild( Application::GetFocusWindow(), true ) )
     452             :     {
     453           0 :         if ( !bSelect )
     454           0 :             SelectEntryPos( nCurPos );
     455             :         else
     456           0 :             bSelect = false;
     457             :     }
     458             : 
     459           0 :     return FillTypeLB::PreNotify( rNEvt );
     460             : }
     461             : 
     462             : 
     463             : 
     464           0 : bool SvxFillTypeBox::Notify( NotifyEvent& rNEvt )
     465             : {
     466           0 :     bool nHandled = FillTypeLB::Notify( rNEvt );
     467             : 
     468           0 :     if ( rNEvt.GetType() == EVENT_KEYINPUT )
     469             :     {
     470           0 :         const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
     471           0 :         switch ( pKEvt->GetKeyCode().GetCode() )
     472             :         {
     473             :             case KEY_RETURN:
     474           0 :                 nHandled = true;
     475           0 :                 ( (Link&)GetSelectHdl() ).Call( this );
     476           0 :             break;
     477             :             case KEY_TAB:
     478           0 :                 bRelease = false;
     479           0 :                 ( (Link&)GetSelectHdl() ).Call( this );
     480           0 :                 bRelease = true;
     481           0 :                 break;
     482             : 
     483             :             case KEY_ESCAPE:
     484           0 :                 SelectEntryPos( nCurPos );
     485           0 :                 ReleaseFocus_Impl();
     486           0 :                 nHandled = true;
     487           0 :                 break;
     488             :         }
     489             :     }
     490           0 :     return nHandled;
     491             : }
     492             : 
     493             : 
     494             : 
     495           0 : void SvxFillTypeBox::ReleaseFocus_Impl()
     496             : {
     497           0 :     if( SfxViewShell::Current() )
     498             :     {
     499           0 :         vcl::Window* pShellWnd = SfxViewShell::Current()->GetWindow();
     500             : 
     501           0 :         if ( pShellWnd )
     502           0 :             pShellWnd->GrabFocus();
     503             :     }
     504           0 : }
     505             : 
     506         126 : SvxFillAttrBox::SvxFillAttrBox( vcl::Window* pParent, WinBits nBits ) :
     507             :     FillAttrLB( pParent, nBits | WB_TABSTOP ),
     508             :     nCurPos( 0 ),
     509         126 :     bRelease( true )
     510             : 
     511             : {
     512         126 :     SetPosPixel( Point( 90, 0 ) );
     513         126 :     SetSizePixel( LogicToPixel( Size(50, 80 ), MAP_APPFONT ));
     514         126 :     Show();
     515         126 : }
     516             : 
     517           0 : extern "C" SAL_DLLPUBLIC_EXPORT vcl::Window* SAL_CALL makeSvxFillAttrBox(vcl::Window *pParent, VclBuilder::stringmap &)
     518             : {
     519           0 :     return new SvxFillAttrBox(pParent);
     520             : }
     521             : 
     522             : 
     523             : 
     524         252 : SvxFillAttrBox::~SvxFillAttrBox()
     525             : {
     526         252 : }
     527             : 
     528             : 
     529             : 
     530           0 : bool SvxFillAttrBox::PreNotify( NotifyEvent& rNEvt )
     531             : {
     532           0 :     sal_uInt16 nType = rNEvt.GetType();
     533             : 
     534           0 :     if ( EVENT_MOUSEBUTTONDOWN == nType || EVENT_GETFOCUS == nType )
     535           0 :         nCurPos = GetSelectEntryPos();
     536             : 
     537           0 :     return FillAttrLB::PreNotify( rNEvt );
     538             : }
     539             : 
     540             : 
     541             : 
     542           0 : bool SvxFillAttrBox::Notify( NotifyEvent& rNEvt )
     543             : {
     544           0 :     bool nHandled = FillAttrLB::Notify( rNEvt );
     545             : 
     546           0 :     if ( rNEvt.GetType() == EVENT_KEYINPUT )
     547             :     {
     548           0 :         const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
     549             : 
     550           0 :         switch ( pKEvt->GetKeyCode().GetCode() )
     551             :         {
     552             :             case KEY_RETURN:
     553           0 :                 ( (Link&)GetSelectHdl() ).Call( this );
     554           0 :                 nHandled = true;
     555           0 :             break;
     556             :             case KEY_TAB:
     557           0 :                 bRelease = false;
     558           0 :                 GetSelectHdl().Call( this );
     559           0 :                 bRelease = true;
     560           0 :             break;
     561             :             case KEY_ESCAPE:
     562           0 :                 SelectEntryPos( nCurPos );
     563           0 :                 ReleaseFocus_Impl();
     564           0 :                 nHandled = true;
     565           0 :                 break;
     566             :         }
     567             :     }
     568           0 :     return nHandled;
     569             : }
     570             : 
     571             : 
     572             : 
     573           0 : void SvxFillAttrBox::Select()
     574             : {
     575           0 :     FillAttrLB::Select();
     576           0 : }
     577             : 
     578             : 
     579             : 
     580           0 : void SvxFillAttrBox::ReleaseFocus_Impl()
     581             : {
     582           0 :     if( SfxViewShell::Current() )
     583             :     {
     584           0 :         vcl::Window* pShellWnd = SfxViewShell::Current()->GetWindow();
     585             : 
     586           0 :         if ( pShellWnd )
     587           0 :             pShellWnd->GrabFocus();
     588             :     }
     589         594 : }
     590             : 
     591             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10