LCOV - code coverage report
Current view: top level - libreoffice/sc/source/ui/condformat - condformatdlg.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 257 0.4 %
Date: 2012-12-27 Functions: 2 34 5.9 %
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             :  * Version: MPL 1.1 / GPLv3+ / LGPLv3+
       4             :  *
       5             :  * The contents of this file are subject to the Mozilla Public License Version
       6             :  * 1.1 (the "License"); you may not use this file except in compliance with
       7             :  * the License or as specified alternatively below. You may obtain a copy of
       8             :  * the License at http://www.mozilla.org/MPL/
       9             :  *
      10             :  * Software distributed under the License is distributed on an "AS IS" basis,
      11             :  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
      12             :  * for the specific language governing rights and limitations under the
      13             :  * License.
      14             :  *
      15             :  * Major Contributor(s):
      16             :  * Copyright (C) 2012 Markus Mohrhard <markus.mohrhard@googlemail.com> (initial developer)
      17             :  *
      18             :  * All Rights Reserved.
      19             :  *
      20             :  * For minor contributions see the git repository.
      21             :  *
      22             :  * Alternatively, the contents of this file may be used under the terms of
      23             :  * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
      24             :  * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
      25             :  * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
      26             :  * instead of those above.
      27             :  */
      28             : 
      29             : #include "condformatdlg.hxx"
      30             : #include "condformatdlg.hrc"
      31             : 
      32             : #include <vcl/vclevent.hxx>
      33             : #include <svl/style.hxx>
      34             : #include <sfx2/dispatch.hxx>
      35             : #include <svl/stritem.hxx>
      36             : #include <svl/intitem.hxx>
      37             : #include <svx/xtable.hxx>
      38             : #include <svx/drawitem.hxx>
      39             : #include <vcl/msgbox.hxx>
      40             : 
      41             : #include "anyrefdg.hxx"
      42             : #include "document.hxx"
      43             : #include "conditio.hxx"
      44             : #include "stlpool.hxx"
      45             : #include "tabvwsh.hxx"
      46             : #include "conditio.hxx"
      47             : #include "colorscale.hxx"
      48             : #include "colorformat.hxx"
      49             : #include "reffact.hxx"
      50             : #include "docsh.hxx"
      51             : #include "docfunc.hxx"
      52             : #include "condformatdlgentry.hxx"
      53             : 
      54             : #include "globstr.hrc"
      55             : 
      56           0 : ScCondFormatList::ScCondFormatList(Window* pParent, const ResId& rResId, ScDocument* pDoc, const ScConditionalFormat* pFormat,
      57             :                                 const ScRangeList& rRanges, const ScAddress& rPos, condformat::dialog::ScCondFormatDialogType eType):
      58             :     Control(pParent, rResId),
      59             :     mbHasScrollBar(false),
      60           0 :     mpScrollBar(new ScrollBar(this, WB_VERT )),
      61             :     mpDoc(pDoc),
      62             :     maPos(rPos),
      63           0 :     maRanges(rRanges)
      64             : {
      65           0 :     mpScrollBar->SetScrollHdl( LINK( this, ScCondFormatList, ScrollHdl ) );
      66           0 :     mpScrollBar->EnableDrag();
      67             : 
      68           0 :     if(pFormat)
      69             :     {
      70           0 :         size_t nCount = pFormat->size();
      71           0 :         for (size_t nIndex = 0; nIndex < nCount; ++nIndex)
      72             :         {
      73           0 :             const ScFormatEntry* pEntry = pFormat->GetEntry(nIndex);
      74           0 :             switch(pEntry->GetType())
      75             :             {
      76             :                 case condformat::CONDITION:
      77             :                     {
      78           0 :                         const ScCondFormatEntry* pConditionEntry = static_cast<const ScCondFormatEntry*>( pEntry );
      79           0 :                         if(pConditionEntry->GetOperation() != SC_COND_DIRECT)
      80           0 :                             maEntries.push_back(new ScConditionFrmtEntry( this, mpDoc, maPos, pConditionEntry ) );
      81             :                         else
      82           0 :                             maEntries.push_back(new ScFormulaFrmtEntry( this, mpDoc, maPos, pConditionEntry ) );
      83             : 
      84             :                     }
      85           0 :                     break;
      86             :                 case condformat::COLORSCALE:
      87             :                     {
      88           0 :                         const ScColorScaleFormat* pColorScale = static_cast<const ScColorScaleFormat*>( pEntry );
      89           0 :                         if( pColorScale->size() == 2 )
      90           0 :                             maEntries.push_back(new ScColorScale2FrmtEntry( this, mpDoc, maPos, pColorScale ) );
      91             :                         else
      92           0 :                             maEntries.push_back(new ScColorScale3FrmtEntry( this, mpDoc, maPos, pColorScale ) );
      93             :                     }
      94           0 :                     break;
      95             :                 case condformat::DATABAR:
      96           0 :                     maEntries.push_back(new ScDataBarFrmtEntry( this, mpDoc, maPos, static_cast<const ScDataBarFormat*>( pEntry ) ) );
      97           0 :                     break;
      98             :                 case condformat::ICONSET:
      99           0 :                     maEntries.push_back(new ScIconSetFrmtEntry( this, mpDoc, maPos, static_cast<const ScIconSetFormat*>( pEntry ) ) );
     100           0 :                     break;
     101             :                 case condformat::DATE:
     102           0 :                     maEntries.push_back(new ScDateFrmtEntry( this, mpDoc, static_cast<const ScCondDateFormatEntry*>( pEntry ) ) );
     103           0 :                     break;
     104             :             }
     105             :         }
     106           0 :         if(nCount)
     107           0 :             EntrySelectHdl(&maEntries[0]);
     108             :     }
     109             :     else
     110             :     {
     111           0 :         switch(eType)
     112             :         {
     113             :             case condformat::dialog::CONDITION:
     114           0 :                 maEntries.push_back(new ScConditionFrmtEntry( this, mpDoc, maPos ));
     115           0 :                 break;
     116             :             case condformat::dialog::COLORSCALE:
     117           0 :                 maEntries.push_back(new ScColorScale3FrmtEntry( this, mpDoc, maPos ));
     118           0 :                 break;
     119             :             case condformat::dialog::DATABAR:
     120           0 :                 maEntries.push_back(new ScDataBarFrmtEntry( this, mpDoc, maPos ));
     121           0 :                 break;
     122             :             default:
     123           0 :                 break;
     124             :         }
     125             :     }
     126           0 :     RecalcAll();
     127           0 :     if (!maEntries.empty())
     128           0 :         maEntries.begin()->SetActive();
     129             : 
     130           0 :     RecalcAll();
     131           0 :     FreeResource();
     132           0 : }
     133             : 
     134           0 : ScConditionalFormat* ScCondFormatList::GetConditionalFormat() const
     135             : {
     136           0 :     if(maEntries.empty())
     137           0 :         return NULL;
     138             : 
     139           0 :     ScConditionalFormat* pFormat = new ScConditionalFormat(0, mpDoc);
     140           0 :     for(EntryContainer::const_iterator itr = maEntries.begin(); itr != maEntries.end(); ++itr)
     141             :     {
     142           0 :         ScFormatEntry* pEntry = itr->GetEntry();
     143           0 :         if(pEntry)
     144           0 :             pFormat->AddEntry(pEntry);
     145             :     }
     146             : 
     147           0 :     pFormat->AddRange(maRanges);
     148             : 
     149           0 :     return pFormat;
     150             : }
     151             : 
     152           0 : void ScCondFormatList::RecalcAll()
     153             : {
     154           0 :     sal_Int32 nTotalHeight = 0;
     155           0 :     sal_Int32 nIndex = 1;
     156           0 :     for(EntryContainer::iterator itr = maEntries.begin(); itr != maEntries.end(); ++itr)
     157             :     {
     158           0 :         nTotalHeight += itr->GetSizePixel().Height();
     159           0 :         itr->SetIndex( nIndex );
     160           0 :         ++nIndex;
     161             :     }
     162             : 
     163           0 :     Size aCtrlSize = GetOutputSize();
     164           0 :     long nSrcBarSize = GetSettings().GetStyleSettings().GetScrollBarSize();
     165           0 :     if(nTotalHeight > GetSizePixel().Height())
     166             :     {
     167           0 :         mbHasScrollBar = true;
     168           0 :         mpScrollBar->SetPosSizePixel(Point(aCtrlSize.Width() -nSrcBarSize, 0),
     169           0 :                 Size(nSrcBarSize, aCtrlSize.Height()) );
     170           0 :         mpScrollBar->SetRangeMax(nTotalHeight);
     171           0 :         mpScrollBar->SetVisibleSize(aCtrlSize.Height());
     172           0 :         mpScrollBar->Show();
     173             :     }
     174             :     else
     175             :     {
     176           0 :         mbHasScrollBar = false;
     177           0 :         mpScrollBar->Hide();
     178             :     }
     179             : 
     180           0 :     Point aPoint(0,-1*mpScrollBar->GetThumbPos());
     181           0 :     for(EntryContainer::iterator itr = maEntries.begin(); itr != maEntries.end(); ++itr)
     182             :     {
     183           0 :         itr->SetPosPixel(aPoint);
     184           0 :         Size aSize = itr->GetSizePixel();
     185           0 :         if(mbHasScrollBar)
     186           0 :             aSize.Width() = aCtrlSize.Width() - nSrcBarSize;
     187             :         else
     188           0 :             aSize.Width() = aCtrlSize.Width();
     189           0 :         itr->SetSizePixel(aSize);
     190             : 
     191           0 :         aPoint.Y() += itr->GetSizePixel().Height();
     192             :     }
     193           0 : }
     194             : 
     195           0 : void ScCondFormatList::DoScroll(long nDelta)
     196             : {
     197           0 :     Point aNewPoint = mpScrollBar->GetPosPixel();
     198           0 :     Rectangle aRect(Point(), GetOutputSize());
     199           0 :     aRect.Right() -= mpScrollBar->GetSizePixel().Width();
     200           0 :     Scroll( 0, -nDelta, aRect );
     201           0 :     mpScrollBar->SetPosPixel(aNewPoint);
     202           0 : }
     203             : 
     204           0 : IMPL_LINK(ScCondFormatList, ColFormatTypeHdl, ListBox*, pBox)
     205             : {
     206           0 :     EntryContainer::iterator itr = maEntries.begin();
     207           0 :     for(; itr != maEntries.end(); ++itr)
     208             :     {
     209           0 :         if(itr->IsSelected())
     210           0 :             break;
     211             :     }
     212           0 :     if(itr == maEntries.end())
     213           0 :         return 0;
     214             : 
     215           0 :     sal_Int32 nPos = pBox->GetSelectEntryPos();
     216           0 :     switch(nPos)
     217             :     {
     218             :         case 0:
     219           0 :             if(itr->GetType() == condformat::entry::COLORSCALE2)
     220           0 :                 return 0;
     221             : 
     222           0 :             maEntries.replace( itr, new ScColorScale2FrmtEntry( this, mpDoc, maPos ) );
     223           0 :             break;
     224             :         case 1:
     225           0 :             if(itr->GetType() == condformat::entry::COLORSCALE3)
     226           0 :                 return 0;
     227             : 
     228           0 :             maEntries.replace( itr, new ScColorScale3FrmtEntry( this, mpDoc, maPos ) );
     229           0 :             break;
     230             :         case 2:
     231           0 :             if(itr->GetType() == condformat::entry::DATABAR)
     232           0 :                 return 0;
     233             : 
     234           0 :             maEntries.replace( itr, new ScDataBarFrmtEntry( this, mpDoc, maPos ) );
     235           0 :             break;
     236             :         case 3:
     237           0 :             if(itr->GetType() == condformat::entry::ICONSET)
     238           0 :                 return 0;
     239             : 
     240           0 :             maEntries.replace( itr, new ScIconSetFrmtEntry( this, mpDoc, maPos ) );
     241           0 :             break;
     242             :         default:
     243           0 :             break;
     244             :     }
     245           0 :     static_cast<ScCondFormatDlg*>(GetParent())->InvalidateRefData();
     246           0 :     itr->SetActive();
     247           0 :     RecalcAll();
     248           0 :     return 0;
     249             : }
     250             : 
     251           0 : IMPL_LINK(ScCondFormatList, TypeListHdl, ListBox*, pBox)
     252             : {
     253           0 :     EntryContainer::iterator itr = maEntries.begin();
     254           0 :     for(; itr != maEntries.end(); ++itr)
     255             :     {
     256           0 :         if(itr->IsSelected())
     257           0 :             break;
     258             :     }
     259           0 :     if(itr == maEntries.end())
     260           0 :         return 0;;
     261             : 
     262           0 :     sal_Int32 nPos = pBox->GetSelectEntryPos();
     263           0 :     switch(nPos)
     264             :     {
     265             :         case 0:
     266           0 :             switch(itr->GetType())
     267             :             {
     268             :                 case condformat::entry::FORMULA:
     269             :                 case condformat::entry::CONDITION:
     270             :                 case condformat::entry::DATE:
     271           0 :                     break;
     272             :                 case condformat::entry::COLORSCALE2:
     273             :                 case condformat::entry::COLORSCALE3:
     274             :                 case condformat::entry::DATABAR:
     275             :                 case condformat::entry::ICONSET:
     276           0 :                     return 0;
     277             :             }
     278           0 :             maEntries.replace( itr, new ScColorScale3FrmtEntry(this, mpDoc, maPos));
     279           0 :             static_cast<ScCondFormatDlg*>(GetParent())->InvalidateRefData();
     280           0 :             itr->SetActive();
     281           0 :             break;
     282             :         case 1:
     283           0 :             if(itr->GetType() == condformat::entry::CONDITION)
     284           0 :                 return 0;
     285             : 
     286           0 :             maEntries.replace( itr, new ScConditionFrmtEntry(this, mpDoc, maPos));
     287           0 :             static_cast<ScCondFormatDlg*>(GetParent())->InvalidateRefData();
     288           0 :             itr->SetActive();
     289           0 :             break;
     290             :         case 2:
     291           0 :             if(itr->GetType() == condformat::entry::FORMULA)
     292           0 :                 return 0;
     293             : 
     294           0 :             maEntries.replace( itr, new ScFormulaFrmtEntry(this, mpDoc, maPos));
     295           0 :             static_cast<ScCondFormatDlg*>(GetParent())->InvalidateRefData();
     296           0 :             itr->SetActive();
     297           0 :             break;
     298             :         case 3:
     299           0 :             if(itr->GetType() == condformat::entry::DATE)
     300           0 :                 return 0;
     301             : 
     302           0 :             maEntries.replace( itr, new ScDateFrmtEntry( this, mpDoc ));
     303           0 :             static_cast<ScCondFormatDlg*>(GetParent())->InvalidateRefData();
     304           0 :             itr->SetActive();
     305           0 :             break;
     306             : 
     307             :     }
     308           0 :     RecalcAll();
     309           0 :     return 0;
     310             : }
     311             : 
     312           0 : IMPL_LINK_NOARG( ScCondFormatList, AddBtnHdl )
     313             : {
     314           0 :     ScCondFrmtEntry* pNewEntry = new ScConditionFrmtEntry(this, mpDoc, maPos);
     315           0 :     maEntries.push_back( pNewEntry );
     316           0 :     for(EntryContainer::iterator itr = maEntries.begin(); itr != maEntries.end(); ++itr)
     317             :     {
     318           0 :         itr->SetInactive();
     319             :     }
     320           0 :     static_cast<ScCondFormatDlg*>(GetParent())->InvalidateRefData();
     321           0 :     pNewEntry->SetActive();
     322           0 :     RecalcAll();
     323           0 :     return 0;
     324             : }
     325             : 
     326           0 : IMPL_LINK_NOARG( ScCondFormatList, RemoveBtnHdl )
     327             : {
     328           0 :     for(EntryContainer::iterator itr = maEntries.begin(); itr != maEntries.end(); ++itr)
     329             :     {
     330           0 :         if(itr->IsSelected())
     331             :         {
     332           0 :             maEntries.erase(itr);
     333           0 :             break;
     334             :         }
     335             :     }
     336           0 :     static_cast<ScCondFormatDlg*>(GetParent())->InvalidateRefData();
     337           0 :     RecalcAll();
     338           0 :     return 0;
     339             : }
     340             : 
     341           0 : IMPL_LINK( ScCondFormatList, EntrySelectHdl, ScCondFrmtEntry*, pEntry )
     342             : {
     343           0 :     if(pEntry->IsSelected())
     344           0 :         return 0;
     345             : 
     346           0 :     for(EntryContainer::iterator itr = maEntries.begin(); itr != maEntries.end(); ++itr)
     347             :     {
     348           0 :         itr->SetInactive();
     349             :     }
     350           0 :     static_cast<ScCondFormatDlg*>(GetParent())->InvalidateRefData();
     351           0 :     pEntry->SetActive();
     352           0 :     RecalcAll();
     353           0 :     return 0;
     354             : }
     355             : 
     356           0 : IMPL_LINK_NOARG( ScCondFormatList, ScrollHdl )
     357             : {
     358           0 :     DoScroll(mpScrollBar->GetDelta());
     359           0 :     return 0;
     360             : }
     361             : 
     362             : //---------------------------------------------------
     363             : //ScCondFormatDlg
     364             : //---------------------------------------------------
     365             : 
     366           0 : ScCondFormatDlg::ScCondFormatDlg(Window* pParent, ScDocument* pDoc, const ScConditionalFormat* pFormat, const ScRangeList& rRange,
     367             :                                     const ScAddress& rPos, condformat::dialog::ScCondFormatDialogType eType):
     368             :     ScAnyRefModalDlg(pParent, ScResId(RID_SCDLG_CONDFORMAT) ),
     369             :     maBtnAdd( this, ScResId( BTN_ADD ) ),
     370             :     maBtnRemove( this, ScResId( BTN_REMOVE ) ),
     371             :     maBtnOk( this, ScResId( BTN_OK ) ),
     372             :     maBtnCancel( this, ScResId( BTN_CANCEL ) ),
     373             :     maFtRange( this, ScResId( FT_RANGE ) ),
     374             :     maEdRange( this, this, ScResId( ED_RANGE ) ),
     375             :     maRbRange( this, ScResId( RB_RANGE ), &maEdRange, this ),
     376             :     maCondFormList( this, ScResId( CTRL_LIST ), pDoc, pFormat, rRange, rPos, eType ),
     377             :     maPos(rPos),
     378             :     mpDoc(pDoc),
     379           0 :     mpLastEdit(NULL)
     380             : {
     381           0 :     rtl::OUStringBuffer aTitle( GetText() );
     382           0 :     aTitle.append(rtl::OUString(" "));
     383           0 :     rtl::OUString aRangeString;
     384           0 :     rRange.Format(aRangeString, SCA_VALID, pDoc, pDoc->GetAddressConvention());
     385           0 :     aTitle.append(aRangeString);
     386           0 :     SetText(aTitle.makeStringAndClear());
     387           0 :     maBtnAdd.SetClickHdl( LINK( &maCondFormList, ScCondFormatList, AddBtnHdl ) );
     388           0 :     maBtnRemove.SetClickHdl( LINK( &maCondFormList, ScCondFormatList, RemoveBtnHdl ) );
     389           0 :     maEdRange.SetModifyHdl( LINK( this, ScCondFormatDlg, EdRangeModifyHdl ) );
     390           0 :     maEdRange.SetGetFocusHdl( LINK( this, ScCondFormatDlg, RangeGetFocusHdl ) );
     391           0 :     maEdRange.SetLoseFocusHdl( LINK( this, ScCondFormatDlg, RangeLoseFocusHdl ) );
     392           0 :     FreeResource();
     393             : 
     394           0 :     maEdRange.SetText(aRangeString);
     395             : 
     396           0 :     SC_MOD()->PushNewAnyRefDlg(this);
     397           0 : }
     398             : 
     399           0 : ScCondFormatDlg::~ScCondFormatDlg()
     400             : {
     401           0 :     SC_MOD()->PopAnyRefDlg();
     402           0 : }
     403             : 
     404           0 : void ScCondFormatDlg::SetActive()
     405             : {
     406           0 :     if(mpLastEdit)
     407           0 :         mpLastEdit->GrabFocus();
     408             :     else
     409           0 :         maEdRange.GrabFocus();
     410             : 
     411           0 :     RefInputDone();
     412           0 : }
     413             : 
     414           0 : void ScCondFormatDlg::RefInputDone( sal_Bool bForced )
     415             : {
     416           0 :     ScAnyRefModalDlg::RefInputDone(bForced);
     417           0 : }
     418             : 
     419           0 : sal_Bool ScCondFormatDlg::IsTableLocked() const
     420             : {
     421           0 :     if(mpLastEdit && mpLastEdit != &maEdRange)
     422           0 :         return sal_False;
     423             : 
     424           0 :     return sal_True;
     425             : }
     426             : 
     427           0 : sal_Bool ScCondFormatDlg::IsRefInputMode() const
     428             : {
     429           0 :     return maEdRange.IsEnabled();
     430             : }
     431             : 
     432             : #define ABS_SREF          SCA_VALID \
     433             :     | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE
     434             : #define ABS_DREF          ABS_SREF \
     435             :     | SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE
     436             : #define ABS_DREF3D      ABS_DREF | SCA_TAB_3D
     437             : 
     438           0 : void ScCondFormatDlg::SetReference(const ScRange& rRef, ScDocument*)
     439             : {
     440           0 :     formula::RefEdit* pEdit = mpLastEdit;
     441           0 :     if(!mpLastEdit)
     442           0 :         pEdit = &maEdRange;
     443             : 
     444           0 :     if( pEdit->IsEnabled() )
     445             :     {
     446           0 :         if(rRef.aStart != rRef.aEnd)
     447           0 :             RefInputStart(pEdit);
     448             : 
     449           0 :         rtl::OUString aRefStr;
     450           0 :         sal_uInt16 n = 0;
     451           0 :         if(mpLastEdit && mpLastEdit != &maEdRange)
     452           0 :             n = ABS_DREF3D;
     453             :         else
     454           0 :             n = ABS_DREF;
     455             : 
     456           0 :         rRef.Format( aRefStr, n, mpDoc, ScAddress::Details(mpDoc->GetAddressConvention(), 0, 0) );
     457           0 :         pEdit->SetRefString( aRefStr );
     458             :     }
     459           0 : }
     460             : 
     461           0 : ScConditionalFormat* ScCondFormatDlg::GetConditionalFormat() const
     462             : {
     463           0 :     rtl::OUString aRangeStr = maEdRange.GetText();
     464           0 :     ScRangeList aRange;
     465           0 :     sal_uInt16 nFlags = aRange.Parse(aRangeStr, mpDoc, SCA_VALID, mpDoc->GetAddressConvention(), maPos.Tab());
     466           0 :     ScConditionalFormat* pFormat = maCondFormList.GetConditionalFormat();
     467             : 
     468           0 :     if(nFlags & SCA_VALID && !aRange.empty() && pFormat)
     469           0 :         pFormat->AddRange(aRange);
     470             : 
     471           0 :     return pFormat;
     472             : }
     473             : 
     474           0 : void ScCondFormatDlg::InvalidateRefData()
     475             : {
     476           0 :     mpLastEdit = NULL;
     477           0 : }
     478             : 
     479           0 : IMPL_LINK( ScCondFormatDlg, EdRangeModifyHdl, Edit*, pEdit )
     480             : {
     481           0 :     rtl::OUString aRangeStr = pEdit->GetText();
     482           0 :     ScRangeList aRange;
     483           0 :     sal_uInt16 nFlags = aRange.Parse(aRangeStr, mpDoc, SCA_VALID, mpDoc->GetAddressConvention());
     484           0 :     if(nFlags & SCA_VALID)
     485           0 :         pEdit->SetControlBackground(GetSettings().GetStyleSettings().GetWindowColor());
     486             :     else
     487           0 :         pEdit->SetControlBackground(COL_LIGHTRED);
     488           0 :     return 0;
     489             : }
     490             : 
     491           0 : IMPL_LINK( ScCondFormatDlg, RangeGetFocusHdl, formula::RefEdit*, pEdit )
     492             : {
     493           0 :     mpLastEdit = pEdit;
     494           0 :     return 0;
     495             : }
     496             : 
     497           0 : IMPL_LINK_NOARG( ScCondFormatDlg, RangeLoseFocusHdl )
     498             : {
     499             :     //mpLastEdit = NULL;
     500           0 :     return 0;
     501          15 : }
     502             : 
     503             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10