]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/textcmn.cpp
call event.Enable(true) in OnUpdateFileOpen and OnUpdateFileNew only if there are...
[wxWidgets.git] / src / common / textcmn.cpp
index 8bc1d2775432aef5908122e6b8a93a9a1547fe0a..1df66feccb44b437bc6d08ecc6cf5ad1ac8a8935 100644 (file)
 
 IMPLEMENT_DYNAMIC_CLASS(wxTextUrlEvent, wxCommandEvent)
 
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_TEXT_UPDATED)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_TEXT_ENTER)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_TEXT_URL)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_TEXT_MAXLEN)
+wxDEFINE_EVENT( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEvent )
+wxDEFINE_EVENT( wxEVT_COMMAND_TEXT_ENTER, wxCommandEvent )
+wxDEFINE_EVENT( wxEVT_COMMAND_TEXT_URL, wxTextUrlEvent )
+wxDEFINE_EVENT( wxEVT_COMMAND_TEXT_MAXLEN, wxCommandEvent )
 
 IMPLEMENT_ABSTRACT_CLASS(wxTextCtrlBase, wxControl)
 
@@ -362,6 +362,18 @@ bool wxTextAttr::GetFontAttributes(const wxFont& font, int flags)
     return true;
 }
 
+// Resets bits in destination so new attributes aren't merged with mutually exclusive ones
+static bool wxResetIncompatibleBits(const int mask, const int srcFlags, int& destFlags, int& destBits)
+{
+    if ((srcFlags & mask) && (destFlags & mask))
+    {
+        destBits &= ~mask;
+        destFlags &= ~mask;
+    }
+
+    return true;
+}
+
 bool wxTextAttr::Apply(const wxTextAttr& style, const wxTextAttr* compareWith)
 {
     wxTextAttr& destStyle = (*this);
@@ -524,6 +536,11 @@ bool wxTextAttr::Apply(const wxTextAttr& style, const wxTextAttr* compareWith)
             int srcBits = style.GetTextEffects();
             int srcFlags = style.GetTextEffectFlags();
 
+            // Reset incompatible bits in the destination
+            wxResetIncompatibleBits((wxTEXT_ATTR_EFFECT_SUPERSCRIPT|wxTEXT_ATTR_EFFECT_SUBSCRIPT), srcFlags, destFlags, destBits);
+            wxResetIncompatibleBits((wxTEXT_ATTR_EFFECT_CAPITALS|wxTEXT_ATTR_EFFECT_SMALL_CAPITALS), srcFlags, destFlags, destBits);
+            wxResetIncompatibleBits((wxTEXT_ATTR_EFFECT_STRIKETHROUGH|wxTEXT_ATTR_EFFECT_DOUBLE_STRIKETHROUGH), srcFlags, destFlags, destBits);
+
             CombineBitlists(destBits, srcBits, destFlags, srcFlags);
 
             destStyle.SetTextEffects(destBits);
@@ -977,6 +994,6 @@ bool wxTextCtrlBase::SendTextUpdatedEvent(wxWindow *win)
 // define this one even if !wxUSE_TEXTCTRL because it is also used by other
 // controls (wxComboBox and wxSpinCtrl)
 
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_TEXT_UPDATED)
+wxDEFINE_EVENT( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEvent )
 
 #endif // wxUSE_TEXTCTRL/!wxUSE_TEXTCTRL