From 7547d64ec0fce0faac0488765316f235b4b760a5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 9 Jun 1999 13:21:28 +0000 Subject: [PATCH] wxLayoutStyleInfo ctor doesn't set all fields to -1 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2726 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/richedit/wxllist.cpp | 30 +++++++++++++++++++++++------- samples/richedit/wxllist.h | 30 +++++++++++++++++------------- samples/richedit/wxlwindow.cpp | 3 +-- 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/samples/richedit/wxllist.cpp b/samples/richedit/wxllist.cpp index cbec218f8e..8d469dc967 100644 --- a/samples/richedit/wxllist.cpp +++ b/samples/richedit/wxllist.cpp @@ -1772,22 +1772,38 @@ wxLayoutList::MoveCursorWord(int n) wxLayoutObject *obj = *i; if( obj->GetType() != WXLO_TYPE_TEXT ) { - // any non text objects count as one word - n > 0 ? n-- : n++; + // any visible non text objects count as one word + if ( obj->IsVisibleObject() ) + { + n > 0 ? n-- : n++; - moveDistance += obj->GetLength(); + moveDistance += obj->GetLength(); + } } - else + else // text object { - // text object wxLayoutObjectText *tobj = (wxLayoutObjectText *)obj; + bool canAdvance = true; + if ( offset == tobj->GetLength() ) { // at end of object - n > 0 ? n-- : n++; + if ( n > 0 ) + { + // can't move further in this text object + n--; + + canAdvance = false; + } + else if ( offset > 0 ) + { + // offset is off by 1, make it a valid index + offset--; + } } - else + + if ( canAdvance ) { const char *start = tobj->GetText().c_str(); const char *p = start + offset; diff --git a/samples/richedit/wxllist.h b/samples/richedit/wxllist.h index 552c2551b0..bf784d0db5 100644 --- a/samples/richedit/wxllist.h +++ b/samples/richedit/wxllist.h @@ -203,6 +203,10 @@ public: */ static wxLayoutObject *Read(wxString &istr); //@} + + /// returns TRUE if the object is shown on the screen (i.e. not cmd object) + bool IsVisibleObject() const { return GetType() != WXLO_TYPE_CMD; } + protected: /// optional data for application's use UserData *m_UserData; @@ -214,7 +218,7 @@ KBLIST_DEFINE(wxLayoutObjectList, wxLayoutObject); /// An illegal iterator to save typing. #define NULLIT (wxLayoutObjectList::iterator(NULL)) /// The iterator type. -#define wxLOiterator wxLayoutObjectList::iterator +typedef wxLayoutObjectList::iterator wxLOiterator; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * @@ -316,23 +320,21 @@ private: wxBitmap *m_Icon; }; -/** This structure holds all formatting information. Members which are - undefined (for a CmdObject this means: no change), are set to -1. +/** This structure holds all formatting information. */ struct wxLayoutStyleInfo { - wxLayoutStyleInfo(int ifamily = -1, - int isize = -1, - int istyle = -1, - int iweight = -1, - int iul = -1, + wxLayoutStyleInfo(int ifamily = wxDEFAULT, + int isize = WXLO_DEFAULTFONTSIZE, + int istyle = wxNORMAL, + int iweight = wxNORMAL, + int iul = FALSE, wxColour *fg = NULL, wxColour *bg = NULL); - wxColour & GetBGColour() - { - return m_bg; - } wxLayoutStyleInfo & operator=(const wxLayoutStyleInfo &right); + + wxColour & GetBGColour() { return m_bg; } + /// Font change parameters. int size, family, style, weight, underline; /// Colours @@ -340,7 +342,7 @@ struct wxLayoutStyleInfo int m_fg_valid, m_bg_valid; // bool, but must be int! }; - +/// a cached font class wxFontCacheEntry { public: @@ -366,6 +368,8 @@ public: } private: wxFont *m_Font; + + // VZ: I wonder why it doesn't use wxLayoutStyleInfo instead of those? int m_Family, m_Size, m_Style, m_Weight; bool m_Underline; }; diff --git a/samples/richedit/wxlwindow.cpp b/samples/richedit/wxlwindow.cpp index 44a575d665..98239d5184 100644 --- a/samples/richedit/wxlwindow.cpp +++ b/samples/richedit/wxlwindow.cpp @@ -633,10 +633,9 @@ wxLayoutWindow::OnPaint( wxPaintEvent &WXUNUSED(event)) void wxLayoutWindow::DoPaint(const wxRect *updateRect) { - // Causes bad flicker under wxGTK!!! #ifdef __WXGTK__ InternalPaint(updateRect); -#else +#else // Causes bad flicker under wxGTK!!! Refresh(FALSE); //, updateRect); if ( !::UpdateWindow(GetHwnd()) ) -- 2.45.2