X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fc7a2a602b4bd9308be21bc07e40a680f483438e..b081046a6646bba07fb953adb06ebfe8ffffc3f7:/src/common/textcmn.cpp?ds=sidebyside diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp index 5b8d40343e..1b2b1f1532 100644 --- a/src/common/textcmn.cpp +++ b/src/common/textcmn.cpp @@ -5,7 +5,7 @@ // Modified by: // Created: 13.07.99 // RCS-ID: $Id$ -// Copyright: (c) wxWindows team +// Copyright: (c) wxWidgets team // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -13,7 +13,7 @@ // declarations // ============================================================================ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "textctrlbase.h" #endif @@ -77,6 +77,7 @@ wxTextAttr::wxTextAttr(const wxColour& colText, { m_flags = 0; m_leftIndent = 0; + m_leftSubIndent = 0; m_rightIndent = 0; if (m_colText.Ok()) m_flags |= wxTEXT_ATTR_TEXT_COLOUR; if (m_colBack.Ok()) m_flags |= wxTEXT_ATTR_BACKGROUND_COLOUR; @@ -90,6 +91,7 @@ void wxTextAttr::Init() m_textAlignment = wxTEXT_ALIGNMENT_DEFAULT; m_flags = 0; m_leftIndent = 0; + m_leftSubIndent = 0; m_rightIndent = 0; } @@ -138,9 +140,9 @@ wxTextAttr wxTextAttr::Combine(const wxTextAttr& attr, newAttr.SetTabs(attrDef.GetTabs()); if (attr.HasLeftIndent()) - newAttr.SetLeftIndent(attr.GetLeftIndent()); + newAttr.SetLeftIndent(attr.GetLeftIndent(), attr.GetLeftSubIndent()); else if (attrDef.HasLeftIndent()) - newAttr.SetLeftIndent(attrDef.GetLeftIndent()); + newAttr.SetLeftIndent(attrDef.GetLeftIndent(), attr.GetLeftSubIndent()); if (attr.HasRightIndent()) newAttr.SetRightIndent(attr.GetRightIndent()); @@ -157,6 +159,7 @@ void wxTextAttr::operator= (const wxTextAttr& attr) m_colBack = attr.m_colBack; m_textAlignment = attr.m_textAlignment; m_leftIndent = attr.m_leftIndent; + m_leftSubIndent = attr.m_leftSubIndent; m_rightIndent = attr.m_rightIndent; m_tabs = attr.m_tabs; m_flags = attr.m_flags; @@ -230,7 +233,7 @@ bool wxTextCtrlBase::LoadFile(const wxString& filename) bool wxTextCtrlBase::SaveFile(const wxString& filename) { wxString filenameToUse = filename.IsEmpty() ? m_filename : filename; - if ( !filenameToUse ) + if ( filenameToUse.empty() ) { // what kind of message to give? is it an error or a program bug? wxLogDebug(wxT("Can't save textctrl to file without filename.")); @@ -239,19 +242,20 @@ bool wxTextCtrlBase::SaveFile(const wxString& filename) } #if wxUSE_FFILE - wxFFile file(filename, _T("w")); + wxFFile file(filenameToUse, _T("w")); if ( file.IsOpened() && file.Write(GetValue()) ) { // it's not modified any longer DiscardEdits(); - m_filename = filename; + // if it worked, save for future calls + m_filename = filenameToUse; return TRUE; } +#endif // wxUSE_FFILE wxLogError(_("The text couldn't be saved.")); -#endif // wxUSE_FFILE return FALSE; } @@ -347,10 +351,15 @@ bool wxTextCtrlBase::CanPaste() const // emulating key presses // ---------------------------------------------------------------------------- +#ifdef __WIN32__ +// the generic version is unused in wxMSW +bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& WXUNUSED(event)) +{ + return FALSE; +} +#else // !__WIN32__ bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& event) { - // the generic version is unused in wxMSW -#ifndef __WIN32__ wxChar ch = 0; int keycode = event.GetKeyCode(); switch ( keycode ) @@ -436,12 +445,10 @@ bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& event) return TRUE; } -#else - event; -#endif // !__WIN32__ return FALSE; } +#endif // !__WIN32__ // ---------------------------------------------------------------------------- // selection and ranges @@ -484,6 +491,34 @@ void wxTextCtrlBase::DoUpdateWindowUI(wxUpdateUIEvent& event) } } +// ---------------------------------------------------------------------------- +// hit testing +// ---------------------------------------------------------------------------- + +wxTextCtrlHitTestResult +wxTextCtrlBase::HitTest(const wxPoint& pt, wxTextCoord *x, wxTextCoord *y) const +{ + // implement in terms of the other overload as the native ports typically + // can get the position and not (x, y) pair directly (although wxUniv + // directly gets x and y -- and so overrides this method as well) + long pos; + wxTextCtrlHitTestResult rc = HitTest(pt, &pos); + + if ( rc != wxTE_HT_UNKNOWN ) + { + PositionToXY(pos, x, y); + } + + return rc; +} + +wxTextCtrlHitTestResult +wxTextCtrlBase::HitTest(const wxPoint& WXUNUSED(pt), + long * WXUNUSED(pos)) const +{ + // not implemented + return wxTE_HT_UNKNOWN; +} #else // !wxUSE_TEXTCTRL