window.cxx (437a6594) window.cxx (dd7ece3a)
1/**************************************************************
1/**************************************************************
2 *
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
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 *
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
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.
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 *
19 *
20 *************************************************************/
21
22
23
24// MARKER(update_precomp.py): autogen include statement, do not remove
25#include "precompiled_vcl.hxx"
26
27#include "tools/time.hxx"

--- 119 unchanged lines hidden (view full) ---

147
148// -----------------------------------------------------------------------
149
150WindowImpl::WindowImpl( WindowType nType )
151{
152 maZoom = Fraction( 1, 1 );
153 maWinRegion = Region(true);
154 maWinClipRegion = Region(true);
20 *************************************************************/
21
22
23
24// MARKER(update_precomp.py): autogen include statement, do not remove
25#include "precompiled_vcl.hxx"
26
27#include "tools/time.hxx"

--- 119 unchanged lines hidden (view full) ---

147
148// -----------------------------------------------------------------------
149
150WindowImpl::WindowImpl( WindowType nType )
151{
152 maZoom = Fraction( 1, 1 );
153 maWinRegion = Region(true);
154 maWinClipRegion = Region(true);
155 mpWinData = NULL; // Extra Window Data, that we dont need for all windows
155 mpWinData = NULL; // Extra Window Data, that we don't need for all windows
156 mpOverlapData = NULL; // Overlap Data
157 mpFrameData = NULL; // Frame Data
158 mpFrame = NULL; // Pointer to frame window
159 mpSysObj = NULL;
160 mpFrameWindow = NULL; // window to top level parent (same as frame window)
161 mpOverlapWindow = NULL; // first overlap parent
162 mpBorderWindow = NULL; // Border-Window
163 mpClientWindow = NULL; // Client-Window of a FrameWindow
156 mpOverlapData = NULL; // Overlap Data
157 mpFrameData = NULL; // Frame Data
158 mpFrame = NULL; // Pointer to frame window
159 mpSysObj = NULL;
160 mpFrameWindow = NULL; // window to top level parent (same as frame window)
161 mpOverlapWindow = NULL; // first overlap parent
162 mpBorderWindow = NULL; // Border-Window
163 mpClientWindow = NULL; // Client-Window of a FrameWindow
164 mpParent = NULL; // parent (inkl. BorderWindow)
165 mpRealParent = NULL; // real parent (exkl. BorderWindow)
164 mpParent = NULL; // parent (incl. BorderWindow)
165 mpRealParent = NULL; // real parent (excl. BorderWindow)
166 mpFirstChild = NULL; // first child window
167 mpLastChild = NULL; // last child window
168 mpFirstOverlap = NULL; // first overlap window (only set in overlap windows)
169 mpLastOverlap = NULL; // last overlap window (only set in overlap windows)
170 mpPrev = NULL; // prev window
171 mpNext = NULL; // next window
172 mpNextOverlap = NULL; // next overlap window of frame
173 mpLastFocusWindow = NULL; // window for focus restore
174 mpDlgCtrlDownWindow = NULL; // window for dialog control
175 mpFirstDel = NULL; // Dtor notification list
176 mpUserData = NULL; // user data
177 mpExtImpl = NULL; // extended implementation data
178 mpCursor = NULL; // cursor
166 mpFirstChild = NULL; // first child window
167 mpLastChild = NULL; // last child window
168 mpFirstOverlap = NULL; // first overlap window (only set in overlap windows)
169 mpLastOverlap = NULL; // last overlap window (only set in overlap windows)
170 mpPrev = NULL; // prev window
171 mpNext = NULL; // next window
172 mpNextOverlap = NULL; // next overlap window of frame
173 mpLastFocusWindow = NULL; // window for focus restore
174 mpDlgCtrlDownWindow = NULL; // window for dialog control
175 mpFirstDel = NULL; // Dtor notification list
176 mpUserData = NULL; // user data
177 mpExtImpl = NULL; // extended implementation data
178 mpCursor = NULL; // cursor
179 mpControlFont = NULL; // font propertie
179 mpControlFont = NULL; // font property
180 mpVCLXWindow = NULL;
181 mpAccessibleInfos = NULL;
182 maControlForeground = Color( COL_TRANSPARENT ); // foreground color not set
183 maControlBackground = Color( COL_TRANSPARENT ); // background color not set
184 mnLeftBorder = 0; // left border
185 mnTopBorder = 0; // top border
186 mnRightBorder = 0; // right border
187 mnBottomBorder = 0; // bottom border

--- 31 unchanged lines hidden (view full) ---

219 mbOverlapVisible = sal_False; // sal_True: Hide called for visible window from ImplHideAllOverlapWindow()
220 mbDisabled = sal_False; // sal_True: Enable( sal_False ) called
221 mbInputDisabled = sal_False; // sal_True: EnableInput( sal_False ) called
222 mbDropDisabled = sal_False; // sal_True: Drop is enabled
223 mbNoUpdate = sal_False; // sal_True: SetUpdateMode( sal_False ) called
224 mbNoParentUpdate = sal_False; // sal_True: SetParentUpdateMode( sal_False ) called
225 mbActive = sal_False; // sal_True: Window Active
226 mbParentActive = sal_False; // sal_True: OverlapActive from Parent
180 mpVCLXWindow = NULL;
181 mpAccessibleInfos = NULL;
182 maControlForeground = Color( COL_TRANSPARENT ); // foreground color not set
183 maControlBackground = Color( COL_TRANSPARENT ); // background color not set
184 mnLeftBorder = 0; // left border
185 mnTopBorder = 0; // top border
186 mnRightBorder = 0; // right border
187 mnBottomBorder = 0; // bottom border

--- 31 unchanged lines hidden (view full) ---

219 mbOverlapVisible = sal_False; // sal_True: Hide called for visible window from ImplHideAllOverlapWindow()
220 mbDisabled = sal_False; // sal_True: Enable( sal_False ) called
221 mbInputDisabled = sal_False; // sal_True: EnableInput( sal_False ) called
222 mbDropDisabled = sal_False; // sal_True: Drop is enabled
223 mbNoUpdate = sal_False; // sal_True: SetUpdateMode( sal_False ) called
224 mbNoParentUpdate = sal_False; // sal_True: SetParentUpdateMode( sal_False ) called
225 mbActive = sal_False; // sal_True: Window Active
226 mbParentActive = sal_False; // sal_True: OverlapActive from Parent
227 mbReallyVisible = sal_False; // sal_True: this and all parents to an overlaped window are visible
228 mbReallyShown = sal_False; // sal_True: this and all parents to an overlaped window are shown
227 mbReallyVisible = sal_False; // sal_True: this and all parents to an overlapped window are visible
228 mbReallyShown = sal_False; // sal_True: this and all parents to an overlapped window are shown
229 mbInInitShow = sal_False; // sal_True: we are in InitShow
230 mbChildNotify = sal_False; // sal_True: ChildNotify
231 mbChildPtrOverwrite = sal_False; // sal_True: PointerStyle overwrites Child-Pointer
232 mbNoPtrVisible = sal_False; // sal_True: ShowPointer( sal_False ) called
233 mbMouseMove = sal_False; // sal_True: BaseMouseMove called
234 mbPaintFrame = sal_False; // sal_True: Paint is visible, but not painted
235 mbInPaint = sal_False; // sal_True: Inside PaintHdl
236 mbMouseButtonDown = sal_False; // sal_True: BaseMouseButtonDown called

--- 156 unchanged lines hidden (view full) ---

393 if( ImplGetSVData()->maGDIData.mbNativeFontConfig )
394 return true;
395
396 // create a text string using the localized text of important buttons
397 String aTestText;
398 static const StandardButtonType aTestButtons[] =
399 {
400 BUTTON_OK, BUTTON_CANCEL, BUTTON_CLOSE, BUTTON_ABORT,
229 mbInInitShow = sal_False; // sal_True: we are in InitShow
230 mbChildNotify = sal_False; // sal_True: ChildNotify
231 mbChildPtrOverwrite = sal_False; // sal_True: PointerStyle overwrites Child-Pointer
232 mbNoPtrVisible = sal_False; // sal_True: ShowPointer( sal_False ) called
233 mbMouseMove = sal_False; // sal_True: BaseMouseMove called
234 mbPaintFrame = sal_False; // sal_True: Paint is visible, but not painted
235 mbInPaint = sal_False; // sal_True: Inside PaintHdl
236 mbMouseButtonDown = sal_False; // sal_True: BaseMouseButtonDown called

--- 156 unchanged lines hidden (view full) ---

393 if( ImplGetSVData()->maGDIData.mbNativeFontConfig )
394 return true;
395
396 // create a text string using the localized text of important buttons
397 String aTestText;
398 static const StandardButtonType aTestButtons[] =
399 {
400 BUTTON_OK, BUTTON_CANCEL, BUTTON_CLOSE, BUTTON_ABORT,
401 BUTTON_YES, BUTTON_NO, BUTTON_MORE, BUTTON_IGNORE,
401 BUTTON_YES, BUTTON_NO, BUTTON_MORE, BUTTON_IGNORE,
402 BUTTON_RETRY, BUTTON_HELP
403 };
404
405 const int nTestButtonCount = sizeof(aTestButtons)/sizeof(*aTestButtons);
406 for( int n = 0; n < nTestButtonCount; ++n )
407 {
408 String aButtonStr = Button::GetStandardText( aTestButtons[n] );
409 // #i115432# ignore mnemonic+accelerator part of each string

--- 109 unchanged lines hidden (view full) ---

519 rSettings.SetStyleSettings( aStyleSettings );
520 }
521
522 StyleSettings aStyleSettings = rSettings.GetStyleSettings();
523 // #97047: Force all fonts except Menu and Help to a fixed height
524 // to avoid UI scaling due to large fonts
525 // - but allow bigger fonts on bigger screens (i16682, i21238)
526 // dialogs were designed to fit 800x600 with an 8pt font, so scale accordingly
402 BUTTON_RETRY, BUTTON_HELP
403 };
404
405 const int nTestButtonCount = sizeof(aTestButtons)/sizeof(*aTestButtons);
406 for( int n = 0; n < nTestButtonCount; ++n )
407 {
408 String aButtonStr = Button::GetStandardText( aTestButtons[n] );
409 // #i115432# ignore mnemonic+accelerator part of each string

--- 109 unchanged lines hidden (view full) ---

519 rSettings.SetStyleSettings( aStyleSettings );
520 }
521
522 StyleSettings aStyleSettings = rSettings.GetStyleSettings();
523 // #97047: Force all fonts except Menu and Help to a fixed height
524 // to avoid UI scaling due to large fonts
525 // - but allow bigger fonts on bigger screens (i16682, i21238)
526 // dialogs were designed to fit 800x600 with an 8pt font, so scale accordingly
527 int maxFontheight = 9; // #107886#: 9 is default for some asian systems, so always allow if requested
527 int maxFontheight = 9; // #107886#: 9 is default for some Asian systems, so always allow if requested
528 if( GetDesktopRectPixel().getHeight() > 600 )
529 maxFontheight = (int) ((( 8.0 * (double) GetDesktopRectPixel().getHeight()) / 600.0) + 1.5);
530
531 Font aFont = aStyleSettings.GetMenuFont();
532 int defFontheight = aFont.GetHeight();
533 if( defFontheight > maxFontheight )
534 defFontheight = maxFontheight;
535
528 if( GetDesktopRectPixel().getHeight() > 600 )
529 maxFontheight = (int) ((( 8.0 * (double) GetDesktopRectPixel().getHeight()) / 600.0) + 1.5);
530
531 Font aFont = aStyleSettings.GetMenuFont();
532 int defFontheight = aFont.GetHeight();
533 if( defFontheight > maxFontheight )
534 defFontheight = maxFontheight;
535
536 // if the UI is korean, chinese or another locale
537 // where the system font size is kown to be often too small to
536 // if the UI is Korean, Chinese or another locale
537 // where the system font size is known to be often too small to
538 // generate readable fonts enforce a minimum font size of 9 points
539 bool bBrokenLangFontHeight = false;
540 static const LanguageType eBrokenSystemFontSizeLanguages[] =
541 { LANGUAGE_KOREAN, LANGUAGE_KOREAN_JOHAB,
542 LANGUAGE_CHINESE_HONGKONG, LANGUAGE_CHINESE_MACAU, LANGUAGE_CHINESE_SIMPLIFIED, LANGUAGE_CHINESE_SINGAPORE, LANGUAGE_CHINESE_TRADITIONAL
543 };
544 static std::set< LanguageType > aBrokenSystemFontSizeLanguagesSet(
545 eBrokenSystemFontSizeLanguages,
538 // generate readable fonts enforce a minimum font size of 9 points
539 bool bBrokenLangFontHeight = false;
540 static const LanguageType eBrokenSystemFontSizeLanguages[] =
541 { LANGUAGE_KOREAN, LANGUAGE_KOREAN_JOHAB,
542 LANGUAGE_CHINESE_HONGKONG, LANGUAGE_CHINESE_MACAU, LANGUAGE_CHINESE_SIMPLIFIED, LANGUAGE_CHINESE_SINGAPORE, LANGUAGE_CHINESE_TRADITIONAL
543 };
544 static std::set< LanguageType > aBrokenSystemFontSizeLanguagesSet(
545 eBrokenSystemFontSizeLanguages,
546 eBrokenSystemFontSizeLanguages +
546 eBrokenSystemFontSizeLanguages +
547 (sizeof(eBrokenSystemFontSizeLanguages)/sizeof(eBrokenSystemFontSizeLanguages[0]))
548 );
549 LanguageType aLang = Application::GetSettings().GetUILanguage();
550 if( aBrokenSystemFontSizeLanguagesSet.find( aLang ) != aBrokenSystemFontSizeLanguagesSet.end() )
551 {
552 defFontheight = Max(9, defFontheight);
553 bBrokenLangFontHeight = true;
554 }

--- 88 unchanged lines hidden (view full) ---

643 || rSettings.GetStyleSettings().GetWindowColor().IsDark() )
644 {
645 aStyleSettings = rSettings.GetStyleSettings();
646 aStyleSettings.SetHighContrastMode( sal_True );
647 rSettings.SetStyleSettings( aStyleSettings );
648 }
649 }
650 }
547 (sizeof(eBrokenSystemFontSizeLanguages)/sizeof(eBrokenSystemFontSizeLanguages[0]))
548 );
549 LanguageType aLang = Application::GetSettings().GetUILanguage();
550 if( aBrokenSystemFontSizeLanguagesSet.find( aLang ) != aBrokenSystemFontSizeLanguagesSet.end() )
551 {
552 defFontheight = Max(9, defFontheight);
553 bBrokenLangFontHeight = true;
554 }

--- 88 unchanged lines hidden (view full) ---

643 || rSettings.GetStyleSettings().GetWindowColor().IsDark() )
644 {
645 aStyleSettings = rSettings.GetStyleSettings();
646 aStyleSettings.SetHighContrastMode( sal_True );
647 rSettings.SetStyleSettings( aStyleSettings );
648 }
649 }
650 }
651
651
652 static const char* pEnvHC = getenv( "SAL_FORCE_HC" );
653 if( pEnvHC && *pEnvHC )
654 {
655 aStyleSettings.SetHighContrastMode( sal_True );
656 rSettings.SetStyleSettings( aStyleSettings );
657 }
658
659#ifdef DBG_UTIL

--- 74 unchanged lines hidden (view full) ---

734// -----------------------------------------------------------------------
735
736void Window::ImplInit( Window* pParent, WinBits nStyle, SystemParentData* pSystemParentData )
737{
738 DBG_ASSERT( mpWindowImpl->mbFrame || pParent, "Window::Window(): pParent == NULL" );
739
740 ImplSVData* pSVData = ImplGetSVData();
741 Window* pRealParent = pParent;
652 static const char* pEnvHC = getenv( "SAL_FORCE_HC" );
653 if( pEnvHC && *pEnvHC )
654 {
655 aStyleSettings.SetHighContrastMode( sal_True );
656 rSettings.SetStyleSettings( aStyleSettings );
657 }
658
659#ifdef DBG_UTIL

--- 74 unchanged lines hidden (view full) ---

734// -----------------------------------------------------------------------
735
736void Window::ImplInit( Window* pParent, WinBits nStyle, SystemParentData* pSystemParentData )
737{
738 DBG_ASSERT( mpWindowImpl->mbFrame || pParent, "Window::Window(): pParent == NULL" );
739
740 ImplSVData* pSVData = ImplGetSVData();
741 Window* pRealParent = pParent;
742
742
743 // 3D-Look vererben
744 if ( !mpWindowImpl->mbOverlapWin && pParent && (pParent->GetStyle() & WB_3DLOOK) )
745 nStyle |= WB_3DLOOK;
746
747 // create border window if necessary
748 if ( !mpWindowImpl->mbFrame && !mpWindowImpl->mbBorderWin && !mpWindowImpl->mpBorderWindow
749 && (nStyle & (WB_BORDER | WB_SYSTEMCHILDWINDOW) ) )
750 {

--- 394 unchanged lines hidden (view full) ---

1145 if( GetBackground().IsGradient() )
1146 Invalidate();
1147
1148 Resize();
1149
1150 // #88419# Most classes don't call the base class in Resize() and Move(),
1151 // => Call ImpleResize/Move instead of Resize/Move directly...
1152 ImplCallEventListeners( VCLEVENT_WINDOW_RESIZE );
743 // 3D-Look vererben
744 if ( !mpWindowImpl->mbOverlapWin && pParent && (pParent->GetStyle() & WB_3DLOOK) )
745 nStyle |= WB_3DLOOK;
746
747 // create border window if necessary
748 if ( !mpWindowImpl->mbFrame && !mpWindowImpl->mbBorderWin && !mpWindowImpl->mpBorderWindow
749 && (nStyle & (WB_BORDER | WB_SYSTEMCHILDWINDOW) ) )
750 {

--- 394 unchanged lines hidden (view full) ---

1145 if( GetBackground().IsGradient() )
1146 Invalidate();
1147
1148 Resize();
1149
1150 // #88419# Most classes don't call the base class in Resize() and Move(),
1151 // => Call ImpleResize/Move instead of Resize/Move directly...
1152 ImplCallEventListeners( VCLEVENT_WINDOW_RESIZE );
1153
1153
1154 ImplExtResize();
1155}
1156
1157// -----------------------------------------------------------------------
1158
1159void Window::ImplCallMove()
1160{
1161 mpWindowImpl->mbCallMove = sal_False;

--- 17 unchanged lines hidden (view full) ---

1179 mpWindowImpl->maPos = Point( g.nX, g.nY );
1180 if( pParentFrame )
1181 {
1182 g = pParentFrame->GetGeometry();
1183 mpWindowImpl->maPos -= Point( g.nX, g.nY );
1184 }
1185 // the client window and and all its subclients have the same position as the borderframe
1186 // this is important for floating toolbars where the borderwindow is a floating window
1154 ImplExtResize();
1155}
1156
1157// -----------------------------------------------------------------------
1158
1159void Window::ImplCallMove()
1160{
1161 mpWindowImpl->mbCallMove = sal_False;

--- 17 unchanged lines hidden (view full) ---

1179 mpWindowImpl->maPos = Point( g.nX, g.nY );
1180 if( pParentFrame )
1181 {
1182 g = pParentFrame->GetGeometry();
1183 mpWindowImpl->maPos -= Point( g.nX, g.nY );
1184 }
1185 // the client window and and all its subclients have the same position as the borderframe
1186 // this is important for floating toolbars where the borderwindow is a floating window
1187 // which has another borderwindow (ie the system floating window)
1187 // which has another borderwindow (i.e. the system floating window)
1188 Window *pClientWin = mpWindowImpl->mpClientWindow;
1189 while( pClientWin )
1190 {
1191 pClientWin->mpWindowImpl->maPos = mpWindowImpl->maPos;
1192 pClientWin = pClientWin->mpWindowImpl->mpClientWindow;
1193 }
1194 }
1195
1196 Move();
1197
1198 ImplCallEventListeners( VCLEVENT_WINDOW_MOVE );
1199}
1200
1201// -----------------------------------------------------------------------
1202
1203static rtl::OString ImplAutoHelpID( ResMgr* pResMgr )
1204{
1205 rtl::OString aRet;
1188 Window *pClientWin = mpWindowImpl->mpClientWindow;
1189 while( pClientWin )
1190 {
1191 pClientWin->mpWindowImpl->maPos = mpWindowImpl->maPos;
1192 pClientWin = pClientWin->mpWindowImpl->mpClientWindow;
1193 }
1194 }
1195
1196 Move();
1197
1198 ImplCallEventListeners( VCLEVENT_WINDOW_MOVE );
1199}
1200
1201// -----------------------------------------------------------------------
1202
1203static rtl::OString ImplAutoHelpID( ResMgr* pResMgr )
1204{
1205 rtl::OString aRet;
1206
1206
1207 if( pResMgr && Application::IsAutoHelpIdEnabled() )
1208 aRet = pResMgr->GetAutoHelpId();
1209
1210 return aRet;
1211}
1212
1213// -----------------------------------------------------------------------
1214

--- 18 unchanged lines hidden (view full) ---

1233 // if the resource only contains flags, it will be closed before we try to read a help id
1234 // so we always create an auto help id that might be overwritten later
1235 // HelpId
1236 rtl::OString aHelpId = ImplAutoHelpID( rResId.GetResMgr() );
1237
1238 // ResourceStyle
1239 sal_uLong nRSStyle = ReadLongRes();
1240 // WinBits
1207 if( pResMgr && Application::IsAutoHelpIdEnabled() )
1208 aRet = pResMgr->GetAutoHelpId();
1209
1210 return aRet;
1211}
1212
1213// -----------------------------------------------------------------------
1214

--- 18 unchanged lines hidden (view full) ---

1233 // if the resource only contains flags, it will be closed before we try to read a help id
1234 // so we always create an auto help id that might be overwritten later
1235 // HelpId
1236 rtl::OString aHelpId = ImplAutoHelpID( rResId.GetResMgr() );
1237
1238 // ResourceStyle
1239 sal_uLong nRSStyle = ReadLongRes();
1240 // WinBits
1241 ReadLongRes();
1242
1241 ReadLongRes();
1242
1243 if( nObjMask & WINDOW_HELPID )
1244 aHelpId = ReadByteStringRes();
1245
1246 SetHelpId( aHelpId );
1247
1248 sal_Bool bPos = sal_False;
1249 sal_Bool bSize = sal_False;
1250 Point aPos;

--- 267 unchanged lines hidden (view full) ---

1518 if ( IsEnabled() && IsInputEnabled() && ! IsInModalMode() )
1519 ePointerStyle = GetPointer().GetStyle();
1520 else
1521 ePointerStyle = POINTER_ARROW;
1522
1523 const Window* pWindow = this;
1524 do
1525 {
1243 if( nObjMask & WINDOW_HELPID )
1244 aHelpId = ReadByteStringRes();
1245
1246 SetHelpId( aHelpId );
1247
1248 sal_Bool bPos = sal_False;
1249 sal_Bool bSize = sal_False;
1250 Point aPos;

--- 267 unchanged lines hidden (view full) ---

1518 if ( IsEnabled() && IsInputEnabled() && ! IsInModalMode() )
1519 ePointerStyle = GetPointer().GetStyle();
1520 else
1521 ePointerStyle = POINTER_ARROW;
1522
1523 const Window* pWindow = this;
1524 do
1525 {
1526 // Wenn Pointer nicht sichtbar, dann wird suche abgebrochen, da
1526 // Wenn Pointer nicht sichtbar, dann wird Suche abgebrochen, da
1527 // dieser Status nicht ueberschrieben werden darf
1528 if ( pWindow->mpWindowImpl->mbNoPtrVisible )
1529 return POINTER_NULL;
1530
1531 if ( !bWait )
1532 {
1533 if ( pWindow->mpWindowImpl->mnWaitCount )
1534 {

--- 280 unchanged lines hidden (view full) ---

1815 // ClipRegion setzen/updaten
1816 RectangleVector aRectangles;
1817 aRegion.GetRegionRectangles(aRectangles);
1818 mpWindowImpl->mpSysObj->BeginSetClipRegion(aRectangles.size());
1819
1820 for(RectangleVector::const_iterator aRectIter(aRectangles.begin()); aRectIter != aRectangles.end(); aRectIter++)
1821 {
1822 mpWindowImpl->mpSysObj->UnionClipRegion(
1527 // dieser Status nicht ueberschrieben werden darf
1528 if ( pWindow->mpWindowImpl->mbNoPtrVisible )
1529 return POINTER_NULL;
1530
1531 if ( !bWait )
1532 {
1533 if ( pWindow->mpWindowImpl->mnWaitCount )
1534 {

--- 280 unchanged lines hidden (view full) ---

1815 // ClipRegion setzen/updaten
1816 RectangleVector aRectangles;
1817 aRegion.GetRegionRectangles(aRectangles);
1818 mpWindowImpl->mpSysObj->BeginSetClipRegion(aRectangles.size());
1819
1820 for(RectangleVector::const_iterator aRectIter(aRectangles.begin()); aRectIter != aRectangles.end(); aRectIter++)
1821 {
1822 mpWindowImpl->mpSysObj->UnionClipRegion(
1823 aRectIter->Left(),
1824 aRectIter->Top(),
1823 aRectIter->Left(),
1824 aRectIter->Top(),
1825 aRectIter->GetWidth(), // orig nWidth was ((R - L) + 1), same as GetWidth does
1826 aRectIter->GetHeight()); // same for height
1827 }
1828
1829 mpWindowImpl->mpSysObj->EndSetClipRegion();
1830
1831 //long nX;
1832 //long nY;

--- 535 unchanged lines hidden (view full) ---

2368void Window::ImplCallPaint( const Region* pRegion, sal_uInt16 nPaintFlags )
2369{
2370 Exception aException;
2371 bool bExceptionCaught(false);
2372
2373 // call PrePaint. PrePaint may add to the invalidate region as well as
2374 // other parameters used below.
2375 PrePaint();
1825 aRectIter->GetWidth(), // orig nWidth was ((R - L) + 1), same as GetWidth does
1826 aRectIter->GetHeight()); // same for height
1827 }
1828
1829 mpWindowImpl->mpSysObj->EndSetClipRegion();
1830
1831 //long nX;
1832 //long nY;

--- 535 unchanged lines hidden (view full) ---

2368void Window::ImplCallPaint( const Region* pRegion, sal_uInt16 nPaintFlags )
2369{
2370 Exception aException;
2371 bool bExceptionCaught(false);
2372
2373 // call PrePaint. PrePaint may add to the invalidate region as well as
2374 // other parameters used below.
2375 PrePaint();
2376
2376
2377 mpWindowImpl->mbPaintFrame = sal_False;
2378
2379 if ( nPaintFlags & IMPL_PAINT_PAINTALLCHILDS )
2380 mpWindowImpl->mnPaintFlags |= IMPL_PAINT_PAINT | IMPL_PAINT_PAINTALLCHILDS | (nPaintFlags & IMPL_PAINT_PAINTALL);
2381 if ( nPaintFlags & IMPL_PAINT_PAINTCHILDS )
2382 mpWindowImpl->mnPaintFlags |= IMPL_PAINT_PAINTCHILDS;
2383 if ( nPaintFlags & IMPL_PAINT_ERASE )
2384 mpWindowImpl->mnPaintFlags |= IMPL_PAINT_ERASE;

--- 69 unchanged lines hidden (view full) ---

2454 SetClipRegion();
2455 Erase();
2456 SetClipRegion( aOldRegion );
2457 }
2458 else
2459 Erase();
2460 }
2461
2377 mpWindowImpl->mbPaintFrame = sal_False;
2378
2379 if ( nPaintFlags & IMPL_PAINT_PAINTALLCHILDS )
2380 mpWindowImpl->mnPaintFlags |= IMPL_PAINT_PAINT | IMPL_PAINT_PAINTALLCHILDS | (nPaintFlags & IMPL_PAINT_PAINTALL);
2381 if ( nPaintFlags & IMPL_PAINT_PAINTCHILDS )
2382 mpWindowImpl->mnPaintFlags |= IMPL_PAINT_PAINTCHILDS;
2383 if ( nPaintFlags & IMPL_PAINT_ERASE )
2384 mpWindowImpl->mnPaintFlags |= IMPL_PAINT_ERASE;

--- 69 unchanged lines hidden (view full) ---

2454 SetClipRegion();
2455 Erase();
2456 SetClipRegion( aOldRegion );
2457 }
2458 else
2459 Erase();
2460 }
2461
2462 // #98943# trigger drawing of toolbox selection after all childern are painted
2462 // #98943# trigger drawing of toolbox selection after all children are painted
2463 if( mpWindowImpl->mbDrawSelectionBackground )
2464 aSelectionRect = aPaintRect;
2465
2466 // Paint can throw exceptions; to not have a situation where
2463 if( mpWindowImpl->mbDrawSelectionBackground )
2464 aSelectionRect = aPaintRect;
2465
2466 // Paint can throw exceptions; to not have a situation where
2467 // mpWindowImpl->mbInPaint keeps to be on true (and other
2467 // mpWindowImpl->mbInPaint keeps to be on true (and other
2468 // settings, too) better catch here to avoid to go completely out of
2469 // this method without executing the after-paint stuff
2470 try
2471 {
2472 Paint( aPaintRect );
2473 }
2474 catch(Exception& rException)
2475 {

--- 851 unchanged lines hidden (view full) ---

3327 else if( !bnXRecycled && mpWindowImpl->mpParent && !mpWindowImpl->mpParent->mpWindowImpl->mbFrame && mpWindowImpl->mpParent->ImplIsAntiparallel() )
3328 {
3329 // mirrored window in LTR UI
3330 {
3331 // --- RTL --- (re-mirror at parent window)
3332 nX = mpWindowImpl->mpParent->mnOutWidth - mnOutWidth - nX;
3333 }
3334 }
2468 // settings, too) better catch here to avoid to go completely out of
2469 // this method without executing the after-paint stuff
2470 try
2471 {
2472 Paint( aPaintRect );
2473 }
2474 catch(Exception& rException)
2475 {

--- 851 unchanged lines hidden (view full) ---

3327 else if( !bnXRecycled && mpWindowImpl->mpParent && !mpWindowImpl->mpParent->mpWindowImpl->mbFrame && mpWindowImpl->mpParent->ImplIsAntiparallel() )
3328 {
3329 // mirrored window in LTR UI
3330 {
3331 // --- RTL --- (re-mirror at parent window)
3332 nX = mpWindowImpl->mpParent->mnOutWidth - mnOutWidth - nX;
3333 }
3334 }
3335
3335
3336 // check maPos as well, as it could have been changed for client windows (ImplCallMove())
3337 if ( mpWindowImpl->mnAbsScreenX != aPtDev.X() || nX != mpWindowImpl->mnX || nOrgX != mpWindowImpl->maPos.X() )
3338 {
3339 if ( bCopyBits && !pOverlapRegion )
3340 {
3341 pOverlapRegion = new Region();
3342 ImplCalcOverlapRegion( Rectangle( Point( mnOutOffX, mnOutOffY ),
3343 Size( mnOutWidth, mnOutHeight ) ),

--- 688 unchanged lines hidden (view full) ---

4032 }
4033 }
4034
4035 // If the Window is disabled, then we don't change the focus
4036 if ( !IsEnabled() || !IsInputEnabled() || IsInModalMode() )
4037 return;
4038
4039 // we only need to set the focus if it is not already set
3336 // check maPos as well, as it could have been changed for client windows (ImplCallMove())
3337 if ( mpWindowImpl->mnAbsScreenX != aPtDev.X() || nX != mpWindowImpl->mnX || nOrgX != mpWindowImpl->maPos.X() )
3338 {
3339 if ( bCopyBits && !pOverlapRegion )
3340 {
3341 pOverlapRegion = new Region();
3342 ImplCalcOverlapRegion( Rectangle( Point( mnOutOffX, mnOutOffY ),
3343 Size( mnOutWidth, mnOutHeight ) ),

--- 688 unchanged lines hidden (view full) ---

4032 }
4033 }
4034
4035 // If the Window is disabled, then we don't change the focus
4036 if ( !IsEnabled() || !IsInputEnabled() || IsInModalMode() )
4037 return;
4038
4039 // we only need to set the focus if it is not already set
4040 // note: if some other frame is waiting for an asynchrounous focus event
4040 // note: if some other frame is waiting for an asynchronous focus event
4041 // we also have to post an asynchronous focus event for this frame
4042 // which is done using ToTop
4043 ImplSVData* pSVData = ImplGetSVData();
4044
4045 sal_Bool bAsyncFocusWaiting = sal_False;
4046 Window *pFrame = pSVData->maWinData.mpFirstFrame;
4047 while( pFrame )
4048 {

--- 33 unchanged lines hidden (view full) ---

4082
4083 // Dieses Fenster als letztes FocusWindow merken
4084 Window* pOverlapWindow = ImplGetFirstOverlapWindow();
4085 pOverlapWindow->mpWindowImpl->mpLastFocusWindow = this;
4086 mpWindowImpl->mpFrameData->mpFocusWin = this;
4087
4088 if( !bHasFocus )
4089 {
4041 // we also have to post an asynchronous focus event for this frame
4042 // which is done using ToTop
4043 ImplSVData* pSVData = ImplGetSVData();
4044
4045 sal_Bool bAsyncFocusWaiting = sal_False;
4046 Window *pFrame = pSVData->maWinData.mpFirstFrame;
4047 while( pFrame )
4048 {

--- 33 unchanged lines hidden (view full) ---

4082
4083 // Dieses Fenster als letztes FocusWindow merken
4084 Window* pOverlapWindow = ImplGetFirstOverlapWindow();
4085 pOverlapWindow->mpWindowImpl->mpLastFocusWindow = this;
4086 mpWindowImpl->mpFrameData->mpFocusWin = this;
4087
4088 if( !bHasFocus )
4089 {
4090 // menue windows never get the system focus
4090 // menu windows never get the system focus
4091 // the application will keep the focus
4092 if( bMustNotGrabFocus )
4093 return;
4094 else
4095 {
4096 // Hier setzen wir schon den Focus um, da ToTop() den Focus
4097 // nicht auf ein anderes Fenster setzen darf
4098 //DBG_WARNING( "Window::GrabFocus() - Frame doesn't have the focus" );

--- 4 unchanged lines hidden (view full) ---

4103
4104 Window* pOldFocusWindow = pSVData->maWinData.mpFocusWin;
4105 ImplDelData aOldFocusDel( pOldFocusWindow );
4106
4107 pSVData->maWinData.mpFocusWin = this;
4108
4109 if ( pOldFocusWindow )
4110 {
4091 // the application will keep the focus
4092 if( bMustNotGrabFocus )
4093 return;
4094 else
4095 {
4096 // Hier setzen wir schon den Focus um, da ToTop() den Focus
4097 // nicht auf ein anderes Fenster setzen darf
4098 //DBG_WARNING( "Window::GrabFocus() - Frame doesn't have the focus" );

--- 4 unchanged lines hidden (view full) ---

4103
4104 Window* pOldFocusWindow = pSVData->maWinData.mpFocusWin;
4105 ImplDelData aOldFocusDel( pOldFocusWindow );
4106
4107 pSVData->maWinData.mpFocusWin = this;
4108
4109 if ( pOldFocusWindow )
4110 {
4111 // Cursor hiden
4111 // hide Cursor
4112 if ( pOldFocusWindow->mpWindowImpl->mpCursor )
4113 pOldFocusWindow->mpWindowImpl->mpCursor->ImplHide( true );
4114 }
4115
4116 // !!!!! Wegen altem SV-Office Activate/Deavtivate Handling
4117 // !!!!! erstmal so wie frueher
4118 if ( pOldFocusWindow )
4119 {

--- 143 unchanged lines hidden (view full) ---

4263 if ( pSVData->maWinData.mpFocusWin == this )
4264 {
4265 if ( mpWindowImpl->mpCursor )
4266 mpWindowImpl->mpCursor->ImplShow();
4267 mpWindowImpl->mbInFocusHdl = sal_True;
4268 mpWindowImpl->mnGetFocusFlags = nFlags;
4269 // if we're changing focus due to closing a popup floating window
4270 // notify the new focus window so it can restore the inner focus
4112 if ( pOldFocusWindow->mpWindowImpl->mpCursor )
4113 pOldFocusWindow->mpWindowImpl->mpCursor->ImplHide( true );
4114 }
4115
4116 // !!!!! Wegen altem SV-Office Activate/Deavtivate Handling
4117 // !!!!! erstmal so wie frueher
4118 if ( pOldFocusWindow )
4119 {

--- 143 unchanged lines hidden (view full) ---

4263 if ( pSVData->maWinData.mpFocusWin == this )
4264 {
4265 if ( mpWindowImpl->mpCursor )
4266 mpWindowImpl->mpCursor->ImplShow();
4267 mpWindowImpl->mbInFocusHdl = sal_True;
4268 mpWindowImpl->mnGetFocusFlags = nFlags;
4269 // if we're changing focus due to closing a popup floating window
4270 // notify the new focus window so it can restore the inner focus
4271 // eg, toolboxes can select their recent active item
4271 // e.g. toolboxes can select their recent active item
4272 if( pOldFocusWindow &&
4273 ! aOldFocusDel.IsDelete() &&
4274 ( pOldFocusWindow->GetDialogControlFlags() & WINDOW_DLGCTRL_FLOATWIN_POPUPMODEEND_CANCEL ) )
4275 mpWindowImpl->mnGetFocusFlags |= GETFOCUS_FLOATWIN_POPUPMODEEND_CANCEL;
4276 NotifyEvent aNEvt( EVENT_GETFOCUS, this );
4277 if ( !ImplCallPreNotify( aNEvt ) && !aDogTag.IsDelete() )
4278 GetFocus();
4279 if( !aDogTag.IsDelete() )

--- 33 unchanged lines hidden (view full) ---

4313 ImplFontEntry* pFontEntry = NULL;
4314 aNewContext.mpFont = NULL;
4315 if ( rFontName.Len() )
4316 {
4317 Size aSize = pFocusWin->ImplLogicToDevicePixel( rFont.GetSize() );
4318 if ( !aSize.Height() )
4319 {
4320 // Nur dann Defaultgroesse setzen, wenn Fonthoehe auch in logischen
4272 if( pOldFocusWindow &&
4273 ! aOldFocusDel.IsDelete() &&
4274 ( pOldFocusWindow->GetDialogControlFlags() & WINDOW_DLGCTRL_FLOATWIN_POPUPMODEEND_CANCEL ) )
4275 mpWindowImpl->mnGetFocusFlags |= GETFOCUS_FLOATWIN_POPUPMODEEND_CANCEL;
4276 NotifyEvent aNEvt( EVENT_GETFOCUS, this );
4277 if ( !ImplCallPreNotify( aNEvt ) && !aDogTag.IsDelete() )
4278 GetFocus();
4279 if( !aDogTag.IsDelete() )

--- 33 unchanged lines hidden (view full) ---

4313 ImplFontEntry* pFontEntry = NULL;
4314 aNewContext.mpFont = NULL;
4315 if ( rFontName.Len() )
4316 {
4317 Size aSize = pFocusWin->ImplLogicToDevicePixel( rFont.GetSize() );
4318 if ( !aSize.Height() )
4319 {
4320 // Nur dann Defaultgroesse setzen, wenn Fonthoehe auch in logischen
4321 // Koordinaaten 0 ist
4321 // Koordinaten 0 ist
4322 if ( rFont.GetSize().Height() )
4323 aSize.Height() = 1;
4324 else
4325 aSize.Height() = (12*pFocusWin->mnDPIY)/72;
4326 }
4327 // TODO: No display device uses ImplDirectFontSubstitution thingy, right? => remove it
4328 ImplDirectFontSubstitution* pFontSubst = NULL;
4329 //if( pFocusWin->mpOutDevData )

--- 67 unchanged lines hidden (view full) ---

4397 }
4398}
4399#endif
4400// -----------------------------------------------------------------------
4401
4402Window::~Window()
4403{
4404 ImplFreeExtWindowImpl();
4322 if ( rFont.GetSize().Height() )
4323 aSize.Height() = 1;
4324 else
4325 aSize.Height() = (12*pFocusWin->mnDPIY)/72;
4326 }
4327 // TODO: No display device uses ImplDirectFontSubstitution thingy, right? => remove it
4328 ImplDirectFontSubstitution* pFontSubst = NULL;
4329 //if( pFocusWin->mpOutDevData )

--- 67 unchanged lines hidden (view full) ---

4397 }
4398}
4399#endif
4400// -----------------------------------------------------------------------
4401
4402Window::~Window()
4403{
4404 ImplFreeExtWindowImpl();
4405
4405
4406 vcl::LazyDeletor<Window>::Undelete( this );
4407
4408 DBG_DTOR( Window, ImplDbgCheckWindow );
4409 DBG_ASSERT( !mpWindowImpl->mbInDtor, "~Window - already in DTOR!" );
4410
4411
4412 // remove Key and Mouse events issued by Application::PostKey/MouseEvent
4413 Application::RemoveMouseAndKeyEvents( this );
4414
4415 // Dispose of the canvas implementation (which, currently, has an
4406 vcl::LazyDeletor<Window>::Undelete( this );
4407
4408 DBG_DTOR( Window, ImplDbgCheckWindow );
4409 DBG_ASSERT( !mpWindowImpl->mbInDtor, "~Window - already in DTOR!" );
4410
4411
4412 // remove Key and Mouse events issued by Application::PostKey/MouseEvent
4413 Application::RemoveMouseAndKeyEvents( this );
4414
4415 // Dispose of the canvas implementation (which, currently, has an
4416 // own wrapper window as a child to this one.
4416 // own wrapper window as a child to this one)
4417 uno::Reference< rendering::XCanvas > xCanvas( mpWindowImpl->mxCanvas );
4418 if( xCanvas.is() )
4419 {
4420 uno::Reference < lang::XComponent > xCanvasComponent( xCanvas,
4421 uno::UNO_QUERY );
4422 if( xCanvasComponent.is() )
4423 xCanvasComponent->dispose();
4424 }

--- 692 unchanged lines hidden (view full) ---

5117 CommandEvent aCommandEvent = ImplTranslateCommandEvent( *pCEvt, rNEvt.GetWindow(), this );
5118 ImplCallEventListeners( VCLEVENT_WINDOW_COMMAND, &aCommandEvent );
5119 }
5120 }
5121 }
5122
5123 // #82968# notify event listeners for mouse and key events separately and
5124 // not in PreNotify ( as for focus listeners )
4417 uno::Reference< rendering::XCanvas > xCanvas( mpWindowImpl->mxCanvas );
4418 if( xCanvas.is() )
4419 {
4420 uno::Reference < lang::XComponent > xCanvasComponent( xCanvas,
4421 uno::UNO_QUERY );
4422 if( xCanvasComponent.is() )
4423 xCanvasComponent->dispose();
4424 }

--- 692 unchanged lines hidden (view full) ---

5117 CommandEvent aCommandEvent = ImplTranslateCommandEvent( *pCEvt, rNEvt.GetWindow(), this );
5118 ImplCallEventListeners( VCLEVENT_WINDOW_COMMAND, &aCommandEvent );
5119 }
5120 }
5121 }
5122
5123 // #82968# notify event listeners for mouse and key events separately and
5124 // not in PreNotify ( as for focus listeners )
5125 // this allows for procesing those events internally first and pass it to
5125 // this allows for processing those events internally first and pass it to
5126 // the toolkit later
5127
5128 ImplDelData aDelData;
5129 ImplAddDel( &aDelData );
5130
5131 if( rNEvt.GetType() == EVENT_MOUSEMOVE )
5132 {
5133 if ( mpWindowImpl->mbCompoundControl || ( rNEvt.GetWindow() == this ) )

--- 982 unchanged lines hidden (view full) ---

6116 {
6117 // ClipRegion setzen/updaten
6118 RectangleVector aRectangles;
6119 mpWindowImpl->maWinRegion.GetRegionRectangles(aRectangles);
6120 mpWindowImpl->mpFrame->BeginSetClipRegion(aRectangles.size());
6121
6122 for(RectangleVector::const_iterator aRectIter(aRectangles.begin()); aRectIter != aRectangles.end(); aRectIter++)
6123 {
5126 // the toolkit later
5127
5128 ImplDelData aDelData;
5129 ImplAddDel( &aDelData );
5130
5131 if( rNEvt.GetType() == EVENT_MOUSEMOVE )
5132 {
5133 if ( mpWindowImpl->mbCompoundControl || ( rNEvt.GetWindow() == this ) )

--- 982 unchanged lines hidden (view full) ---

6116 {
6117 // ClipRegion setzen/updaten
6118 RectangleVector aRectangles;
6119 mpWindowImpl->maWinRegion.GetRegionRectangles(aRectangles);
6120 mpWindowImpl->mpFrame->BeginSetClipRegion(aRectangles.size());
6121
6122 for(RectangleVector::const_iterator aRectIter(aRectangles.begin()); aRectIter != aRectangles.end(); aRectIter++)
6123 {
6124 mpWindowImpl->mpFrame->UnionClipRegion(
6125 aRectIter->Left(),
6126 aRectIter->Top(),
6124 mpWindowImpl->mpFrame->UnionClipRegion(
6125 aRectIter->Left(),
6126 aRectIter->Top(),
6127 aRectIter->GetWidth(), // orig nWidth was ((R - L) + 1), same as GetWidth does
6128 aRectIter->GetHeight()); // same for height
6129 }
6130
6131 mpWindowImpl->mpFrame->EndSetClipRegion();
6132
6133 //long nX;
6134 //long nY;

--- 234 unchanged lines hidden (view full) ---

6369 {
6370 pNewOverlapWindow = pNewParent->ImplGetFirstOverlapWindow();
6371 if ( mpWindowImpl->mpOverlapWindow != pNewOverlapWindow )
6372 pOldOverlapWindow = mpWindowImpl->mpOverlapWindow;
6373 else
6374 pOldOverlapWindow = NULL;
6375 }
6376
6127 aRectIter->GetWidth(), // orig nWidth was ((R - L) + 1), same as GetWidth does
6128 aRectIter->GetHeight()); // same for height
6129 }
6130
6131 mpWindowImpl->mpFrame->EndSetClipRegion();
6132
6133 //long nX;
6134 //long nY;

--- 234 unchanged lines hidden (view full) ---

6369 {
6370 pNewOverlapWindow = pNewParent->ImplGetFirstOverlapWindow();
6371 if ( mpWindowImpl->mpOverlapWindow != pNewOverlapWindow )
6372 pOldOverlapWindow = mpWindowImpl->mpOverlapWindow;
6373 else
6374 pOldOverlapWindow = NULL;
6375 }
6376
6377 // Fenster in der Hirachie umsetzen
6377 // Fenster in der Hierachie umsetzen
6378 sal_Bool bFocusOverlapWin = HasChildPathFocus( sal_True );
6379 sal_Bool bFocusWin = HasChildPathFocus();
6380 sal_Bool bNewFrame = pNewParent->mpWindowImpl->mpFrameWindow != mpWindowImpl->mpFrameWindow;
6381 if ( bNewFrame )
6382 {
6383 if ( mpWindowImpl->mpFrameData->mpFocusWin )
6384 {
6385 if ( IsWindowOrChild( mpWindowImpl->mpFrameData->mpFocusWin ) )

--- 15 unchanged lines hidden (view full) ---

6401 if ( mpWindowImpl->mnParentClipMode & PARENTCLIPMODE_CLIP )
6402 pNewParent->mpWindowImpl->mbClipChildren = sal_True;
6403 ImplUpdateWindowPtr();
6404 if ( ImplUpdatePos() )
6405 ImplUpdateSysObjPos();
6406
6407 // Wenn sich das Overlap-Window geaendert hat, dann muss getestet werden,
6408 // ob auch OverlapWindow die das Child-Fenster als Parent gehabt haben
6378 sal_Bool bFocusOverlapWin = HasChildPathFocus( sal_True );
6379 sal_Bool bFocusWin = HasChildPathFocus();
6380 sal_Bool bNewFrame = pNewParent->mpWindowImpl->mpFrameWindow != mpWindowImpl->mpFrameWindow;
6381 if ( bNewFrame )
6382 {
6383 if ( mpWindowImpl->mpFrameData->mpFocusWin )
6384 {
6385 if ( IsWindowOrChild( mpWindowImpl->mpFrameData->mpFocusWin ) )

--- 15 unchanged lines hidden (view full) ---

6401 if ( mpWindowImpl->mnParentClipMode & PARENTCLIPMODE_CLIP )
6402 pNewParent->mpWindowImpl->mbClipChildren = sal_True;
6403 ImplUpdateWindowPtr();
6404 if ( ImplUpdatePos() )
6405 ImplUpdateSysObjPos();
6406
6407 // Wenn sich das Overlap-Window geaendert hat, dann muss getestet werden,
6408 // ob auch OverlapWindow die das Child-Fenster als Parent gehabt haben
6409 // in der Window-Hirachie umgesetzt werden muessen
6409 // in der Window-Hierachie umgesetzt werden muessen
6410 if ( ImplIsOverlapWindow() )
6411 {
6412 if ( bNewFrame )
6413 {
6414 Window* pOverlapWindow = mpWindowImpl->mpFirstOverlap;
6415 while ( pOverlapWindow )
6416 {
6417 Window* pNextOverlapWindow = pOverlapWindow->mpWindowImpl->mpNext;

--- 159 unchanged lines hidden (view full) ---

6577 }
6578 ImplGenerateMouseMove();
6579 }
6580 }
6581 }
6582 else
6583 {
6584 // inherit native widget flag for form controls
6410 if ( ImplIsOverlapWindow() )
6411 {
6412 if ( bNewFrame )
6413 {
6414 Window* pOverlapWindow = mpWindowImpl->mpFirstOverlap;
6415 while ( pOverlapWindow )
6416 {
6417 Window* pNextOverlapWindow = pOverlapWindow->mpWindowImpl->mpNext;

--- 159 unchanged lines hidden (view full) ---

6577 }
6578 ImplGenerateMouseMove();
6579 }
6580 }
6581 }
6582 else
6583 {
6584 // inherit native widget flag for form controls
6585 // required here, because frames never show up in the child hierarchy - which should be fixed....
6586 // eg, the drop down of a combobox which is a system floating window
6585 // required here, because frames never show up in the child hierarchy - which should be fixed...
6586 // e.g. the drop down of a combobox which is a system floating window
6587 if( mpWindowImpl->mbFrame && GetParent() && GetParent()->IsCompoundControl() &&
6588 GetParent()->IsNativeWidgetEnabled() != IsNativeWidgetEnabled() )
6589 EnableNativeWidget( GetParent()->IsNativeWidgetEnabled() );
6590
6591 if ( mpWindowImpl->mbCallMove )
6592 {
6593 ImplCallMove();
6594 }

--- 100 unchanged lines hidden (view full) ---

6695 if ( !bRealVisibilityChanged )
6696 ImplCallEventListeners( mpWindowImpl->mbVisible ? VCLEVENT_WINDOW_SHOW : VCLEVENT_WINDOW_HIDE, NULL );
6697 if( aDogTag.IsDelete() )
6698 return;
6699
6700 // #107575#, if a floating windows is shown that grabs the focus, we have to notify the toolkit about it
6701 // ImplGrabFocus() is not called in this case
6702 // Because this might lead to problems the task will be shifted to 6.y
6587 if( mpWindowImpl->mbFrame && GetParent() && GetParent()->IsCompoundControl() &&
6588 GetParent()->IsNativeWidgetEnabled() != IsNativeWidgetEnabled() )
6589 EnableNativeWidget( GetParent()->IsNativeWidgetEnabled() );
6590
6591 if ( mpWindowImpl->mbCallMove )
6592 {
6593 ImplCallMove();
6594 }

--- 100 unchanged lines hidden (view full) ---

6695 if ( !bRealVisibilityChanged )
6696 ImplCallEventListeners( mpWindowImpl->mbVisible ? VCLEVENT_WINDOW_SHOW : VCLEVENT_WINDOW_HIDE, NULL );
6697 if( aDogTag.IsDelete() )
6698 return;
6699
6700 // #107575#, if a floating windows is shown that grabs the focus, we have to notify the toolkit about it
6701 // ImplGrabFocus() is not called in this case
6702 // Because this might lead to problems the task will be shifted to 6.y
6703 // Note: top-level context menues are registered at the access bridge after being shown,
6703 // Note: top-level context menus are registered at the access bridge after being shown,
6704 // so this will probably not help here....
6705 /*
6706 if( mpWindowImpl->mbFloatWin && ((FloatingWindow*) this )->GrabsFocus() )
6707 {
6708 ImplSVData* pSVData = ImplGetSVData();
6709 if( !mpWindowImpl->mbVisible )
6710 {
6711 ImplCallEventListeners( VCLEVENT_WINDOW_LOSEFOCUS );

--- 41 unchanged lines hidden (view full) ---

6753// -----------------------------------------------------------------------
6754
6755void Window::Enable( bool bEnable, bool bChild )
6756{
6757 DBG_CHKTHIS( Window, ImplDbgCheckWindow );
6758
6759 if ( !bEnable )
6760 {
6704 // so this will probably not help here....
6705 /*
6706 if( mpWindowImpl->mbFloatWin && ((FloatingWindow*) this )->GrabsFocus() )
6707 {
6708 ImplSVData* pSVData = ImplGetSVData();
6709 if( !mpWindowImpl->mbVisible )
6710 {
6711 ImplCallEventListeners( VCLEVENT_WINDOW_LOSEFOCUS );

--- 41 unchanged lines hidden (view full) ---

6753// -----------------------------------------------------------------------
6754
6755void Window::Enable( bool bEnable, bool bChild )
6756{
6757 DBG_CHKTHIS( Window, ImplDbgCheckWindow );
6758
6759 if ( !bEnable )
6760 {
6761 // Wenn ein Fenster disablte wird, wird automatisch der Tracking-Modus
6761 // Wenn ein Fenster disabled wird, wird automatisch der Tracking-Modus
6762 // beendet oder der Capture geklaut
6763 if ( IsTracking() )
6764 EndTracking( ENDTRACK_CANCEL );
6765 if ( IsMouseCaptured() )
6766 ReleaseMouse();
6767 // Wenn Fenster den Focus hat und in der Dialog-Steuerung enthalten,
6768 // wird versucht, den Focus auf das naechste Control weiterzuschalten
6769 // mpWindowImpl->mbDisabled darf erst nach Aufruf von ImplDlgCtrlNextWindow() gesetzt

--- 79 unchanged lines hidden (view full) ---

6849 if ( (mpWindowImpl->mpBorderWindow->GetType() == WINDOW_BORDERWINDOW) &&
6850 ((ImplBorderWindow*)mpWindowImpl->mpBorderWindow)->mpMenuBarWindow )
6851 ((ImplBorderWindow*)mpWindowImpl->mpBorderWindow)->mpMenuBarWindow->EnableInput( bEnable, sal_True );
6852 }
6853
6854 if ( (! bEnable && mpWindowImpl->meAlwaysInputMode != AlwaysInputEnabled) ||
6855 ( bEnable && mpWindowImpl->meAlwaysInputMode != AlwaysInputDisabled) )
6856 {
6762 // beendet oder der Capture geklaut
6763 if ( IsTracking() )
6764 EndTracking( ENDTRACK_CANCEL );
6765 if ( IsMouseCaptured() )
6766 ReleaseMouse();
6767 // Wenn Fenster den Focus hat und in der Dialog-Steuerung enthalten,
6768 // wird versucht, den Focus auf das naechste Control weiterzuschalten
6769 // mpWindowImpl->mbDisabled darf erst nach Aufruf von ImplDlgCtrlNextWindow() gesetzt

--- 79 unchanged lines hidden (view full) ---

6849 if ( (mpWindowImpl->mpBorderWindow->GetType() == WINDOW_BORDERWINDOW) &&
6850 ((ImplBorderWindow*)mpWindowImpl->mpBorderWindow)->mpMenuBarWindow )
6851 ((ImplBorderWindow*)mpWindowImpl->mpBorderWindow)->mpMenuBarWindow->EnableInput( bEnable, sal_True );
6852 }
6853
6854 if ( (! bEnable && mpWindowImpl->meAlwaysInputMode != AlwaysInputEnabled) ||
6855 ( bEnable && mpWindowImpl->meAlwaysInputMode != AlwaysInputDisabled) )
6856 {
6857 // Wenn ein Fenster disablte wird, wird automatisch der
6857 // Wenn ein Fenster disabled wird, wird automatisch der
6858 // Tracking-Modus beendet oder der Capture geklaut
6859 if ( !bEnable )
6860 {
6861 if ( IsTracking() )
6862 EndTracking( ENDTRACK_CANCEL );
6863 if ( IsMouseCaptured() )
6864 ReleaseMouse();
6865 }

--- 341 unchanged lines hidden (view full) ---

7207 // ausgegeben wurde und loesen somit auch keine
7208 // Invalidates aus. Dies ist eine Optimierung fuer
7209 // HTML-Dokumenten mit vielen Controls. Wenn es mal
7210 // Probleme mit dieser Abfrage gibt, sollte man ein
7211 // Flag einfuehren, ob das Fenster nach Show schon
7212 // einmal ausgegeben wurde.
7213 if ( !bInitWinClipRegion )
7214 {
6858 // Tracking-Modus beendet oder der Capture geklaut
6859 if ( !bEnable )
6860 {
6861 if ( IsTracking() )
6862 EndTracking( ENDTRACK_CANCEL );
6863 if ( IsMouseCaptured() )
6864 ReleaseMouse();
6865 }

--- 341 unchanged lines hidden (view full) ---

7207 // ausgegeben wurde und loesen somit auch keine
7208 // Invalidates aus. Dies ist eine Optimierung fuer
7209 // HTML-Dokumenten mit vielen Controls. Wenn es mal
7210 // Probleme mit dieser Abfrage gibt, sollte man ein
7211 // Flag einfuehren, ob das Fenster nach Show schon
7212 // einmal ausgegeben wurde.
7213 if ( !bInitWinClipRegion )
7214 {
7215 // Alle nebeneinanderliegen Fenster invalidieren
7215 // Alle nebeneinanderliegenden Fenster invalidieren
7216 // Noch nicht komplett implementiert !!!
7217 Rectangle aWinRect( Point( mnOutOffX, mnOutOffY ), Size( mnOutWidth, mnOutHeight ) );
7218 Window* pWindow = NULL;
7219 if ( ImplIsOverlapWindow() )
7220 {
7221 if ( mpWindowImpl->mpOverlapWindow )
7222 pWindow = mpWindowImpl->mpOverlapWindow->mpWindowImpl->mpFirstOverlap;
7223 }

--- 6 unchanged lines hidden (view full) ---

7230 if ( pWindow == this )
7231 break;
7232 Rectangle aCompRect( Point( pWindow->mnOutOffX, pWindow->mnOutOffY ),
7233 Size( pWindow->mnOutWidth, pWindow->mnOutHeight ) );
7234 if ( aWinRect.IsOver( aCompRect ) )
7235 pWindow->Invalidate( INVALIDATE_CHILDREN | INVALIDATE_NOTRANSPARENT );
7236 pWindow = pWindow->mpWindowImpl->mpNext;
7237 }
7216 // Noch nicht komplett implementiert !!!
7217 Rectangle aWinRect( Point( mnOutOffX, mnOutOffY ), Size( mnOutWidth, mnOutHeight ) );
7218 Window* pWindow = NULL;
7219 if ( ImplIsOverlapWindow() )
7220 {
7221 if ( mpWindowImpl->mpOverlapWindow )
7222 pWindow = mpWindowImpl->mpOverlapWindow->mpWindowImpl->mpFirstOverlap;
7223 }

--- 6 unchanged lines hidden (view full) ---

7230 if ( pWindow == this )
7231 break;
7232 Rectangle aCompRect( Point( pWindow->mnOutOffX, pWindow->mnOutOffY ),
7233 Size( pWindow->mnOutWidth, pWindow->mnOutHeight ) );
7234 if ( aWinRect.IsOver( aCompRect ) )
7235 pWindow->Invalidate( INVALIDATE_CHILDREN | INVALIDATE_NOTRANSPARENT );
7236 pWindow = pWindow->mpWindowImpl->mpNext;
7237 }
7238 // Wenn uns ein Fenster welches im Hinterund liegt verdeckt hat,
7238 // Wenn uns ein Fenster, welches im Hinterund liegt verdeckt hat,
7239 // dann muessen wir uns neu ausgeben
7240 while ( pWindow )
7241 {
7242 if ( pWindow != this )
7243 {
7244 Rectangle aCompRect( Point( pWindow->mnOutOffX, pWindow->mnOutOffY ),
7245 Size( pWindow->mnOutWidth, pWindow->mnOutHeight ) );
7246 if ( aWinRect.IsOver( aCompRect ) )

--- 134 unchanged lines hidden (view full) ---

7381 nWidth = aMaxSize.Width();
7382 if( nHeight > aMaxSize.Height() )
7383 nHeight = aMaxSize.Height();
7384 }
7385 }
7386
7387 pWindow->mpWindowImpl->mpFrame->SetPosSize( nX, nY, nWidth, nHeight, nSysFlags );
7388
7239 // dann muessen wir uns neu ausgeben
7240 while ( pWindow )
7241 {
7242 if ( pWindow != this )
7243 {
7244 Rectangle aCompRect( Point( pWindow->mnOutOffX, pWindow->mnOutOffY ),
7245 Size( pWindow->mnOutWidth, pWindow->mnOutHeight ) );
7246 if ( aWinRect.IsOver( aCompRect ) )

--- 134 unchanged lines hidden (view full) ---

7381 nWidth = aMaxSize.Width();
7382 if( nHeight > aMaxSize.Height() )
7383 nHeight = aMaxSize.Height();
7384 }
7385 }
7386
7387 pWindow->mpWindowImpl->mpFrame->SetPosSize( nX, nY, nWidth, nHeight, nSysFlags );
7388
7389 // Resize should be called directly. If we havn't
7389 // Resize should be called directly. If we haven't
7390 // set the correct size, we get a second resize from
7391 // the system with the correct size. This can happen
7392 // if the size is to small or to large.
7393 ImplHandleResize( pWindow, nWidth, nHeight );
7394 }
7395 else
7396 {
7397 pWindow->ImplPosSizeWindow( nX, nY, nWidth, nHeight, nFlags );

--- 360 unchanged lines hidden (view full) ---

7758 pWindow = pWindow->ImplGetParent();
7759 }
7760 while ( pWindow );
7761
7762 // Wenn es etwas zu malen gibt, dann ein Paint ausloesen
7763 if ( pUpdateWindow->mpWindowImpl->mnPaintFlags & (IMPL_PAINT_PAINT | IMPL_PAINT_PAINTCHILDS) )
7764 {
7765 // und fuer alle ueber uns stehende System-Fenster auch ein Update
7390 // set the correct size, we get a second resize from
7391 // the system with the correct size. This can happen
7392 // if the size is to small or to large.
7393 ImplHandleResize( pWindow, nWidth, nHeight );
7394 }
7395 else
7396 {
7397 pWindow->ImplPosSizeWindow( nX, nY, nWidth, nHeight, nFlags );

--- 360 unchanged lines hidden (view full) ---

7758 pWindow = pWindow->ImplGetParent();
7759 }
7760 while ( pWindow );
7761
7762 // Wenn es etwas zu malen gibt, dann ein Paint ausloesen
7763 if ( pUpdateWindow->mpWindowImpl->mnPaintFlags & (IMPL_PAINT_PAINT | IMPL_PAINT_PAINTCHILDS) )
7764 {
7765 // und fuer alle ueber uns stehende System-Fenster auch ein Update
7766 // ausloesen, damit nicht die ganze Zeit luecken stehen bleiben
7766 // ausloesen, damit nicht die ganze Zeit Luecken stehen bleiben
7767 Window* pUpdateOverlapWindow = ImplGetFirstOverlapWindow()->mpWindowImpl->mpFirstOverlap;
7768 while ( pUpdateOverlapWindow )
7769 {
7770 pUpdateOverlapWindow->Update();
7771 pUpdateOverlapWindow = pUpdateOverlapWindow->mpWindowImpl->mpNext;
7772 }
7773
7774 pUpdateWindow->ImplCallPaint( NULL, pUpdateWindow->mpWindowImpl->mnPaintFlags );

--- 85 unchanged lines hidden (view full) ---

7860
7861// -----------------------------------------------------------------------
7862
7863sal_Bool Window::HasChildPathFocus( sal_Bool bSystemWindow ) const
7864{
7865 DBG_CHKTHIS( Window, ImplDbgCheckWindow );
7866
7867 // #107575#, the first floating window always has the keyboard focus, see also winproc.cxx: ImplGetKeyInputWindow()
7767 Window* pUpdateOverlapWindow = ImplGetFirstOverlapWindow()->mpWindowImpl->mpFirstOverlap;
7768 while ( pUpdateOverlapWindow )
7769 {
7770 pUpdateOverlapWindow->Update();
7771 pUpdateOverlapWindow = pUpdateOverlapWindow->mpWindowImpl->mpNext;
7772 }
7773
7774 pUpdateWindow->ImplCallPaint( NULL, pUpdateWindow->mpWindowImpl->mnPaintFlags );

--- 85 unchanged lines hidden (view full) ---

7860
7861// -----------------------------------------------------------------------
7862
7863sal_Bool Window::HasChildPathFocus( sal_Bool bSystemWindow ) const
7864{
7865 DBG_CHKTHIS( Window, ImplDbgCheckWindow );
7866
7867 // #107575#, the first floating window always has the keyboard focus, see also winproc.cxx: ImplGetKeyInputWindow()
7868 // task was shifted to 6.y, so its commented out
7868 // task was shifted to 6.y, so it's commented out
7869 /*
7870 Window* pFocusWin = ImplGetSVData()->maWinData.mpFirstFloat;
7871 if( pFocusWin && pFocusWin->mpWindowImpl->mbFloatWin && ((FloatingWindow *)pFocusWin)->GrabsFocus() )
7872 pFocusWin = pFocusWin->GetPreferredKeyInputWindow();
7873 else
7874 pFocusWin = ImplGetSVData()->maWinData.mpFocusWin;
7875 */
7876 Window* pFocusWin = ImplGetSVData()->maWinData.mpFocusWin;

--- 585 unchanged lines hidden (view full) ---

8462 if ( !pNew || !ImplIsChild( pNew ) )
8463 {
8464 ImplDelData aDogtag( this );
8465 ImplCallEventListeners( VCLEVENT_WINDOW_DEACTIVATE );
8466 if( aDogtag.IsDelete() )
8467 return;
8468
8469 // #100759#, avoid walking the wrong frame's hierarchy
7869 /*
7870 Window* pFocusWin = ImplGetSVData()->maWinData.mpFirstFloat;
7871 if( pFocusWin && pFocusWin->mpWindowImpl->mbFloatWin && ((FloatingWindow *)pFocusWin)->GrabsFocus() )
7872 pFocusWin = pFocusWin->GetPreferredKeyInputWindow();
7873 else
7874 pFocusWin = ImplGetSVData()->maWinData.mpFocusWin;
7875 */
7876 Window* pFocusWin = ImplGetSVData()->maWinData.mpFocusWin;

--- 585 unchanged lines hidden (view full) ---

8462 if ( !pNew || !ImplIsChild( pNew ) )
8463 {
8464 ImplDelData aDogtag( this );
8465 ImplCallEventListeners( VCLEVENT_WINDOW_DEACTIVATE );
8466 if( aDogtag.IsDelete() )
8467 return;
8468
8469 // #100759#, avoid walking the wrong frame's hierarchy
8470 // eg, undocked docking windows (ImplDockFloatWin)
8470 // e.g. undocked docking windows (ImplDockFloatWin)
8471 if ( ImplGetParent() && mpWindowImpl->mpFrameWindow == ImplGetParent()->mpWindowImpl->mpFrameWindow )
8472 ImplGetParent()->ImplCallDeactivateListeners( pNew );
8473 }
8474}
8475
8476// -----------------------------------------------------------------------
8477
8478void Window::ImplCallActivateListeners( Window *pOld )

--- 7 unchanged lines hidden (view full) ---

8486 return;
8487
8488 // #106298# revoke the change for 105369, because this change
8489 // disabled the activate event for the parent,
8490 // if the parent is a compound control
8491 //if( !GetParent() || !GetParent()->IsCompoundControl() )
8492 //{
8493 // #100759#, avoid walking the wrong frame's hierarchy
8471 if ( ImplGetParent() && mpWindowImpl->mpFrameWindow == ImplGetParent()->mpWindowImpl->mpFrameWindow )
8472 ImplGetParent()->ImplCallDeactivateListeners( pNew );
8473 }
8474}
8475
8476// -----------------------------------------------------------------------
8477
8478void Window::ImplCallActivateListeners( Window *pOld )

--- 7 unchanged lines hidden (view full) ---

8486 return;
8487
8488 // #106298# revoke the change for 105369, because this change
8489 // disabled the activate event for the parent,
8490 // if the parent is a compound control
8491 //if( !GetParent() || !GetParent()->IsCompoundControl() )
8492 //{
8493 // #100759#, avoid walking the wrong frame's hierarchy
8494 // eg, undocked docking windows (ImplDockFloatWin)
8494 // e.g. undocked docking windows (ImplDockFloatWin)
8495 // #104714#, revert the changes for 100759 because it has a side effect when pOld is a dialog
8495 // #104714#, revert the changes for 100759 because it has a side effect when pOld is a dialog
8496 // additionally the gallery is not dockable anymore, so 100759 canot occur
8496 // additionally the gallery is not dockable anymore, so 100759 cannot occur
8497 if ( ImplGetParent() ) /* && mpWindowImpl->mpFrameWindow == ImplGetParent()->mpWindowImpl->mpFrameWindow ) */
8498 ImplGetParent()->ImplCallActivateListeners( pOld );
8499 else if( (mpWindowImpl->mnStyle & WB_INTROWIN) == 0 )
8500 {
8501 // top level frame reached: store hint for DefModalDialogParent
8502 ImplGetSVData()->maWinData.mpActiveApplicationFrame = mpWindowImpl->mpFrameWindow;
8503 }
8504 //}

--- 286 unchanged lines hidden (view full) ---

8791}
8792
8793// -----------------------------------------------------------------------
8794// Accessibility
8795// -----------------------------------------------------------------------
8796
8797::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > Window::GetAccessible( sal_Bool bCreate )
8798{
8497 if ( ImplGetParent() ) /* && mpWindowImpl->mpFrameWindow == ImplGetParent()->mpWindowImpl->mpFrameWindow ) */
8498 ImplGetParent()->ImplCallActivateListeners( pOld );
8499 else if( (mpWindowImpl->mnStyle & WB_INTROWIN) == 0 )
8500 {
8501 // top level frame reached: store hint for DefModalDialogParent
8502 ImplGetSVData()->maWinData.mpActiveApplicationFrame = mpWindowImpl->mpFrameWindow;
8503 }
8504 //}

--- 286 unchanged lines hidden (view full) ---

8791}
8792
8793// -----------------------------------------------------------------------
8794// Accessibility
8795// -----------------------------------------------------------------------
8796
8797::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > Window::GetAccessible( sal_Bool bCreate )
8798{
8799 // do not optimize hierarchy for the top level border win (ie, when there is no parent)
8799 // do not optimize hierarchy for the top level border win (i.e. when there is no parent)
8800 /* // do not optimize accessible hierarchy at all to better reflect real VCL hierarchy
8801 if ( GetParent() && ( GetType() == WINDOW_BORDERWINDOW ) && ( GetChildCount() == 1 ) )
8802 //if( !ImplIsAccessibleCandidate() )
8803 {
8804 Window* pChild = GetAccessibleChildWindow( 0 );
8805 if ( pChild )
8806 return pChild->GetAccessible();
8807 }

--- 16 unchanged lines hidden (view full) ---

8824}
8825
8826// skip all border windows that are no top level frames
8827sal_Bool Window::ImplIsAccessibleCandidate() const
8828{
8829 if( !mpWindowImpl->mbBorderWin )
8830 return sal_True;
8831 else
8800 /* // do not optimize accessible hierarchy at all to better reflect real VCL hierarchy
8801 if ( GetParent() && ( GetType() == WINDOW_BORDERWINDOW ) && ( GetChildCount() == 1 ) )
8802 //if( !ImplIsAccessibleCandidate() )
8803 {
8804 Window* pChild = GetAccessibleChildWindow( 0 );
8805 if ( pChild )
8806 return pChild->GetAccessible();
8807 }

--- 16 unchanged lines hidden (view full) ---

8824}
8825
8826// skip all border windows that are no top level frames
8827sal_Bool Window::ImplIsAccessibleCandidate() const
8828{
8829 if( !mpWindowImpl->mbBorderWin )
8830 return sal_True;
8831 else
8832 // #101741 do not check for WB_CLOSEABLE because undecorated floaters (like menues!) are closeable
8832 // #101741 do not check for WB_CLOSEABLE because undecorated floaters (like menus!) are closeable
8833 if( mpWindowImpl->mbFrame && mpWindowImpl->mnStyle & (WB_MOVEABLE | WB_SIZEABLE) )
8834 return sal_True;
8835 else
8836 return sal_False;
8837}
8838
8839sal_Bool Window::ImplIsAccessibleNativeFrame() const
8840{
8841 if( mpWindowImpl->mbFrame )
8833 if( mpWindowImpl->mbFrame && mpWindowImpl->mnStyle & (WB_MOVEABLE | WB_SIZEABLE) )
8834 return sal_True;
8835 else
8836 return sal_False;
8837}
8838
8839sal_Bool Window::ImplIsAccessibleNativeFrame() const
8840{
8841 if( mpWindowImpl->mbFrame )
8842 // #101741 do not check for WB_CLOSEABLE because undecorated floaters (like menues!) are closeable
8842 // #101741 do not check for WB_CLOSEABLE because undecorated floaters (like menus!) are closeable
8843 if( (mpWindowImpl->mnStyle & (WB_MOVEABLE | WB_SIZEABLE)) )
8844 return sal_True;
8845 else
8846 return sal_False;
8847 else
8848 return sal_False;
8849}
8850

--- 292 unchanged lines hidden (view full) ---

9143 case WINDOW_LISTBOX:
9144 case WINDOW_MULTILISTBOX: nRole = accessibility::AccessibleRole::LIST; break;
9145
9146 case WINDOW_TREELISTBOX: nRole = accessibility::AccessibleRole::TREE; break;
9147
9148 case WINDOW_FIXEDTEXT: nRole = accessibility::AccessibleRole::LABEL; break;
9149 case WINDOW_FIXEDBORDER:
9150 nRole = accessibility::AccessibleRole::SEPARATOR; break;
8843 if( (mpWindowImpl->mnStyle & (WB_MOVEABLE | WB_SIZEABLE)) )
8844 return sal_True;
8845 else
8846 return sal_False;
8847 else
8848 return sal_False;
8849}
8850

--- 292 unchanged lines hidden (view full) ---

9143 case WINDOW_LISTBOX:
9144 case WINDOW_MULTILISTBOX: nRole = accessibility::AccessibleRole::LIST; break;
9145
9146 case WINDOW_TREELISTBOX: nRole = accessibility::AccessibleRole::TREE; break;
9147
9148 case WINDOW_FIXEDTEXT: nRole = accessibility::AccessibleRole::LABEL; break;
9149 case WINDOW_FIXEDBORDER:
9150 nRole = accessibility::AccessibleRole::SEPARATOR; break;
9151 case WINDOW_FIXEDLINE:
9151 case WINDOW_FIXEDLINE:
9152 { if( GetText().Len() > 0 )
9152 { if( GetText().Len() > 0 )
9153 nRole = accessibility::AccessibleRole::LABEL;
9153 nRole = accessibility::AccessibleRole::LABEL;
9154 else
9154 else
9155 nRole = accessibility::AccessibleRole::SEPARATOR;
9155 nRole = accessibility::AccessibleRole::SEPARATOR;
9156 break;
9157 }
9158 //case WINDOW_FIXEDLINE: nRole = accessibility::AccessibleRole::SEPARATOR; break;
9159 case WINDOW_FIXEDBITMAP:
9160 case WINDOW_FIXEDIMAGE: nRole = accessibility::AccessibleRole::ICON; break;
9161 case WINDOW_GROUPBOX: nRole = accessibility::AccessibleRole::GROUP_BOX; break;
9162 case WINDOW_SCROLLBAR: nRole = accessibility::AccessibleRole::SCROLL_BAR; break;
9163

--- 41 unchanged lines hidden (view full) ---

9205 case WINDOW_BORDERWINDOW:
9206 case WINDOW_SYSTEMCHILDWINDOW:
9207 default:
9208 if (ImplIsAccessibleNativeFrame() )
9209 nRole = accessibility::AccessibleRole::FRAME;
9210 else if( IsScrollable() )
9211 nRole = accessibility::AccessibleRole::SCROLL_PANE;
9212 else if( ((Window*)this)->ImplGetWindow()->IsMenuFloatingWindow() )
9156 break;
9157 }
9158 //case WINDOW_FIXEDLINE: nRole = accessibility::AccessibleRole::SEPARATOR; break;
9159 case WINDOW_FIXEDBITMAP:
9160 case WINDOW_FIXEDIMAGE: nRole = accessibility::AccessibleRole::ICON; break;
9161 case WINDOW_GROUPBOX: nRole = accessibility::AccessibleRole::GROUP_BOX; break;
9162 case WINDOW_SCROLLBAR: nRole = accessibility::AccessibleRole::SCROLL_BAR; break;
9163

--- 41 unchanged lines hidden (view full) ---

9205 case WINDOW_BORDERWINDOW:
9206 case WINDOW_SYSTEMCHILDWINDOW:
9207 default:
9208 if (ImplIsAccessibleNativeFrame() )
9209 nRole = accessibility::AccessibleRole::FRAME;
9210 else if( IsScrollable() )
9211 nRole = accessibility::AccessibleRole::SCROLL_PANE;
9212 else if( ((Window*)this)->ImplGetWindow()->IsMenuFloatingWindow() )
9213 nRole = accessibility::AccessibleRole::WINDOW; // #106002#, contextmenues are windows (i.e. toplevel)
9213 nRole = accessibility::AccessibleRole::WINDOW; // #106002#, contextmenus are windows (i.e. toplevel)
9214 else
9215 // #104051# WINDOW seems to be a bad default role, use LAYEREDPANE instead
9216 // a WINDOW is interpreted as a top-level window, which is typically not the case
9217 //nRole = accessibility::AccessibleRole::WINDOW;
9218 nRole = accessibility::AccessibleRole::PANEL;
9219 }
9220 }
9221 return nRole;
9222}
9223
9224void Window::SetAccessibleName( const String& rName )
9225{
9226 if ( !mpWindowImpl->mpAccessibleInfos )
9227 mpWindowImpl->mpAccessibleInfos = new ImplAccessibleInfos;
9228
9229 String oldName = GetAccessibleName();
9230 delete mpWindowImpl->mpAccessibleInfos->pAccessibleName;
9231 mpWindowImpl->mpAccessibleInfos->pAccessibleName = new String( rName );
9214 else
9215 // #104051# WINDOW seems to be a bad default role, use LAYEREDPANE instead
9216 // a WINDOW is interpreted as a top-level window, which is typically not the case
9217 //nRole = accessibility::AccessibleRole::WINDOW;
9218 nRole = accessibility::AccessibleRole::PANEL;
9219 }
9220 }
9221 return nRole;
9222}
9223
9224void Window::SetAccessibleName( const String& rName )
9225{
9226 if ( !mpWindowImpl->mpAccessibleInfos )
9227 mpWindowImpl->mpAccessibleInfos = new ImplAccessibleInfos;
9228
9229 String oldName = GetAccessibleName();
9230 delete mpWindowImpl->mpAccessibleInfos->pAccessibleName;
9231 mpWindowImpl->mpAccessibleInfos->pAccessibleName = new String( rName );
9232 ImplCallEventListeners( VCLEVENT_WINDOW_FRAMETITLECHANGED, &oldName );
9232 ImplCallEventListeners( VCLEVENT_WINDOW_FRAMETITLECHANGED, &oldName );
9233}
9234
9235String Window::GetAccessibleName() const
9236{
9237 String aAccessibleName;
9238 if ( mpWindowImpl->mpAccessibleInfos && mpWindowImpl->mpAccessibleInfos->pAccessibleName )
9239 {
9240 aAccessibleName = *mpWindowImpl->mpAccessibleInfos->pAccessibleName;

--- 99 unchanged lines hidden (view full) ---

9340
9341 return aAccessibleDescription;
9342}
9343
9344void Window::SetAccessibleRelationLabeledBy( Window* pLabeledBy )
9345{
9346 if ( !mpWindowImpl->mpAccessibleInfos )
9347 mpWindowImpl->mpAccessibleInfos = new ImplAccessibleInfos;
9233}
9234
9235String Window::GetAccessibleName() const
9236{
9237 String aAccessibleName;
9238 if ( mpWindowImpl->mpAccessibleInfos && mpWindowImpl->mpAccessibleInfos->pAccessibleName )
9239 {
9240 aAccessibleName = *mpWindowImpl->mpAccessibleInfos->pAccessibleName;

--- 99 unchanged lines hidden (view full) ---

9340
9341 return aAccessibleDescription;
9342}
9343
9344void Window::SetAccessibleRelationLabeledBy( Window* pLabeledBy )
9345{
9346 if ( !mpWindowImpl->mpAccessibleInfos )
9347 mpWindowImpl->mpAccessibleInfos = new ImplAccessibleInfos;
9348 mpWindowImpl->mpAccessibleInfos->pLabeledByWindow = pLabeledBy;
9348 mpWindowImpl->mpAccessibleInfos->pLabeledByWindow = pLabeledBy;
9349}
9350
9351void Window::SetAccessibleRelationLabelFor( Window* pLabelFor )
9352{
9353 if ( !mpWindowImpl->mpAccessibleInfos )
9354 mpWindowImpl->mpAccessibleInfos = new ImplAccessibleInfos;
9349}
9350
9351void Window::SetAccessibleRelationLabelFor( Window* pLabelFor )
9352{
9353 if ( !mpWindowImpl->mpAccessibleInfos )
9354 mpWindowImpl->mpAccessibleInfos = new ImplAccessibleInfos;
9355 mpWindowImpl->mpAccessibleInfos->pLabelForWindow = pLabelFor;
9355 mpWindowImpl->mpAccessibleInfos->pLabelForWindow = pLabelFor;
9356}
9357
9358void Window::SetAccessibleRelationMemberOf( Window* pMemberOfWin )
9359{
9360 if ( !mpWindowImpl->mpAccessibleInfos )
9361 mpWindowImpl->mpAccessibleInfos = new ImplAccessibleInfos;
9356}
9357
9358void Window::SetAccessibleRelationMemberOf( Window* pMemberOfWin )
9359{
9360 if ( !mpWindowImpl->mpAccessibleInfos )
9361 mpWindowImpl->mpAccessibleInfos = new ImplAccessibleInfos;
9362 mpWindowImpl->mpAccessibleInfos->pMemberOfWindow = pMemberOfWin;
9362 mpWindowImpl->mpAccessibleInfos->pMemberOfWindow = pMemberOfWin;
9363}
9364
9365sal_Bool Window::IsAccessibilityEventsSuppressed( sal_Bool bTraverseParentPath )
9366{
9367 if( !bTraverseParentPath )
9368 return mpWindowImpl->mbSuppressAccessibilityEvents;
9369 else
9370 {

--- 31 unchanged lines hidden (view full) ---

9402// returns background color used in this control
9403// false: could not determine color
9404sal_Bool Window::ImplGetCurrentBackgroundColor( Color& rCol )
9405{
9406 sal_Bool bRet = sal_True;
9407
9408 switch ( GetType() )
9409 {
9363}
9364
9365sal_Bool Window::IsAccessibilityEventsSuppressed( sal_Bool bTraverseParentPath )
9366{
9367 if( !bTraverseParentPath )
9368 return mpWindowImpl->mbSuppressAccessibilityEvents;
9369 else
9370 {

--- 31 unchanged lines hidden (view full) ---

9402// returns background color used in this control
9403// false: could not determine color
9404sal_Bool Window::ImplGetCurrentBackgroundColor( Color& rCol )
9405{
9406 sal_Bool bRet = sal_True;
9407
9408 switch ( GetType() )
9409 {
9410 // peform special handling here
9410 // perform special handling here
9411 case WINDOW_PUSHBUTTON:
9412 case WINDOW_OKBUTTON:
9413 case WINDOW_CANCELBUTTON:
9414 // etc.
9415 default:
9416 if( IsControlBackground() )
9417 rCol = GetControlBackground();
9418 else if( IsBackground() )

--- 28 unchanged lines hidden (view full) ---

9447 sal_Bool bDrawExtBorderOnly,
9448 long nCornerRadius,
9449 Color* pSelectionTextColor,
9450 Color* pPaintColor
9451 )
9452{
9453 if( rRect.IsEmpty() )
9454 return;
9411 case WINDOW_PUSHBUTTON:
9412 case WINDOW_OKBUTTON:
9413 case WINDOW_CANCELBUTTON:
9414 // etc.
9415 default:
9416 if( IsControlBackground() )
9417 rCol = GetControlBackground();
9418 else if( IsBackground() )

--- 28 unchanged lines hidden (view full) ---

9447 sal_Bool bDrawExtBorderOnly,
9448 long nCornerRadius,
9449 Color* pSelectionTextColor,
9450 Color* pPaintColor
9451 )
9452{
9453 if( rRect.IsEmpty() )
9454 return;
9455
9455
9456 bool bRoundEdges = nCornerRadius > 0;
9457
9458 const StyleSettings& rStyles = GetSettings().GetStyleSettings();
9459
9460
9461 // colors used for item highlighting
9462 Color aSelectionBorderCol( pPaintColor ? *pPaintColor : rStyles.GetHighlightColor() );
9463 Color aSelectionFillCol( aSelectionBorderCol );
9464
9465 sal_Bool bDark = rStyles.GetFaceColor().IsDark();
9466 sal_Bool bBright = ( rStyles.GetFaceColor() == Color( COL_WHITE ) );
9467
9468 int c1 = aSelectionBorderCol.GetLuminance();
9469 int c2 = GetDisplayBackground().GetColor().GetLuminance();
9470
9471 if( !bDark && !bBright && abs( c2-c1 ) < (pPaintColor ? 40 : 75) )
9472 {
9456 bool bRoundEdges = nCornerRadius > 0;
9457
9458 const StyleSettings& rStyles = GetSettings().GetStyleSettings();
9459
9460
9461 // colors used for item highlighting
9462 Color aSelectionBorderCol( pPaintColor ? *pPaintColor : rStyles.GetHighlightColor() );
9463 Color aSelectionFillCol( aSelectionBorderCol );
9464
9465 sal_Bool bDark = rStyles.GetFaceColor().IsDark();
9466 sal_Bool bBright = ( rStyles.GetFaceColor() == Color( COL_WHITE ) );
9467
9468 int c1 = aSelectionBorderCol.GetLuminance();
9469 int c2 = GetDisplayBackground().GetColor().GetLuminance();
9470
9471 if( !bDark && !bBright && abs( c2-c1 ) < (pPaintColor ? 40 : 75) )
9472 {
9473 // constrast too low
9473 // contrast too low
9474 sal_uInt16 h,s,b;
9475 aSelectionFillCol.RGBtoHSB( h, s, b );
9476 if( b > 50 ) b -= 40;
9477 else b += 40;
9478 aSelectionFillCol.SetColor( Color::HSBtoRGB( h, s, b ) );
9479 aSelectionBorderCol = aSelectionFillCol;
9480 }
9481

--- 447 unchanged lines hidden (view full) ---

9929
9930 DBG_ASSERT( GetMapMode().GetMapUnit() == MAP_PIXEL, "MapMode must be PIXEL based" );
9931 if ( GetMapMode().GetMapUnit() != MAP_PIXEL )
9932 return;
9933
9934 // preserve graphicsstate
9935 Push();
9936 Region aClipRegion( GetClipRegion() );
9474 sal_uInt16 h,s,b;
9475 aSelectionFillCol.RGBtoHSB( h, s, b );
9476 if( b > 50 ) b -= 40;
9477 else b += 40;
9478 aSelectionFillCol.SetColor( Color::HSBtoRGB( h, s, b ) );
9479 aSelectionBorderCol = aSelectionFillCol;
9480 }
9481

--- 447 unchanged lines hidden (view full) ---

9929
9930 DBG_ASSERT( GetMapMode().GetMapUnit() == MAP_PIXEL, "MapMode must be PIXEL based" );
9931 if ( GetMapMode().GetMapUnit() != MAP_PIXEL )
9932 return;
9933
9934 // preserve graphicsstate
9935 Push();
9936 Region aClipRegion( GetClipRegion() );
9937 SetClipRegion();
9937 SetClipRegion();
9938
9939 GDIMetaFile* pOldMtf = GetConnectMetaFile();
9940 GDIMetaFile aMtf;
9941 SetConnectMetaFile( &aMtf );
9942
9943 // put a push action to metafile
9944 Push();
9945 // copy graphics state to metafile

--- 45 unchanged lines hidden (view full) ---

9991 // foreground
9992 Paint( aPaintRect );
9993 // put a pop action to metafile
9994 Pop();
9995
9996 SetConnectMetaFile( pOldMtf );
9997 EnableOutput( bOutput );
9998 mpWindowImpl->mbReallyVisible = bRVisible;
9938
9939 GDIMetaFile* pOldMtf = GetConnectMetaFile();
9940 GDIMetaFile aMtf;
9941 SetConnectMetaFile( &aMtf );
9942
9943 // put a push action to metafile
9944 Push();
9945 // copy graphics state to metafile

--- 45 unchanged lines hidden (view full) ---

9991 // foreground
9992 Paint( aPaintRect );
9993 // put a pop action to metafile
9994 Pop();
9995
9996 SetConnectMetaFile( pOldMtf );
9997 EnableOutput( bOutput );
9998 mpWindowImpl->mbReallyVisible = bRVisible;
9999
9999
10000 // paint metafile to VDev
10001 VirtualDevice* pMaskedDevice = new VirtualDevice( *i_pTargetOutDev, 0, 0 );
10002 pMaskedDevice->SetOutputSizePixel( GetOutputSizePixel() );
10003 pMaskedDevice->EnableRTL( IsRTLEnabled() );
10004 aMtf.WindStart();
10005 aMtf.Play( pMaskedDevice );
10006 BitmapEx aBmpEx( pMaskedDevice->GetBitmapEx( Point( 0, 0 ), pMaskedDevice->GetOutputSizePixel() ) );
10007 i_pTargetOutDev->DrawBitmapEx( i_rPos, aBmpEx );

--- 5 unchanged lines hidden (view full) ---

10013 {
10014 if( pChild->mpWindowImpl->mpFrame == mpWindowImpl->mpFrame && pChild->IsVisible() )
10015 {
10016 long nDeltaX = pChild->mnOutOffX - mnOutOffX;
10017 if( ImplHasMirroredGraphics() )
10018 nDeltaX = mnOutWidth - nDeltaX - pChild->mnOutWidth;
10019 long nDeltaY = pChild->GetOutOffYPixel() - GetOutOffYPixel();
10020 Point aPos( i_rPos );
10000 // paint metafile to VDev
10001 VirtualDevice* pMaskedDevice = new VirtualDevice( *i_pTargetOutDev, 0, 0 );
10002 pMaskedDevice->SetOutputSizePixel( GetOutputSizePixel() );
10003 pMaskedDevice->EnableRTL( IsRTLEnabled() );
10004 aMtf.WindStart();
10005 aMtf.Play( pMaskedDevice );
10006 BitmapEx aBmpEx( pMaskedDevice->GetBitmapEx( Point( 0, 0 ), pMaskedDevice->GetOutputSizePixel() ) );
10007 i_pTargetOutDev->DrawBitmapEx( i_rPos, aBmpEx );

--- 5 unchanged lines hidden (view full) ---

10013 {
10014 if( pChild->mpWindowImpl->mpFrame == mpWindowImpl->mpFrame && pChild->IsVisible() )
10015 {
10016 long nDeltaX = pChild->mnOutOffX - mnOutOffX;
10017 if( ImplHasMirroredGraphics() )
10018 nDeltaX = mnOutWidth - nDeltaX - pChild->mnOutWidth;
10019 long nDeltaY = pChild->GetOutOffYPixel() - GetOutOffYPixel();
10020 Point aPos( i_rPos );
10021 Point aDelta( nDeltaX, nDeltaY );
10021 Point aDelta( nDeltaX, nDeltaY );
10022 aPos += aDelta;
10023 pChild->ImplPaintToDevice( i_pTargetOutDev, aPos );
10024 }
10025 }
10026
10027 // restore graphics state
10028 Pop();
10029
10030 EnableOutput( bOutput );
10031 mpWindowImpl->mbReallyVisible = bRVisible;
10032 mbDevOutput = bDevOutput;
10033 mnDPIX = nOldDPIX;
10034 mnDPIY = nOldDPIY;
10035}
10036
10037void Window::PaintToDevice( OutputDevice* pDev, const Point& rPos, const Size& /*rSize*/ )
10038{
10039 // FIXME: scaling: currently this is for pixel copying only
10022 aPos += aDelta;
10023 pChild->ImplPaintToDevice( i_pTargetOutDev, aPos );
10024 }
10025 }
10026
10027 // restore graphics state
10028 Pop();
10029
10030 EnableOutput( bOutput );
10031 mpWindowImpl->mbReallyVisible = bRVisible;
10032 mbDevOutput = bDevOutput;
10033 mnDPIX = nOldDPIX;
10034 mnDPIY = nOldDPIY;
10035}
10036
10037void Window::PaintToDevice( OutputDevice* pDev, const Point& rPos, const Size& /*rSize*/ )
10038{
10039 // FIXME: scaling: currently this is for pixel copying only
10040
10040
10041 DBG_ASSERT( ! pDev->ImplHasMirroredGraphics(), "PaintToDevice to mirroring graphics" );
10042 DBG_ASSERT( ! pDev->IsRTLEnabled(), "PaintToDevice to mirroring device" );
10041 DBG_ASSERT( ! pDev->ImplHasMirroredGraphics(), "PaintToDevice to mirroring graphics" );
10042 DBG_ASSERT( ! pDev->IsRTLEnabled(), "PaintToDevice to mirroring device" );
10043
10044
10043
10044
10045 Point aPos = pDev->LogicToPixel( rPos );
10046
10047 Window* pRealParent = NULL;
10048 if( ! mpWindowImpl->mbVisible )
10049 {
10050 Window* pTempParent = ImplGetDefaultWindow();
10051 if( pTempParent )
10052 pTempParent->EnableChildTransparentMode();
10053 pRealParent = GetParent();
10054 SetParent( pTempParent );
10055 // trigger correct visibility flags for children
10056 Show();
10057 Hide();
10058 }
10059
10060 sal_Bool bVisible = mpWindowImpl->mbVisible;
10061 mpWindowImpl->mbVisible = sal_True;
10045 Point aPos = pDev->LogicToPixel( rPos );
10046
10047 Window* pRealParent = NULL;
10048 if( ! mpWindowImpl->mbVisible )
10049 {
10050 Window* pTempParent = ImplGetDefaultWindow();
10051 if( pTempParent )
10052 pTempParent->EnableChildTransparentMode();
10053 pRealParent = GetParent();
10054 SetParent( pTempParent );
10055 // trigger correct visibility flags for children
10056 Show();
10057 Hide();
10058 }
10059
10060 sal_Bool bVisible = mpWindowImpl->mbVisible;
10061 mpWindowImpl->mbVisible = sal_True;
10062
10062
10063 if( mpWindowImpl->mpBorderWindow )
10064 mpWindowImpl->mpBorderWindow->ImplPaintToDevice( pDev, rPos );
10065 else
10066 ImplPaintToDevice( pDev, rPos );
10067
10068 mpWindowImpl->mbVisible = bVisible;
10069
10070 if( pRealParent )

--- 4 unchanged lines hidden (view full) ---

10075{
10076 return XubString::EmptyString();
10077}
10078
10079Selection Window::GetSurroundingTextSelection() const
10080{
10081 return Selection( 0, 0 );
10082}
10063 if( mpWindowImpl->mpBorderWindow )
10064 mpWindowImpl->mpBorderWindow->ImplPaintToDevice( pDev, rPos );
10065 else
10066 ImplPaintToDevice( pDev, rPos );
10067
10068 mpWindowImpl->mbVisible = bVisible;
10069
10070 if( pRealParent )

--- 4 unchanged lines hidden (view full) ---

10075{
10076 return XubString::EmptyString();
10077}
10078
10079Selection Window::GetSurroundingTextSelection() const
10080{
10081 return Selection( 0, 0 );
10082}
10083