summaryrefslogtreecommitdiff
path: root/vcl/aqua/source/window/salframeview.mm
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/aqua/source/window/salframeview.mm')
-rwxr-xr-xvcl/aqua/source/window/salframeview.mm60
1 files changed, 60 insertions, 0 deletions
diff --git a/vcl/aqua/source/window/salframeview.mm b/vcl/aqua/source/window/salframeview.mm
index 68ea2c2062f2..51f1b1a3b63c 100755
--- a/vcl/aqua/source/window/salframeview.mm
+++ b/vcl/aqua/source/window/salframeview.mm
@@ -215,6 +215,7 @@ static AquaSalFrame* getMouseContainerFrame()
AquaSalMenu::enableMainMenu( false );
#endif
mpFrame->CallCallback( SALEVENT_GETFOCUS, 0 );
+ mpFrame->SendPaintEvent(); // repaint controls as active
}
}
@@ -223,7 +224,10 @@ static AquaSalFrame* getMouseContainerFrame()
YIELD_GUARD;
if( mpFrame && AquaSalFrame::isAlive( mpFrame ) )
+ {
mpFrame->CallCallback(SALEVENT_LOSEFOCUS, 0);
+ mpFrame->SendPaintEvent(); // repaint controls as inactive
+ }
}
-(void)windowDidChangeScreen: (NSNotification*)pNotification
@@ -1061,21 +1065,41 @@ private:
[self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::MOVE_TO_END_OF_LINE character: 0 modifiers: 0];
}
+-(void)moveToRightEndOfLine: (id)aSender
+{
+ [self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::MOVE_TO_END_OF_LINE character: 0 modifiers: 0];
+}
+
-(void)moveToEndOfLineAndModifySelection: (id)aSender
{
[self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::SELECT_TO_END_OF_LINE character: 0 modifiers: 0];
}
+-(void)moveToRightEndOfLineAndModifySelection: (id)aSender
+{
+ [self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::SELECT_TO_END_OF_LINE character: 0 modifiers: 0];
+}
+
-(void)moveToBeginningOfLine: (id)aSender
{
[self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::MOVE_TO_BEGIN_OF_LINE character: 0 modifiers: 0];
}
+-(void)moveToLeftEndOfLine: (id)aSender
+{
+ [self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::MOVE_TO_BEGIN_OF_LINE character: 0 modifiers: 0];
+}
+
-(void)moveToBeginningOfLineAndModifySelection: (id)aSender
{
[self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::SELECT_TO_BEGIN_OF_LINE character: 0 modifiers: 0];
}
+-(void)moveToLeftEndOfLineAndModifySelection: (id)aSender
+{
+ [self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::SELECT_TO_BEGIN_OF_LINE character: 0 modifiers: 0];
+}
+
-(void)moveToEndOfParagraph: (id)aSender
{
[self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::MOVE_TO_END_OF_PARAGRAPH character: 0 modifiers: 0];
@@ -1121,6 +1145,12 @@ private:
[self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::MOVE_TO_END_OF_DOCUMENT character: 0 modifiers: 0];
}
+-(void)scrollToEndOfDocument: (id)aSender
+{
+ // this is not exactly what we should do, but it makes "End" and "Shift-End" behave consistent
+ [self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::MOVE_TO_END_OF_DOCUMENT character: 0 modifiers: 0];
+}
+
-(void)moveToEndOfDocumentAndModifySelection: (id)aSender
{
[self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::SELECT_TO_END_OF_DOCUMENT character: 0 modifiers: 0];
@@ -1131,6 +1161,12 @@ private:
[self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::MOVE_TO_BEGIN_OF_DOCUMENT character: 0 modifiers: 0];
}
+-(void)scrollToBeginningOfDocument: (id)aSender
+{
+ // this is not exactly what we should do, but it makes "Home" and "Shift-Home" behave consistent
+ [self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::MOVE_TO_BEGIN_OF_DOCUMENT character: 0 modifiers: 0];
+}
+
-(void)moveToBeginningOfDocumentAndModifySelection: (id)aSender
{
[self sendKeyInputAndReleaseToFrame: com::sun::star::awt::Key::SELECT_TO_BEGIN_OF_DOCUMENT character: 0 modifiers: 0];
@@ -1328,11 +1364,32 @@ private:
{
mbNeedSpecialKeyHandle = true;
}
+
+ // FIXME:
+ // #i106901#
+ // if we come here outside of mbInKeyInput, this is likely to be because
+ // of the keyboard viewer. For unknown reasons having no marked range
+ // in this case causes a crash. So we say we have a marked range anyway
+ // This is a hack, since it is not understood what a) causes that crash
+ // and b) why we should have a marked range at this point.
+ if( ! mbInKeyInput )
+ bHasMarkedText = YES;
+
return bHasMarkedText;
}
- (NSRange)markedRange
{
+ // FIXME:
+ // #i106901#
+ // if we come here outside of mbInKeyInput, this is likely to be because
+ // of the keyboard viewer. For unknown reasons having no marked range
+ // in this case causes a crash. So we say we have a marked range anyway
+ // This is a hack, since it is not understood what a) causes that crash
+ // and b) why we should have a marked range at this point.
+ if( ! mbInKeyInput )
+ return NSMakeRange( 0, 0 );
+
return [self hasMarkedText] ? mMarkedRange : NSMakeRange( NSNotFound, 0 );
}
@@ -1437,6 +1494,9 @@ private:
{
if( AquaSalFrame::isAlive( mpFrame ) )
{
+ #if OSL_DEBUG_LEVEL > 1
+ // fprintf( stderr, "SalFrameView: doCommandBySelector %s\n", (char*)aSelector );
+ #endif
if( (mpFrame->mnICOptions & SAL_INPUTCONTEXT_TEXT) != 0 &&
aSelector != NULL && [self respondsToSelector: aSelector] )
{