diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2009-09-17 16:34:35 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2009-09-17 16:34:35 +0000 |
commit | d6f7c94e5c27ba02ff5c3229760c9808cc9b5bea (patch) | |
tree | d251fbe75677558265f9d06dd366d8894c4aa793 /vcl/aqua/source/app/vclnsapp.mm | |
parent | 84a850128d4dc3dc0d9fad53ac611fe3a9832c8f (diff) |
CWS-TOOLING: integrate CWS vcl105
2009-09-07 Philipp Lohmann fix path issues
2009-09-07 hdu #i104525# Aqua: workaround OSX problem in RecentlyUsed list
2009-09-07 Philipp Lohmann add missing dollar sign
2009-09-07 Philipp Lohmann remove warnings
2009-09-07 hdu #i104011# need to use real-vals in cff-subsetter for some fonts
2009-09-05 Philipp Lohmann #i103674# less noise
2009-09-05 Philipp Lohmann #i103674# add garmin communicator to list of crashing plugins
2009-09-05 Philipp Lohmann #i103674# confiuration option to disable plugin support
2009-09-05 Philipp Lohmann merge #i102735#
2009-09-05 Philipp Lohmann #i88802# enable transparency resolution for PDF/A
2009-09-04 Philipp Lohmann rebase to DEV300m57
2009-09-03 Philipp Lohmann #i90083# fix a typo
2009-09-03 Philipp Lohmann merge
2009-09-03 Philipp Lohmann #i90083# workaround for application frame switching
2009-09-03 hdu #i104720# better description for --without-fonts configure option
2009-09-02 hdu #i104723# update third-party fonts
2009-09-02 hdu #i104723# update default-installed Liberation fonts from 1.04->1.05.1.20090721
2009-09-02 hdu #i104720# update default-installed DejaVu fonts from 2.21->2.30
2009-09-02 hdu #i89682# add Gentium fonts to default installation
2009-09-02 hdu #i89682# add Gentium fonts to default installation
2009-09-01 hdu #i104011# fix vertical offset in PDF-export of USP-layouted text
2009-08-27 Philipp Lohmann #i102033# ignore transients
2009-08-27 Philipp Lohmann merge
2009-08-27 Philipp Lohmann fix warning, remove crappy early exits
2009-08-26 Philipp Lohmann #i63494# user event time for generic plugin always regotten to work around metacity
2009-08-26 Philipp Lohmann merge
2009-08-26 Philipp Lohmann #i104526# fix string conversion
2009-08-25 Philipp Lohmann #b6855541# show newly added driver, repair remove driver
2009-08-25 Philipp Lohmann #i104469# maximizing issue (thanks haggai)
Diffstat (limited to 'vcl/aqua/source/app/vclnsapp.mm')
-rwxr-xr-x | vcl/aqua/source/app/vclnsapp.mm | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/vcl/aqua/source/app/vclnsapp.mm b/vcl/aqua/source/app/vclnsapp.mm index 43d44c709c12..5a295b5e1171 100755 --- a/vcl/aqua/source/app/vclnsapp.mm +++ b/vcl/aqua/source/app/vclnsapp.mm @@ -104,6 +104,24 @@ return; } } + + // #i90083# handle frame switching + // FIXME: lousy workaround + if( (nModMask & (NSControlKeyMask|NSAlternateKeyMask)) == 0 ) + { + if( [[pEvent characters] isEqualToString: @"<"] || + [[pEvent characters] isEqualToString: @"~"] ) + { + [self cycleFrameForward: pFrame]; + return; + } + else if( [[pEvent characters] isEqualToString: @">"] || + [[pEvent characters] isEqualToString: @"`"] ) + { + [self cycleFrameBackward: pFrame]; + return; + } + } // get information whether the event was handled; keyDown returns nothing GetSalData()->maKeyEventAnswer[ pEvent ] = false; @@ -186,6 +204,84 @@ { [super sendEvent: pEvent]; } + +-(void)cycleFrameForward: (AquaSalFrame*)pCurFrame +{ + // find current frame in list + std::list< AquaSalFrame* >& rFrames( GetSalData()->maFrames ); + std::list< AquaSalFrame* >::iterator it = rFrames.begin(); + for( ; it != rFrames.end() && *it != pCurFrame; ++it ) + ; + if( it != rFrames.end() ) + { + // now find the next frame (or end) + do + { + ++it; + if( it != rFrames.end() ) + { + if( (*it)->mpDockMenuEntry != NULL && + (*it)->mbShown ) + { + [(*it)->getWindow() makeKeyAndOrderFront: NSApp]; + return; + } + } + } while( it != rFrames.end() ); + // cycle around, find the next up to pCurFrame + it = rFrames.begin(); + while( *it != pCurFrame ) + { + if( (*it)->mpDockMenuEntry != NULL && + (*it)->mbShown ) + { + [(*it)->getWindow() makeKeyAndOrderFront: NSApp]; + return; + } + ++it; + } + } +} + +-(void)cycleFrameBackward: (AquaSalFrame*)pCurFrame +{ + // do the same as cycleFrameForward only with a reverse iterator + + // find current frame in list + std::list< AquaSalFrame* >& rFrames( GetSalData()->maFrames ); + std::list< AquaSalFrame* >::reverse_iterator it = rFrames.rbegin(); + for( ; it != rFrames.rend() && *it != pCurFrame; ++it ) + ; + if( it != rFrames.rend() ) + { + // now find the next frame (or end) + do + { + ++it; + if( it != rFrames.rend() ) + { + if( (*it)->mpDockMenuEntry != NULL && + (*it)->mbShown ) + { + [(*it)->getWindow() makeKeyAndOrderFront: NSApp]; + return; + } + } + } while( it != rFrames.rend() ); + // cycle around, find the next up to pCurFrame + it = rFrames.rbegin(); + while( *it != pCurFrame ) + { + if( (*it)->mpDockMenuEntry != NULL && + (*it)->mbShown ) + { + [(*it)->getWindow() makeKeyAndOrderFront: NSApp]; + return; + } + ++it; + } + } +} -(NSMenu*)applicationDockMenu:(NSApplication *)sender { |