summaryrefslogtreecommitdiff
path: root/vcl/aqua/source/app/vclnsapp.mm
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2009-09-17 16:34:35 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2009-09-17 16:34:35 +0000
commitd6f7c94e5c27ba02ff5c3229760c9808cc9b5bea (patch)
treed251fbe75677558265f9d06dd366d8894c4aa793 /vcl/aqua/source/app/vclnsapp.mm
parent84a850128d4dc3dc0d9fad53ac611fe3a9832c8f (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-xvcl/aqua/source/app/vclnsapp.mm96
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
{