update dev300-m57
[ooovba.git] / svtools / source / brwbox / brwhead.cxx
blob7948228c1ce4bcb2c8aec2f030f4d2b4b627b343
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: brwhead.cxx,v $
10 * $Revision: 1.8 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_svtools.hxx"
34 #include <svtools/brwhead.hxx>
35 #include <svtools/brwbox.hxx>
37 #ifndef GCC
38 #endif
40 //===================================================================
42 BrowserHeader::BrowserHeader( BrowseBox* pParent, WinBits nWinBits )
43 :HeaderBar( pParent, nWinBits )
44 ,_pBrowseBox( pParent )
46 long nHeight = pParent->IsZoom() ? pParent->CalcZoom(pParent->GetTitleHeight()) : pParent->GetTitleHeight();
48 SetPosSizePixel( Point( 0, 0),
49 Size( pParent->GetOutputSizePixel().Width(),
50 nHeight ) );
51 Show();
54 //-------------------------------------------------------------------
56 void BrowserHeader::Command( const CommandEvent& rCEvt )
58 if ( !GetCurItemId() && COMMAND_CONTEXTMENU == rCEvt.GetCommand() )
60 Point aPos( rCEvt.GetMousePosPixel() );
61 if ( _pBrowseBox->IsFrozen(0) )
62 aPos.X() += _pBrowseBox->GetColumnWidth(0);
63 _pBrowseBox->GetDataWindow().Command( CommandEvent(
64 Point( aPos.X(), aPos.Y() - GetSizePixel().Height() ),
65 COMMAND_CONTEXTMENU, rCEvt.IsMouseEvent() ) );
69 //-------------------------------------------------------------------
71 void BrowserHeader::Select()
73 HeaderBar::Select();
76 //-------------------------------------------------------------------
78 void BrowserHeader::EndDrag()
80 // call before other actions, it looks more nice in most cases
81 HeaderBar::EndDrag();
82 Update();
84 // not aborted?
85 USHORT nId = GetCurItemId();
86 if ( nId )
88 // Handle-Column?
89 if ( nId == USHRT_MAX-1 )
90 nId = 0;
92 if ( !IsItemMode() )
94 // column resize
95 _pBrowseBox->SetColumnWidth( nId, GetItemSize( nId ) );
96 _pBrowseBox->ColumnResized( nId );
97 SetItemSize( nId, _pBrowseBox->GetColumnWidth( nId ) );
99 else
101 // column drag
102 // Hat sich die Position eigentlich veraendert
103 // Handlecolumn beruecksichtigen
104 USHORT nOldPos = _pBrowseBox->GetColumnPos(nId),
105 nNewPos = GetItemPos( nId );
107 if (!_pBrowseBox->GetColumnId(0)) // Handle
108 nNewPos++;
110 if (nOldPos != nNewPos)
112 _pBrowseBox->SetColumnPos( nId, nNewPos );
113 _pBrowseBox->ColumnMoved( nId );
118 // -----------------------------------------------------------------------------