X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b14cd77b2aa34263c617a5d51e8ea2e1e2c11526..496dbbe76e6bc7b36c30494b81bec05f49fc2d06:/src/common/textcmn.cpp?ds=sidebyside diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp index 402037e1e1..473de1178f 100644 --- a/src/common/textcmn.cpp +++ b/src/common/textcmn.cpp @@ -188,9 +188,11 @@ bool wxTextAttr::operator== (const wxTextAttr& attr) const GetURL() == attr.GetURL(); } -// Partial equality test taking flags into account -bool wxTextAttr::EqPartial(const wxTextAttr& attr, int flags) const +// Partial equality test. Only returns false if an attribute doesn't match. +bool wxTextAttr::EqPartial(const wxTextAttr& attr) const { + int flags = attr.GetFlags(); + if ((flags & wxTEXT_ATTR_TEXT_COLOUR) && GetTextColour() != attr.GetTextColour()) return false; @@ -333,7 +335,7 @@ wxFont wxTextAttr::GetFont() const if (HasFontEncoding()) encoding = GetFontEncoding(); - int fontFamily = wxFONTFAMILY_DEFAULT; + wxFontFamily fontFamily = wxFONTFAMILY_DEFAULT; if (HasFontFamily()) fontFamily = GetFontFamily(); @@ -366,7 +368,16 @@ bool wxTextAttr::GetFontAttributes(const wxFont& font, int flags) m_fontEncoding = font.GetEncoding(); if (flags & wxTEXT_ATTR_FONT_FAMILY) - m_fontFamily = font.GetFamily(); + { + // wxFont might not know its family, avoid setting m_fontFamily to an + // invalid value and rather pretend that we don't have any font family + // information at all in this case + const wxFontFamily fontFamily = font.GetFamily(); + if ( fontFamily == wxFONTFAMILY_UNKNOWN ) + flags &= ~wxTEXT_ATTR_FONT_FAMILY; + else + m_fontFamily = fontFamily; + } m_flags |= flags; @@ -736,7 +747,7 @@ bool wxTextCtrlBase::SetDefaultStyle(const wxTextAttr& style) // file IO functions // ---------------------------------------------------------------------------- -bool wxTextCtrlBase::DoLoadFile(const wxString& filename, int WXUNUSED(fileType)) +bool wxTextAreaBase::DoLoadFile(const wxString& filename, int WXUNUSED(fileType)) { #if wxUSE_FFILE wxFFile file(filename); @@ -745,20 +756,36 @@ bool wxTextCtrlBase::DoLoadFile(const wxString& filename, int WXUNUSED(fileType) wxString text; if ( file.ReadAll(&text) ) { - ChangeValue(text); - - DiscardEdits(); - - m_filename = filename; + SetValue(text); return true; } } +#endif // wxUSE_FFILE + return false; +} + +bool wxTextCtrlBase::DoLoadFile(const wxString& filename, int fileType) +{ + if ( wxTextAreaBase::DoLoadFile(filename, fileType) ) + { + DiscardEdits(); + m_filename = filename; + return true; + } wxLogError(_("File couldn't be loaded.")); -#endif // wxUSE_FFILE + return false; +} +bool wxTextAreaBase::DoSaveFile(const wxString& filename, int WXUNUSED(fileType)) +{ +#if wxUSE_FFILE + wxFFile file(filename, wxT("w")); + return file.IsOpened() && file.Write(GetValue(), *wxConvCurrent); +#else return false; +#endif // wxUSE_FFILE } bool wxTextAreaBase::SaveFile(const wxString& filename, int fileType) @@ -775,11 +802,9 @@ bool wxTextAreaBase::SaveFile(const wxString& filename, int fileType) return DoSaveFile(filenameToUse, fileType); } -bool wxTextCtrlBase::DoSaveFile(const wxString& filename, int WXUNUSED(fileType)) +bool wxTextCtrlBase::DoSaveFile(const wxString& filename, int fileType) { -#if wxUSE_FFILE - wxFFile file(filename, wxT("w")); - if ( file.IsOpened() && file.Write(GetValue()) ) + if ( wxTextAreaBase::DoSaveFile(filename, fileType) ) { // if it worked, save for future calls m_filename = filename; @@ -789,10 +814,6 @@ bool wxTextCtrlBase::DoSaveFile(const wxString& filename, int WXUNUSED(fileType) return true; } -#endif // wxUSE_FFILE - - wxLogError(_("The text couldn't be saved.")); - return false; } @@ -987,25 +1008,6 @@ wxTextAreaBase::HitTest(const wxPoint& WXUNUSED(pt), long * WXUNUSED(pos)) const return wxTE_HT_UNKNOWN; } -// ---------------------------------------------------------------------------- -// events -// ---------------------------------------------------------------------------- - -/* static */ -bool wxTextCtrlBase::SendTextUpdatedEvent(wxWindow *win) -{ - wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, win->GetId()); - - // do not do this as it could be very inefficient if the text control - // contains a lot of text and we're not using ref-counted wxString - // implementation -- instead, event.GetString() will query the control for - // its current text if needed - //event.SetString(win->GetValue()); - - event.SetEventObject(win); - return win->GetEventHandler()->ProcessEvent(event); -} - #else // !wxUSE_TEXTCTRL // define this one even if !wxUSE_TEXTCTRL because it is also used by other