xref: /aoo4110/main/sw/source/ui/misc/bookmark.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sw.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #ifdef SW_DLLIMPLEMENTATION
28*b1cdbd2cSJim Jagielski #undef SW_DLLIMPLEMENTATION
29*b1cdbd2cSJim Jagielski #endif
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski #include <sfx2/request.hxx>
33*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
34*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski #include "view.hxx"
38*b1cdbd2cSJim Jagielski #include "basesh.hxx"
39*b1cdbd2cSJim Jagielski #include "wrtsh.hxx"		//
40*b1cdbd2cSJim Jagielski #include "cmdid.h"
41*b1cdbd2cSJim Jagielski #include "bookmark.hxx"		// SwInsertBookmarkDlg
42*b1cdbd2cSJim Jagielski #include "IMark.hxx"
43*b1cdbd2cSJim Jagielski #include "bookmark.hrc"
44*b1cdbd2cSJim Jagielski #include "misc.hrc"
45*b1cdbd2cSJim Jagielski 
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski const String BookmarkCombo::aForbiddenChars = String::CreateFromAscii("/\\@:*?\";,.#");
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwInsertBookmarkDlg,ModifyHdl,BookmarkCombo *,pBox)50*b1cdbd2cSJim Jagielski IMPL_LINK( SwInsertBookmarkDlg, ModifyHdl, BookmarkCombo *, pBox )
51*b1cdbd2cSJim Jagielski {
52*b1cdbd2cSJim Jagielski 	sal_Bool bSelEntries = pBox->GetSelectEntryCount() != 0;
53*b1cdbd2cSJim Jagielski 	// if a string has been pasted from the clipboard then
54*b1cdbd2cSJim Jagielski 	// there may be illegal characters in the box
55*b1cdbd2cSJim Jagielski 	if(!bSelEntries)
56*b1cdbd2cSJim Jagielski 	{
57*b1cdbd2cSJim Jagielski 		String sTmp = pBox->GetText();
58*b1cdbd2cSJim Jagielski 		sal_uInt16 nLen = sTmp.Len();
59*b1cdbd2cSJim Jagielski 		String sMsg;
60*b1cdbd2cSJim Jagielski 		for(sal_uInt16 i = 0; i < BookmarkCombo::aForbiddenChars.Len(); i++)
61*b1cdbd2cSJim Jagielski 		{
62*b1cdbd2cSJim Jagielski 			sal_uInt16 nTmpLen = sTmp.Len();
63*b1cdbd2cSJim Jagielski 			sTmp.EraseAllChars(BookmarkCombo::aForbiddenChars.GetChar(i));
64*b1cdbd2cSJim Jagielski 			if(sTmp.Len() != nTmpLen)
65*b1cdbd2cSJim Jagielski 				sMsg += BookmarkCombo::aForbiddenChars.GetChar(i);
66*b1cdbd2cSJim Jagielski 		}
67*b1cdbd2cSJim Jagielski 		if(sTmp.Len() != nLen)
68*b1cdbd2cSJim Jagielski 		{
69*b1cdbd2cSJim Jagielski 			pBox->SetText(sTmp);
70*b1cdbd2cSJim Jagielski 			String sWarning(sRemoveWarning);
71*b1cdbd2cSJim Jagielski 			sWarning += sMsg;
72*b1cdbd2cSJim Jagielski 			InfoBox(this, sWarning).Execute();
73*b1cdbd2cSJim Jagielski 		}
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski 
76*b1cdbd2cSJim Jagielski 	}
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski 	aOkBtn.Enable(!bSelEntries);  	// neue Textmarke
79*b1cdbd2cSJim Jagielski 	aDeleteBtn.Enable(bSelEntries);	// loeschbar?
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski 	return 0;
82*b1cdbd2cSJim Jagielski }
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
85*b1cdbd2cSJim Jagielski 	 Beschreibung: Callback zum Loeschen einer Textmarke
86*b1cdbd2cSJim Jagielski  -----------------------------------------------------------------------*/
87*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwInsertBookmarkDlg,DeleteHdl,Button *,EMPTYARG)88*b1cdbd2cSJim Jagielski IMPL_LINK( SwInsertBookmarkDlg, DeleteHdl, Button *, EMPTYARG )
89*b1cdbd2cSJim Jagielski {
90*b1cdbd2cSJim Jagielski 	// Textmarken aus der ComboBox entfernen
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski 	for (sal_uInt16 i = aBookmarkBox.GetSelectEntryCount(); i; i-- )
93*b1cdbd2cSJim Jagielski 		aBookmarkBox.RemoveEntry(aBookmarkBox.GetSelectEntryPos(i - 1));
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski 	aBookmarkBox.SetText(aEmptyStr);
96*b1cdbd2cSJim Jagielski 	aDeleteBtn.Enable(sal_False);	// keine weiteren Eintraege vorhanden
97*b1cdbd2cSJim Jagielski 	// aBookmarkBox.SetText(aEmptyStr);
98*b1cdbd2cSJim Jagielski 
99*b1cdbd2cSJim Jagielski 	aOkBtn.Enable();			// Im OK Handler wird geloescht
100*b1cdbd2cSJim Jagielski 	return 0;
101*b1cdbd2cSJim Jagielski }
102*b1cdbd2cSJim Jagielski 
103*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
104*b1cdbd2cSJim Jagielski 	 Beschreibung: Callback fuer OKButton. Fuegt eine neue Textmarke
105*b1cdbd2cSJim Jagielski 	 an die akt. Position ein. Geloeschte Textmarken werden auch am Modell
106*b1cdbd2cSJim Jagielski 	 entfernt.
107*b1cdbd2cSJim Jagielski  -----------------------------------------------------------------------*/
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski 
Apply()110*b1cdbd2cSJim Jagielski void SwInsertBookmarkDlg::Apply()
111*b1cdbd2cSJim Jagielski {
112*b1cdbd2cSJim Jagielski 	//at first remove deleted bookmarks to prevent multiple bookmarks with the same
113*b1cdbd2cSJim Jagielski 	//name
114*b1cdbd2cSJim Jagielski 	for (sal_uInt16 nCount = aBookmarkBox.GetRemovedCount(); nCount > 0; nCount--)
115*b1cdbd2cSJim Jagielski 	{
116*b1cdbd2cSJim Jagielski         String sRemoved = aBookmarkBox.GetRemovedEntry( nCount -1 ).GetName();
117*b1cdbd2cSJim Jagielski         IDocumentMarkAccess* const pMarkAccess = rSh.getIDocumentMarkAccess();
118*b1cdbd2cSJim Jagielski         pMarkAccess->deleteMark( pMarkAccess->findMark(sRemoved) );
119*b1cdbd2cSJim Jagielski         SfxRequest aReq( rSh.GetView().GetViewFrame(), FN_DELETE_BOOKMARK );
120*b1cdbd2cSJim Jagielski         aReq.AppendItem( SfxStringItem( FN_DELETE_BOOKMARK, sRemoved ) );
121*b1cdbd2cSJim Jagielski         aReq.Done();
122*b1cdbd2cSJim Jagielski 	}
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski 	// Textmarke einfuegen
125*b1cdbd2cSJim Jagielski 	sal_uInt16		nLen = aBookmarkBox.GetText().Len();
126*b1cdbd2cSJim Jagielski 	SwBoxEntry	aTmpEntry(aBookmarkBox.GetText(), 0 );
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski     if ( nLen && (aBookmarkBox.GetEntryPos(aTmpEntry) == COMBOBOX_ENTRY_NOTFOUND) )
129*b1cdbd2cSJim Jagielski 	{
130*b1cdbd2cSJim Jagielski 		String sEntry(aBookmarkBox.GetText());
131*b1cdbd2cSJim Jagielski 		sEntry.EraseAllChars(aBookmarkBox.GetMultiSelectionSeparator());
132*b1cdbd2cSJim Jagielski 
133*b1cdbd2cSJim Jagielski 		rSh.SetBookmark( KeyCode(), sEntry, aEmptyStr );
134*b1cdbd2cSJim Jagielski         rReq.AppendItem( SfxStringItem( FN_INSERT_BOOKMARK, sEntry ) );
135*b1cdbd2cSJim Jagielski         rReq.Done();
136*b1cdbd2cSJim Jagielski 	}
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski     if ( !rReq.IsDone() )
139*b1cdbd2cSJim Jagielski         rReq.Ignore();
140*b1cdbd2cSJim Jagielski 
141*b1cdbd2cSJim Jagielski }
142*b1cdbd2cSJim Jagielski 
143*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
144*b1cdbd2cSJim Jagielski 	 Beschreibung: CTOR
145*b1cdbd2cSJim Jagielski  -----------------------------------------------------------------------*/
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski 
SwInsertBookmarkDlg(Window * pParent,SwWrtShell & rS,SfxRequest & rRequest)148*b1cdbd2cSJim Jagielski SwInsertBookmarkDlg::SwInsertBookmarkDlg( Window *pParent, SwWrtShell &rS, SfxRequest& rRequest ) :
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski     SvxStandardDialog(pParent,SW_RES(DLG_INSERT_BOOKMARK)),
151*b1cdbd2cSJim Jagielski     aBookmarkFl(this,SW_RES(FL_BOOKMARK)),
152*b1cdbd2cSJim Jagielski     aBookmarkBox(this,SW_RES(CB_BOOKMARK)),
153*b1cdbd2cSJim Jagielski     aOkBtn(this,SW_RES(BT_OK)),
154*b1cdbd2cSJim Jagielski     aCancelBtn(this,SW_RES(BT_CANCEL)),
155*b1cdbd2cSJim Jagielski     aDeleteBtn(this,SW_RES(BT_DELETE)),
156*b1cdbd2cSJim Jagielski     rSh( rS ),
157*b1cdbd2cSJim Jagielski     rReq( rRequest )
158*b1cdbd2cSJim Jagielski {
159*b1cdbd2cSJim Jagielski     aBookmarkBox.SetModifyHdl(LINK(this, SwInsertBookmarkDlg, ModifyHdl));
160*b1cdbd2cSJim Jagielski     aBookmarkBox.EnableMultiSelection(sal_True);
161*b1cdbd2cSJim Jagielski     aBookmarkBox.EnableAutocomplete( sal_True, sal_True );
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski     aDeleteBtn.SetClickHdl(LINK(this, SwInsertBookmarkDlg, DeleteHdl));
164*b1cdbd2cSJim Jagielski 
165*b1cdbd2cSJim Jagielski     // Combobox mit vorhandenen Bookmarks fuellen
166*b1cdbd2cSJim Jagielski     IDocumentMarkAccess* const pMarkAccess = rSh.getIDocumentMarkAccess();
167*b1cdbd2cSJim Jagielski     sal_uInt16 nId = 0;
168*b1cdbd2cSJim Jagielski     for( IDocumentMarkAccess::const_iterator_t ppBookmark = pMarkAccess->getBookmarksBegin();
169*b1cdbd2cSJim Jagielski         ppBookmark != pMarkAccess->getBookmarksEnd();
170*b1cdbd2cSJim Jagielski         ppBookmark++)
171*b1cdbd2cSJim Jagielski     {
172*b1cdbd2cSJim Jagielski         if(IDocumentMarkAccess::BOOKMARK == IDocumentMarkAccess::GetType(**ppBookmark))
173*b1cdbd2cSJim Jagielski             aBookmarkBox.InsertEntry( SwBoxEntry( ppBookmark->get()->GetName(), nId++ ) );
174*b1cdbd2cSJim Jagielski     }
175*b1cdbd2cSJim Jagielski     FreeResource();
176*b1cdbd2cSJim Jagielski     sRemoveWarning = String(SW_RES(STR_REMOVE_WARNING));
177*b1cdbd2cSJim Jagielski }
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
180*b1cdbd2cSJim Jagielski 	 Beschreibung:
181*b1cdbd2cSJim Jagielski  -----------------------------------------------------------------------*/
182*b1cdbd2cSJim Jagielski 
~SwInsertBookmarkDlg()183*b1cdbd2cSJim Jagielski SwInsertBookmarkDlg::~SwInsertBookmarkDlg()
184*b1cdbd2cSJim Jagielski {
185*b1cdbd2cSJim Jagielski }
186*b1cdbd2cSJim Jagielski 
187*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
188*b1cdbd2cSJim Jagielski 	 Beschreibung:
189*b1cdbd2cSJim Jagielski  -----------------------------------------------------------------------*/
190*b1cdbd2cSJim Jagielski 
BookmarkCombo(Window * pWin,const ResId & rResId)191*b1cdbd2cSJim Jagielski BookmarkCombo::BookmarkCombo( Window* pWin, const ResId& rResId ) :
192*b1cdbd2cSJim Jagielski 	SwComboBox(pWin, rResId)
193*b1cdbd2cSJim Jagielski {
194*b1cdbd2cSJim Jagielski }
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
197*b1cdbd2cSJim Jagielski 	 Beschreibung:
198*b1cdbd2cSJim Jagielski  -----------------------------------------------------------------------*/
199*b1cdbd2cSJim Jagielski 
GetFirstSelEntryPos() const200*b1cdbd2cSJim Jagielski sal_uInt16 BookmarkCombo::GetFirstSelEntryPos() const
201*b1cdbd2cSJim Jagielski {
202*b1cdbd2cSJim Jagielski 	return GetSelEntryPos(0);
203*b1cdbd2cSJim Jagielski }
204*b1cdbd2cSJim Jagielski 
205*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
206*b1cdbd2cSJim Jagielski 	 Beschreibung:
207*b1cdbd2cSJim Jagielski  -----------------------------------------------------------------------*/
208*b1cdbd2cSJim Jagielski 
GetNextSelEntryPos(sal_uInt16 nPos) const209*b1cdbd2cSJim Jagielski sal_uInt16 BookmarkCombo::GetNextSelEntryPos(sal_uInt16 nPos) const
210*b1cdbd2cSJim Jagielski {
211*b1cdbd2cSJim Jagielski 	return GetSelEntryPos(nPos + 1);
212*b1cdbd2cSJim Jagielski }
213*b1cdbd2cSJim Jagielski 
214*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
215*b1cdbd2cSJim Jagielski 	 Beschreibung:
216*b1cdbd2cSJim Jagielski  -----------------------------------------------------------------------*/
217*b1cdbd2cSJim Jagielski 
GetSelEntryPos(sal_uInt16 nPos) const218*b1cdbd2cSJim Jagielski sal_uInt16 BookmarkCombo::GetSelEntryPos(sal_uInt16 nPos) const
219*b1cdbd2cSJim Jagielski {
220*b1cdbd2cSJim Jagielski     sal_Unicode cSep = GetMultiSelectionSeparator();
221*b1cdbd2cSJim Jagielski 
222*b1cdbd2cSJim Jagielski 	sal_uInt16 nCnt = GetText().GetTokenCount(cSep);
223*b1cdbd2cSJim Jagielski 
224*b1cdbd2cSJim Jagielski 	for (; nPos < nCnt; nPos++)
225*b1cdbd2cSJim Jagielski 	{
226*b1cdbd2cSJim Jagielski 		String sEntry(GetText().GetToken(nPos, cSep));
227*b1cdbd2cSJim Jagielski 		sEntry.EraseLeadingChars();
228*b1cdbd2cSJim Jagielski 		sEntry.EraseTrailingChars();
229*b1cdbd2cSJim Jagielski 		if (GetEntryPos(sEntry) != COMBOBOX_ENTRY_NOTFOUND)
230*b1cdbd2cSJim Jagielski 			return nPos;
231*b1cdbd2cSJim Jagielski 	}
232*b1cdbd2cSJim Jagielski 
233*b1cdbd2cSJim Jagielski 	return COMBOBOX_ENTRY_NOTFOUND;
234*b1cdbd2cSJim Jagielski }
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
237*b1cdbd2cSJim Jagielski 	 Beschreibung:
238*b1cdbd2cSJim Jagielski  -----------------------------------------------------------------------*/
239*b1cdbd2cSJim Jagielski 
GetSelectEntryCount() const240*b1cdbd2cSJim Jagielski sal_uInt16 BookmarkCombo::GetSelectEntryCount() const
241*b1cdbd2cSJim Jagielski {
242*b1cdbd2cSJim Jagielski 	sal_uInt16 nCnt = 0;
243*b1cdbd2cSJim Jagielski 
244*b1cdbd2cSJim Jagielski 	sal_uInt16 nPos = GetFirstSelEntryPos();
245*b1cdbd2cSJim Jagielski 	while (nPos != COMBOBOX_ENTRY_NOTFOUND)
246*b1cdbd2cSJim Jagielski 	{
247*b1cdbd2cSJim Jagielski 		nPos = GetNextSelEntryPos(nPos);
248*b1cdbd2cSJim Jagielski 		nCnt++;
249*b1cdbd2cSJim Jagielski 	}
250*b1cdbd2cSJim Jagielski 
251*b1cdbd2cSJim Jagielski 	return nCnt;
252*b1cdbd2cSJim Jagielski }
253*b1cdbd2cSJim Jagielski 
254*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
255*b1cdbd2cSJim Jagielski 	 Beschreibung: Position in der Listbox (der ComboBox)
256*b1cdbd2cSJim Jagielski  -----------------------------------------------------------------------*/
257*b1cdbd2cSJim Jagielski 
GetSelectEntryPos(sal_uInt16 nSelIndex) const258*b1cdbd2cSJim Jagielski sal_uInt16 BookmarkCombo::GetSelectEntryPos( sal_uInt16 nSelIndex ) const
259*b1cdbd2cSJim Jagielski {
260*b1cdbd2cSJim Jagielski 	sal_uInt16 nCnt = 0;
261*b1cdbd2cSJim Jagielski 	sal_uInt16 nPos = GetFirstSelEntryPos();
262*b1cdbd2cSJim Jagielski 
263*b1cdbd2cSJim Jagielski 	while (nPos != COMBOBOX_ENTRY_NOTFOUND)
264*b1cdbd2cSJim Jagielski 	{
265*b1cdbd2cSJim Jagielski 		if (nSelIndex == nCnt)
266*b1cdbd2cSJim Jagielski 		{
267*b1cdbd2cSJim Jagielski             sal_Unicode cSep = GetMultiSelectionSeparator();
268*b1cdbd2cSJim Jagielski 			String sEntry(GetText().GetToken(nPos, cSep));
269*b1cdbd2cSJim Jagielski 			sEntry.EraseLeadingChars();
270*b1cdbd2cSJim Jagielski 			sEntry.EraseTrailingChars();
271*b1cdbd2cSJim Jagielski 
272*b1cdbd2cSJim Jagielski 			return GetEntryPos(sEntry);
273*b1cdbd2cSJim Jagielski 		}
274*b1cdbd2cSJim Jagielski 		nPos = GetNextSelEntryPos(nPos);
275*b1cdbd2cSJim Jagielski 		nCnt++;
276*b1cdbd2cSJim Jagielski 	}
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski 	return COMBOBOX_ENTRY_NOTFOUND;
279*b1cdbd2cSJim Jagielski }
280*b1cdbd2cSJim Jagielski /* -----------------05.02.99 08:39-------------------
281*b1cdbd2cSJim Jagielski  *
282*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
PreNotify(NotifyEvent & rNEvt)283*b1cdbd2cSJim Jagielski long BookmarkCombo::PreNotify( NotifyEvent& rNEvt )
284*b1cdbd2cSJim Jagielski {
285*b1cdbd2cSJim Jagielski 	long nHandled = 0;
286*b1cdbd2cSJim Jagielski 	if( EVENT_KEYINPUT == rNEvt.GetType() &&
287*b1cdbd2cSJim Jagielski 		 rNEvt.GetKeyEvent()->GetCharCode() )
288*b1cdbd2cSJim Jagielski 	{
289*b1cdbd2cSJim Jagielski 		String sKey( rNEvt.GetKeyEvent()->GetCharCode() );
290*b1cdbd2cSJim Jagielski 		if(STRING_NOTFOUND != aForbiddenChars.Search(sKey))
291*b1cdbd2cSJim Jagielski 			nHandled = 1;
292*b1cdbd2cSJim Jagielski 	}
293*b1cdbd2cSJim Jagielski 	if(!nHandled)
294*b1cdbd2cSJim Jagielski 		nHandled = SwComboBox::PreNotify( rNEvt );
295*b1cdbd2cSJim Jagielski 	return nHandled;
296*b1cdbd2cSJim Jagielski }
297*b1cdbd2cSJim Jagielski 
298*b1cdbd2cSJim Jagielski 
299*b1cdbd2cSJim Jagielski 
300