1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_svtools.hxx"
26
27 #include <svtools/brwhead.hxx>
28 #include <svtools/brwbox.hxx>
29
30 #ifndef GCC
31 #endif
32
33 //===================================================================
34
BrowserHeader(BrowseBox * pParent,WinBits nWinBits)35 BrowserHeader::BrowserHeader( BrowseBox* pParent, WinBits nWinBits )
36 :HeaderBar( pParent, nWinBits )
37 ,_pBrowseBox( pParent )
38 {
39 long nHeight = pParent->IsZoom() ? pParent->CalcZoom(pParent->GetTitleHeight()) : pParent->GetTitleHeight();
40
41 SetPosSizePixel( Point( 0, 0),
42 Size( pParent->GetOutputSizePixel().Width(),
43 nHeight ) );
44 Show();
45 }
46
47 //-------------------------------------------------------------------
48
Command(const CommandEvent & rCEvt)49 void BrowserHeader::Command( const CommandEvent& rCEvt )
50 {
51 if ( !GetCurItemId() && COMMAND_CONTEXTMENU == rCEvt.GetCommand() )
52 {
53 Point aPos( rCEvt.GetMousePosPixel() );
54 if ( _pBrowseBox->IsFrozen(0) )
55 aPos.X() += _pBrowseBox->GetColumnWidth(0);
56 _pBrowseBox->GetDataWindow().Command( CommandEvent(
57 Point( aPos.X(), aPos.Y() - GetSizePixel().Height() ),
58 COMMAND_CONTEXTMENU, rCEvt.IsMouseEvent() ) );
59 }
60 }
61
62 //-------------------------------------------------------------------
63
Select()64 void BrowserHeader::Select()
65 {
66 HeaderBar::Select();
67 }
68
69 //-------------------------------------------------------------------
70
EndDrag()71 void BrowserHeader::EndDrag()
72 {
73 // call before other actions, it looks more nice in most cases
74 HeaderBar::EndDrag();
75 Update();
76
77 // not aborted?
78 sal_uInt16 nId = GetCurItemId();
79 if ( nId )
80 {
81 // Handle-Column?
82 if ( nId == USHRT_MAX-1 )
83 nId = 0;
84
85 if ( !IsItemMode() )
86 {
87 // column resize
88 _pBrowseBox->SetColumnWidth( nId, GetItemSize( nId ) );
89 _pBrowseBox->ColumnResized( nId );
90 SetItemSize( nId, _pBrowseBox->GetColumnWidth( nId ) );
91 }
92 else
93 {
94 // column drag
95 // Hat sich die Position eigentlich veraendert
96 // Handlecolumn beruecksichtigen
97 sal_uInt16 nOldPos = _pBrowseBox->GetColumnPos(nId),
98 nNewPos = GetItemPos( nId );
99
100 if (!_pBrowseBox->GetColumnId(0)) // Handle
101 nNewPos++;
102
103 if (nOldPos != nNewPos)
104 {
105 _pBrowseBox->SetColumnPos( nId, nNewPos );
106 _pBrowseBox->ColumnMoved( nId );
107 }
108 }
109 }
110 }
111 // -----------------------------------------------------------------------------
112
113
114
115
116