]> git.saurik.com Git - wxWidgets.git/commitdiff
working closer to proper MLTE support under OSX
authorStefan Csomor <csomor@advancedconcepts.ch>
Fri, 17 May 2002 12:20:15 +0000 (12:20 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Fri, 17 May 2002 12:20:15 +0000 (12:20 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/textctrl.cpp
src/mac/textctrl.cpp

index 9f92ee77bdeb38cfac25353c6eea87598850d111..4cdfae883ce9ffb06fadc02b05e0d6409d4187f5 100644 (file)
 #include "TextEncodingConverter.h"
 #include "wx/mac/uma.h"
 
-extern wxApp *wxTheApp ;
-// CS:We will replace the TextEdit by using the MultiLanguageTextEngine based on the following code written by apple
+#define wxMAC_USE_CARBON_EVENTS 0
 
-/*
-    File: mUPControl.c
-    
-    Description:
-        mUPControl implementation.
+extern wxApp *wxTheApp ;
 
-    Copyright:
-        © Copyright 2000 Apple Computer, Inc. All rights reserved.
-    
-    Disclaimer:
-        IMPORTANT:  This Apple software is supplied to you by Apple Computer, Inc.
-        ("Apple") in consideration of your agreement to the following terms, and your
-        use, installation, modification or redistribution of this Apple software
-        constitutes acceptance of these terms.  If you do not agree with these terms,
-        please do not use, install, modify or redistribute this Apple software.
-
-        In consideration of your agreement to abide by the following terms, and subject
-        to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs
-        copyrights in this original Apple software (the "Apple Software"), to use,
-        reproduce, modify and redistribute the Apple Software, with or without
-        modifications, in source and/or binary forms; provided that if you redistribute
-        the Apple Software in its entirety and without modifications, you must retain
-        this notice and the following text and disclaimers in all such redistributions of
-        the Apple Software.  Neither the name, trademarks, service marks or logos of
-        Apple Computer, Inc. may be used to endorse or promote products derived from the
-        Apple Software without specific prior written permission from Apple.  Except as
-        expressly stated in this notice, no other rights or licenses, express or implied,
-        are granted by Apple herein, including but not limited to any patent rights that
-        may be infringed by your derivative works or by other works in which the Apple
-        Software may be incorporated.
-
-        The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO
-        WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
-        WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-        PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
-        COMBINATION WITH YOUR PRODUCTS.
-
-        IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR
-        CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-        GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-        ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION
-        OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT
-        (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN
-        ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-    Change History (most recent first):
-        Fri, Jan 28, 2000 -- created
-*/
+// CS:TODO we still have a problem getting properly at the text events of a control because under Carbon
+// the MLTE engine registers itself for the key events thus the normal flow never occurs, the only measure for the
+// moment is to avoid setting the true focus on the control, the proper solution at the end would be to have
+// an alternate path for carbon key events that routes automatically into the same wx flow of events
 
 #include "MacTextEditor.h"
 
@@ -194,9 +151,11 @@ ControlUserPaneFocusUPP gTPFocusProc = NULL;
 
     /* events handled by our focus advance override routine */
 #if TARGET_CARBON
+#if wxMAC_USE_CARBON_EVENTS
 static const EventTypeSpec gMLTEEvents[] = { { kEventClassTextInput, kEventTextInputUnicodeForKeyEvent } };
 #define kMLTEEventCount (sizeof( gMLTEEvents ) / sizeof( EventTypeSpec ))
 #endif
+#endif
 
 
 /* TPActivatePaneText activates or deactivates the text edit record
@@ -210,9 +169,11 @@ static void TPActivatePaneText(STPTextPaneVars **tpvars, Boolean setActive) {
         varsp->fTEActive = setActive;
         
         TXNActivate(varsp->fTXNRec, varsp->fTXNFrame, varsp->fTEActive);
-        
+
+#if !TARGET_CARBON
         if (varsp->fInFocus)
             TXNFocus( varsp->fTXNRec, varsp->fTEActive);
+#endif
     }
 }
 
@@ -223,7 +184,9 @@ static void TPFocusPaneText(STPTextPaneVars **tpvars, Boolean setFocus) {
     varsp = *tpvars;
     if (varsp->fInFocus != setFocus) {
         varsp->fInFocus = setFocus;
+#if !TARGET_CARBON
         TXNFocus( varsp->fTXNRec, varsp->fInFocus);
+#endif
     }
 }
 
@@ -497,6 +460,7 @@ static pascal ControlPartCode TPPaneFocusProc(ControlHandle theControl, ControlF
 
 //This our carbon event handler for unicode key downs
 #if TARGET_CARBON
+#if wxMAC_USE_CARBON_EVENTS
 static pascal OSStatus FocusAdvanceOverride(EventHandlerCallRef myHandler, EventRef event, void* userData) {
     WindowRef window;
     STPTextPaneVars **tpvars;
@@ -527,6 +491,7 @@ bail:
        return eventNotHandledErr;
 }
 #endif
+#endif
 
 
 /* mUPOpenControl initializes a user pane control so it will be drawn
@@ -594,8 +559,12 @@ OSStatus mUPOpenControl(ControlHandle theControl, bool multiline)
 
         /* create the new edit field */
     TXNNewObject(NULL, varsp->fOwner, &varsp->fRTextArea,
-         ( multiline ? kTXNWantVScrollBarMask : 0 )
-                | kTXNAlwaysWrapAtViewEdgeMask,
+         ( multiline ? kTXNWantVScrollBarMask : 0 ) |
+#if !TARGET_CARBON
+           kTXNDontDrawCaretWhenInactiveMask |
+           kTXNDontDrawSelectionWhenInactiveMask |
+#endif
+                kTXNAlwaysWrapAtViewEdgeMask,
         kTXNTextEditStyleFrameType,
         kTXNTextensionFile,
         kTXNSystemDefaultEncoding, 
@@ -624,9 +593,11 @@ OSStatus mUPOpenControl(ControlHandle theControl, bool multiline)
 
         /* install our focus advance override routine */
 #if TARGET_CARBON
+#if wxMAC_USE_CARBON_EVENTS
     varsp->handlerUPP = NewEventHandlerUPP(FocusAdvanceOverride);
     err = InstallWindowEventHandler( varsp->fOwner, varsp->handlerUPP,
         kMLTEEventCount, gMLTEEvents, tpvars, &varsp->handlerRef );
+#endif
 #endif
                
         /* unlock our storage */
@@ -678,10 +649,12 @@ wxTextCtrl::~wxTextCtrl()
         SetControlReference((ControlHandle)m_macControl, 0) ;
         TXNDeleteObject((TXNObject)m_macTXN);
     #if TARGET_CARBON
+#if wxMAC_USE_CARBON_EVENTS
             /* remove our focus advance override */
         ::RemoveEventHandler((**(STPTextPaneVars **) m_macTXNvars).handlerRef);
         ::DisposeEventHandlerUPP((**(STPTextPaneVars **) m_macTXNvars).handlerUPP);
     #endif
+#endif
         /* delete our private storage */
         DisposeHandle((Handle) m_macTXNvars);
         /* zero the control reference */
index 9f92ee77bdeb38cfac25353c6eea87598850d111..4cdfae883ce9ffb06fadc02b05e0d6409d4187f5 100644 (file)
 #include "TextEncodingConverter.h"
 #include "wx/mac/uma.h"
 
-extern wxApp *wxTheApp ;
-// CS:We will replace the TextEdit by using the MultiLanguageTextEngine based on the following code written by apple
+#define wxMAC_USE_CARBON_EVENTS 0
 
-/*
-    File: mUPControl.c
-    
-    Description:
-        mUPControl implementation.
+extern wxApp *wxTheApp ;
 
-    Copyright:
-        © Copyright 2000 Apple Computer, Inc. All rights reserved.
-    
-    Disclaimer:
-        IMPORTANT:  This Apple software is supplied to you by Apple Computer, Inc.
-        ("Apple") in consideration of your agreement to the following terms, and your
-        use, installation, modification or redistribution of this Apple software
-        constitutes acceptance of these terms.  If you do not agree with these terms,
-        please do not use, install, modify or redistribute this Apple software.
-
-        In consideration of your agreement to abide by the following terms, and subject
-        to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs
-        copyrights in this original Apple software (the "Apple Software"), to use,
-        reproduce, modify and redistribute the Apple Software, with or without
-        modifications, in source and/or binary forms; provided that if you redistribute
-        the Apple Software in its entirety and without modifications, you must retain
-        this notice and the following text and disclaimers in all such redistributions of
-        the Apple Software.  Neither the name, trademarks, service marks or logos of
-        Apple Computer, Inc. may be used to endorse or promote products derived from the
-        Apple Software without specific prior written permission from Apple.  Except as
-        expressly stated in this notice, no other rights or licenses, express or implied,
-        are granted by Apple herein, including but not limited to any patent rights that
-        may be infringed by your derivative works or by other works in which the Apple
-        Software may be incorporated.
-
-        The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO
-        WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
-        WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-        PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
-        COMBINATION WITH YOUR PRODUCTS.
-
-        IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR
-        CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-        GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-        ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION
-        OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT
-        (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN
-        ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-    Change History (most recent first):
-        Fri, Jan 28, 2000 -- created
-*/
+// CS:TODO we still have a problem getting properly at the text events of a control because under Carbon
+// the MLTE engine registers itself for the key events thus the normal flow never occurs, the only measure for the
+// moment is to avoid setting the true focus on the control, the proper solution at the end would be to have
+// an alternate path for carbon key events that routes automatically into the same wx flow of events
 
 #include "MacTextEditor.h"
 
@@ -194,9 +151,11 @@ ControlUserPaneFocusUPP gTPFocusProc = NULL;
 
     /* events handled by our focus advance override routine */
 #if TARGET_CARBON
+#if wxMAC_USE_CARBON_EVENTS
 static const EventTypeSpec gMLTEEvents[] = { { kEventClassTextInput, kEventTextInputUnicodeForKeyEvent } };
 #define kMLTEEventCount (sizeof( gMLTEEvents ) / sizeof( EventTypeSpec ))
 #endif
+#endif
 
 
 /* TPActivatePaneText activates or deactivates the text edit record
@@ -210,9 +169,11 @@ static void TPActivatePaneText(STPTextPaneVars **tpvars, Boolean setActive) {
         varsp->fTEActive = setActive;
         
         TXNActivate(varsp->fTXNRec, varsp->fTXNFrame, varsp->fTEActive);
-        
+
+#if !TARGET_CARBON
         if (varsp->fInFocus)
             TXNFocus( varsp->fTXNRec, varsp->fTEActive);
+#endif
     }
 }
 
@@ -223,7 +184,9 @@ static void TPFocusPaneText(STPTextPaneVars **tpvars, Boolean setFocus) {
     varsp = *tpvars;
     if (varsp->fInFocus != setFocus) {
         varsp->fInFocus = setFocus;
+#if !TARGET_CARBON
         TXNFocus( varsp->fTXNRec, varsp->fInFocus);
+#endif
     }
 }
 
@@ -497,6 +460,7 @@ static pascal ControlPartCode TPPaneFocusProc(ControlHandle theControl, ControlF
 
 //This our carbon event handler for unicode key downs
 #if TARGET_CARBON
+#if wxMAC_USE_CARBON_EVENTS
 static pascal OSStatus FocusAdvanceOverride(EventHandlerCallRef myHandler, EventRef event, void* userData) {
     WindowRef window;
     STPTextPaneVars **tpvars;
@@ -527,6 +491,7 @@ bail:
        return eventNotHandledErr;
 }
 #endif
+#endif
 
 
 /* mUPOpenControl initializes a user pane control so it will be drawn
@@ -594,8 +559,12 @@ OSStatus mUPOpenControl(ControlHandle theControl, bool multiline)
 
         /* create the new edit field */
     TXNNewObject(NULL, varsp->fOwner, &varsp->fRTextArea,
-         ( multiline ? kTXNWantVScrollBarMask : 0 )
-                | kTXNAlwaysWrapAtViewEdgeMask,
+         ( multiline ? kTXNWantVScrollBarMask : 0 ) |
+#if !TARGET_CARBON
+           kTXNDontDrawCaretWhenInactiveMask |
+           kTXNDontDrawSelectionWhenInactiveMask |
+#endif
+                kTXNAlwaysWrapAtViewEdgeMask,
         kTXNTextEditStyleFrameType,
         kTXNTextensionFile,
         kTXNSystemDefaultEncoding, 
@@ -624,9 +593,11 @@ OSStatus mUPOpenControl(ControlHandle theControl, bool multiline)
 
         /* install our focus advance override routine */
 #if TARGET_CARBON
+#if wxMAC_USE_CARBON_EVENTS
     varsp->handlerUPP = NewEventHandlerUPP(FocusAdvanceOverride);
     err = InstallWindowEventHandler( varsp->fOwner, varsp->handlerUPP,
         kMLTEEventCount, gMLTEEvents, tpvars, &varsp->handlerRef );
+#endif
 #endif
                
         /* unlock our storage */
@@ -678,10 +649,12 @@ wxTextCtrl::~wxTextCtrl()
         SetControlReference((ControlHandle)m_macControl, 0) ;
         TXNDeleteObject((TXNObject)m_macTXN);
     #if TARGET_CARBON
+#if wxMAC_USE_CARBON_EVENTS
             /* remove our focus advance override */
         ::RemoveEventHandler((**(STPTextPaneVars **) m_macTXNvars).handlerRef);
         ::DisposeEventHandlerUPP((**(STPTextPaneVars **) m_macTXNvars).handlerUPP);
     #endif
+#endif
         /* delete our private storage */
         DisposeHandle((Handle) m_macTXNvars);
         /* zero the control reference */