From 7ea087b7218956709b57731228736126114411b9 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Tue, 20 Jul 2004 16:40:49 +0000 Subject: [PATCH] background handling git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28333 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/mac/carbon/private.h | 1 + include/wx/mac/carbon/textctrl.h | 2 ++ include/wx/mac/carbon/window.h | 2 +- src/mac/carbon/textctrl.cpp | 24 +++++++++++++++++++++--- src/mac/carbon/utils.cpp | 6 ++++++ src/mac/carbon/window.cpp | 7 +++++-- 6 files changed, 36 insertions(+), 6 deletions(-) diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index 0d84f0ee92..1dccf0e3d6 100644 --- a/include/wx/mac/carbon/private.h +++ b/include/wx/mac/carbon/private.h @@ -407,6 +407,7 @@ public : virtual void Flash( ControlPartCode part , UInt32 ticks = 8 ) ; virtual void VisibilityChanged( bool shown ) ; virtual void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle ) ; + virtual void SetBackground( const wxBrush &brush ) ; virtual ControlPartCode HandleKey( SInt16 keyCode, SInt16 charCode, EventModifiers modifiers ) ; void SetActionProc( ControlActionUPP actionProc ) ; void SetViewSize( SInt32 viewSize ) ; diff --git a/include/wx/mac/carbon/textctrl.h b/include/wx/mac/carbon/textctrl.h index b3bb9905e0..109fbf394e 100644 --- a/include/wx/mac/carbon/textctrl.h +++ b/include/wx/mac/carbon/textctrl.h @@ -155,6 +155,8 @@ public: void OnUpdatePaste(wxUpdateUIEvent& event); void OnUpdateUndo(wxUpdateUIEvent& event); void OnUpdateRedo(wxUpdateUIEvent& event); + + void OnEraseBackground(wxEraseEvent& event) ; virtual bool MacCanFocus() const { return true ; } virtual bool MacSetupCursor( const wxPoint& pt ) ; diff --git a/include/wx/mac/carbon/window.h b/include/wx/mac/carbon/window.h index 26ec619fdb..01b5e495d4 100644 --- a/include/wx/mac/carbon/window.h +++ b/include/wx/mac/carbon/window.h @@ -195,7 +195,7 @@ public: virtual void Update() ; virtual bool MacSetupCursor( const wxPoint& pt ) ; - virtual void MacSetBackgroundBrush( const wxBrush &brush ) { m_macBackgroundBrush = brush ; } + virtual void MacSetBackgroundBrush( const wxBrush &brush ) ; const wxBrush& MacGetBackgroundBrush() const { return m_macBackgroundBrush ; } // returns the visible region of this control in window ie non-client coordinates diff --git a/src/mac/carbon/textctrl.cpp b/src/mac/carbon/textctrl.cpp index 73b7aa5dc0..4843c777c1 100644 --- a/src/mac/carbon/textctrl.cpp +++ b/src/mac/carbon/textctrl.cpp @@ -204,6 +204,7 @@ public : void AdjustCreationAttributes( const wxColour& background , bool visible ) ; virtual void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle ) ; + virtual void SetBackground( const wxBrush &brush) ; virtual void SetStyle(long start, long end, const wxTextAttr& style) ; virtual void Copy() ; virtual void Cut() ; @@ -312,6 +313,7 @@ public : IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) + EVT_ERASE_BACKGROUND( wxTextCtrl::OnEraseBackground ) EVT_DROP_FILES(wxTextCtrl::OnDropFiles) EVT_CHAR(wxTextCtrl::OnChar) EVT_MENU(wxID_CUT, wxTextCtrl::OnCut) @@ -758,6 +760,14 @@ void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event) } } +void wxTextCtrl::OnEraseBackground(wxEraseEvent& event) +{ + // all erasing should be done by the real mac control implementation + // while this is true for MLTE under classic, the HITextView is somehow + // transparent but background erase is not working correctly, so intercept + // things while we can... +} + void wxTextCtrl::OnChar(wxKeyEvent& event) { int key = event.GetKeyCode() ; @@ -1252,7 +1262,7 @@ void wxMacUnicodeTextControl::WriteText(const wxString& str) val.Remove( start , end - start ) ; val.insert( start , str ) ; SetStringValue( val ) ; - SetInsertionPoint( start + str.Length() ) ; + SetSelection( start + str.Length() , start + str.Length() ) ; #endif } @@ -1463,6 +1473,15 @@ void wxMacMLTEControl::AdjustCreationAttributes( const wxColour &background, boo TXNSetBackground( m_txn , &tback); } +void wxMacMLTEControl::SetBackground( const wxBrush &brush ) +{ + // currently only solid background are supported + TXNBackground tback; + tback.bgType = kTXNBackgroundTypeRGB; + tback.bg.color = MAC_WXCOLORREF( brush.GetColour().GetPixel() ); + TXNSetBackground( m_txn , &tback); +} + int wxMacMLTEControl::ConvertAttribute( const wxTextAttr& style , TXNTypeAttributes typeAttr[] ) { Str255 fontName = "\pMonaco" ; @@ -1492,7 +1511,6 @@ int wxMacMLTEControl::ConvertAttribute( const wxTextAttr& style , TXNTypeAttribu typeAttr[attrCounter+2].size = kTXNQDFontStyleAttributeSize ; typeAttr[attrCounter+2].data.dataValue = fontStyle ; attrCounter += 3 ; - } if ( style.HasTextColour() ) { @@ -1508,7 +1526,7 @@ int wxMacMLTEControl::ConvertAttribute( const wxTextAttr& style , TXNTypeAttribu void wxMacMLTEControl::SetFont( const wxFont & font , const wxColour& foreground , long windowStyle ) { EditHelper help(m_txn) ; - wxTextAttr style(wxNullColour,wxNullColour,font) ; + wxTextAttr style(foreground,wxNullColour,font) ; TXNTypeAttributes typeAttr[4] ; int attrCounter = ConvertAttribute( style , typeAttr ) ; if ( attrCounter > 0 ) diff --git a/src/mac/carbon/utils.cpp b/src/mac/carbon/utils.cpp index cc1caf7c10..f9b1d82641 100644 --- a/src/mac/carbon/utils.cpp +++ b/src/mac/carbon/utils.cpp @@ -1597,6 +1597,12 @@ void wxMacControl::SetFont( const wxFont & font , const wxColour& foreground , l ::SetControlFontStyle( m_controlRef , &fontStyle ); } +void wxMacControl::SetBackground( const wxBrush &WXUNUSED(brush) ) +{ + // TODO + // setting up a color proc is not recommended anymore +} + void wxMacControl::SetRange( SInt32 minimum , SInt32 maximum ) { ::SetControl32BitMinimum( m_controlRef , minimum ) ; diff --git a/src/mac/carbon/window.cpp b/src/mac/carbon/window.cpp index 9d20d9a04c..0c6d1dbc37 100644 --- a/src/mac/carbon/window.cpp +++ b/src/mac/carbon/window.cpp @@ -889,11 +889,14 @@ bool wxWindowMac::SetBackgroundColour(const wxColour& col ) } MacSetBackgroundBrush( brush ) ; - MacUpdateControlFont() ; - return true ; } +void wxWindowMac::MacSetBackgroundBrush( const wxBrush &brush ) +{ + m_macBackgroundBrush = brush ; + m_peer->SetBackground( brush ) ; +} bool wxWindowMac::MacCanFocus() const { -- 2.45.2