diff options
author | Hans-Joachim Lankenau <hjs@openoffice.org> | 2004-06-25 16:08:44 +0000 |
---|---|---|
committer | Hans-Joachim Lankenau <hjs@openoffice.org> | 2004-06-25 16:08:44 +0000 |
commit | b40d1b01abbbb05ad509ef58b7737f03faeeb299 (patch) | |
tree | 3478d73b21dcda17cb3a0d62de9a4f70c3b7de8e /vcl | |
parent | 2fad79fca33a9b8cdc4e38b75e7885b5bdfc1db1 (diff) |
INTEGRATION: CWS tune04 (1.49.12); FILE MERGED
2004/06/11 08:37:24 cmc 1.49.12.1: #i29636# turn global objects into local static data protected with swishy double-locked templated template
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/app/svapp.cxx | 95 |
1 files changed, 61 insertions, 34 deletions
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index e8d2f913afdd..5fd2d9f7434e 100644 --- a/vcl/source/app/svapp.cxx +++ b/vcl/source/app/svapp.cxx @@ -2,9 +2,9 @@ * * $RCSfile: svapp.cxx,v $ * - * $Revision: 1.49 $ + * $Revision: 1.50 $ * - * last change: $Author: hr $ $Date: 2004-05-10 12:57:57 $ + * last change: $Author: hjs $ $Date: 2004-06-25 17:08:44 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -145,10 +145,16 @@ #include "osl/thread.h" #include "rtl/tencinfo.h" +#ifndef INCLUDED_RTL_INSTANCE_HXX +#include <rtl/instance.hxx> +#endif + #ifndef _SV_SALIMESTATUS_HXX #include <salimestatus.hxx> #endif +#include <utility> + using namespace ::com::sun::star::uno; // keycodes handled internally by VCL @@ -163,34 +169,54 @@ public: USHORT mnResId; }; -ImplReservedKey ImplReservedKeys[] = { - ImplReservedKey(KeyCode(KEY_F1,0), SV_SHORTCUT_HELP), - ImplReservedKey(KeyCode(KEY_F1,KEY_SHIFT), SV_SHORTCUT_ACTIVEHELP), - ImplReservedKey(KeyCode(KEY_F1,KEY_MOD1), SV_SHORTCUT_CONTEXTHELP), - ImplReservedKey(KeyCode(KEY_F2,KEY_SHIFT), SV_SHORTCUT_CONTEXTHELP), - ImplReservedKey(KeyCode(KEY_F4,KEY_MOD1), SV_SHORTCUT_DOCKUNDOCK), - ImplReservedKey(KeyCode(KEY_F4,KEY_MOD2), SV_SHORTCUT_DOCKUNDOCK), - ImplReservedKey(KeyCode(KEY_F4,KEY_MOD1|KEY_MOD2), SV_SHORTCUT_DOCKUNDOCK), - ImplReservedKey(KeyCode(KEY_F6,0), SV_SHORTCUT_NEXTSUBWINDOW), - ImplReservedKey(KeyCode(KEY_F6,KEY_MOD1), SV_SHORTCUT_TODOCUMENT), - ImplReservedKey(KeyCode(KEY_F6,KEY_SHIFT), SV_SHORTCUT_PREVSUBWINDOW), - ImplReservedKey(KeyCode(KEY_F6,KEY_MOD1|KEY_SHIFT), 0), // activate splitter (string is missing!) - ImplReservedKey(KeyCode(KEY_F10,0), SV_SHORTCUT_MENUBAR) +typedef std::pair<ImplReservedKey*, size_t> ReservedKeys; +namespace +{ + struct ImplReservedKeysImpl + { + ReservedKeys* operator()() + { + static ImplReservedKey ImplReservedKeys[] = + { + ImplReservedKey(KeyCode(KEY_F1,0), SV_SHORTCUT_HELP), + ImplReservedKey(KeyCode(KEY_F1,KEY_SHIFT), SV_SHORTCUT_ACTIVEHELP), + ImplReservedKey(KeyCode(KEY_F1,KEY_MOD1), SV_SHORTCUT_CONTEXTHELP), + ImplReservedKey(KeyCode(KEY_F2,KEY_SHIFT), SV_SHORTCUT_CONTEXTHELP), + ImplReservedKey(KeyCode(KEY_F4,KEY_MOD1), SV_SHORTCUT_DOCKUNDOCK), + ImplReservedKey(KeyCode(KEY_F4,KEY_MOD2), SV_SHORTCUT_DOCKUNDOCK), + ImplReservedKey(KeyCode(KEY_F4,KEY_MOD1|KEY_MOD2), SV_SHORTCUT_DOCKUNDOCK), + ImplReservedKey(KeyCode(KEY_F6,0), SV_SHORTCUT_NEXTSUBWINDOW), + ImplReservedKey(KeyCode(KEY_F6,KEY_MOD1), SV_SHORTCUT_TODOCUMENT), + ImplReservedKey(KeyCode(KEY_F6,KEY_SHIFT), SV_SHORTCUT_PREVSUBWINDOW), + ImplReservedKey(KeyCode(KEY_F6,KEY_MOD1|KEY_SHIFT), 0), // activate splitter (string is missing!) + ImplReservedKey(KeyCode(KEY_F10,0), SV_SHORTCUT_MENUBAR) #ifdef UNX - , - ImplReservedKey(KeyCode(KEY_1,KEY_SHIFT|KEY_MOD1), 0), - ImplReservedKey(KeyCode(KEY_2,KEY_SHIFT|KEY_MOD1), 0), - ImplReservedKey(KeyCode(KEY_3,KEY_SHIFT|KEY_MOD1), 0), - ImplReservedKey(KeyCode(KEY_4,KEY_SHIFT|KEY_MOD1), 0), - ImplReservedKey(KeyCode(KEY_5,KEY_SHIFT|KEY_MOD1), 0), - ImplReservedKey(KeyCode(KEY_6,KEY_SHIFT|KEY_MOD1), 0), - ImplReservedKey(KeyCode(KEY_7,KEY_SHIFT|KEY_MOD1), 0), - ImplReservedKey(KeyCode(KEY_8,KEY_SHIFT|KEY_MOD1), 0), - ImplReservedKey(KeyCode(KEY_9,KEY_SHIFT|KEY_MOD1), 0), - ImplReservedKey(KeyCode(KEY_0,KEY_SHIFT|KEY_MOD1), 0), - ImplReservedKey(KeyCode(KEY_ADD,KEY_SHIFT|KEY_MOD1), 0) + , + ImplReservedKey(KeyCode(KEY_1,KEY_SHIFT|KEY_MOD1), 0), + ImplReservedKey(KeyCode(KEY_2,KEY_SHIFT|KEY_MOD1), 0), + ImplReservedKey(KeyCode(KEY_3,KEY_SHIFT|KEY_MOD1), 0), + ImplReservedKey(KeyCode(KEY_4,KEY_SHIFT|KEY_MOD1), 0), + ImplReservedKey(KeyCode(KEY_5,KEY_SHIFT|KEY_MOD1), 0), + ImplReservedKey(KeyCode(KEY_6,KEY_SHIFT|KEY_MOD1), 0), + ImplReservedKey(KeyCode(KEY_7,KEY_SHIFT|KEY_MOD1), 0), + ImplReservedKey(KeyCode(KEY_8,KEY_SHIFT|KEY_MOD1), 0), + ImplReservedKey(KeyCode(KEY_9,KEY_SHIFT|KEY_MOD1), 0), + ImplReservedKey(KeyCode(KEY_0,KEY_SHIFT|KEY_MOD1), 0), + ImplReservedKey(KeyCode(KEY_ADD,KEY_SHIFT|KEY_MOD1), 0) #endif -}; + }; + static ReservedKeys aKeys + ( + &ImplReservedKeys[0], + sizeof(ImplReservedKeys) / sizeof(ImplReservedKey) + ); + return &aKeys; + } + }; + + struct ImplReservedKeys + : public rtl::StaticAggregate<ReservedKeys, ImplReservedKeysImpl> {}; +} // #include <usr/refl.hxx> @@ -437,7 +463,7 @@ void Application::Abort( const XubString& rErrorText ) ULONG Application::GetReservedKeyCodeCount() { - return sizeof( ImplReservedKeys ) / sizeof( ImplReservedKey ); + return ImplReservedKeys::get()->second; } const KeyCode* Application::GetReservedKeyCode( ULONG i ) @@ -445,15 +471,16 @@ const KeyCode* Application::GetReservedKeyCode( ULONG i ) if( i >= GetReservedKeyCodeCount() ) return NULL; else - return &ImplReservedKeys[i].mKeyCode; + return &ImplReservedKeys::get()->first[i].mKeyCode; } String Application::GetReservedKeyCodeDescription( ULONG i ) { - if( i >= GetReservedKeyCodeCount() || ! ImplReservedKeys[i].mnResId ) + ImplReservedKey *pImplReservedKeys = ImplReservedKeys::get()->first; + if( i >= GetReservedKeyCodeCount() || ! pImplReservedKeys[i].mnResId ) return String(); else - return String( ResId( ImplReservedKeys[i].mnResId, ImplGetResMgr() ) ); + return String( ResId( pImplReservedKeys[i].mnResId, ImplGetResMgr() ) ); } // ----------------------------------------------------------------------- @@ -705,8 +732,8 @@ void Application::SetSettings( const AllSettings& rSettings ) // Update all windows Window* pFirstFrame = pSVData->maWinData.mpFirstFrame; // Daten, die neu berechnet werden muessen, zuruecksetzen - long nOldDPIX; - long nOldDPIY; + long nOldDPIX(0); + long nOldDPIY(0); if ( pFirstFrame ) { nOldDPIX = pFirstFrame->mnDPIX; |