]> git.saurik.com Git - wxWidgets.git/commitdiff
Inherit LoadFile and SaveFile from wxTextCtrlBase, reduce
authorMattia Barbon <mbarbon@cpan.org>
Sun, 30 Mar 2003 19:32:00 +0000 (19:32 +0000)
committerMattia Barbon <mbarbon@cpan.org>
Sun, 30 Mar 2003 19:32:00 +0000 (19:32 +0000)
flicker caused by SetValue (the text itself still flickers a
bit, but now borders don't).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19885 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/motif/textctrl.h
src/motif/textctrl.cpp

index 59d3510eb167f45251b96115d4a83a81501e3008..113a3f301c3e78685ad059479dea3b088547485a 100644 (file)
@@ -87,8 +87,6 @@ public:
     virtual void GetSelection(long* from, long* to) const;
     virtual bool IsEditable() const ;
     
-    virtual bool LoadFile(const wxString& file);
-    virtual bool SaveFile(const wxString& file);
     virtual void WriteText(const wxString& text);
     virtual void AppendText(const wxString& text);
     virtual void DiscardEdits();
index ced2808927541e99439d3178e16d5184003c72ae..26d60b18784f63e924c413f6c4e8463023a345da 100644 (file)
@@ -208,7 +208,8 @@ bool wxTextCtrl::Create(wxWindow *parent,
 
 WXWidget wxTextCtrl::GetTopWidget() const
 {
-    return ((m_windowStyle & wxTE_MULTILINE) ? (WXWidget) XtParent((Widget) m_mainWidget) : m_mainWidget);
+    return IsMultiLine() ? (WXWidget)XtParent((Widget)m_mainWidget)
+                         : m_mainWidget;
 }
 
 wxString wxTextCtrl::GetValue() const
@@ -249,9 +250,15 @@ void wxTextCtrl::SetValue(const wxString& value)
 
     // do this instead... MB
     //
+    // with (at least) OpenMotif 2.1 this causes a lot of flicker
+#if 0
     XtVaSetValues( (Widget) m_mainWidget,
                    XmNvalue, wxConstCast(value.c_str(), char),
                    NULL);
+#endif
+
+    Clear();
+    AppendText( value );
 
     m_inSetValue = FALSE;
 }
@@ -381,85 +388,6 @@ void wxTextCtrl::SetSelection(long from, long to)
                       (Time) 0);
 }
 
-bool wxTextCtrl::LoadFile(const wxString& file)
-{
-    if (!wxFileExists(file))
-        return FALSE;
-
-    m_fileName = file;
-
-    Clear();
-
-    Widget textWidget = (Widget) m_mainWidget;
-    FILE *fp = 0;
-
-    struct stat statb;
-    if ((stat (wxConstCast(file.c_str(), char), &statb) == -1) || (statb.st_mode & S_IFMT) != S_IFREG ||
-        !(fp = fopen (wxConstCast(file.c_str(), char), "r")))
-    {
-        return FALSE;
-    }
-    else
-    {
-        long len = statb.st_size;
-        char *text;
-        if (!(text = XtMalloc ((unsigned) (len + 1))))
-        {
-            fclose (fp);
-            return FALSE;
-        }
-        if (fread (text, sizeof (char), len, fp) != (size_t) len)
-        {
-        }
-        fclose (fp);
-
-        text[len] = 0;
-        XmTextSetString (textWidget, text);
-        //      m_textPosition = len;
-        XtFree (text);
-        m_modified = FALSE;
-        return TRUE;
-    }
-}
-
-// If file is null, try saved file name first
-// Returns TRUE if succeeds.
-bool wxTextCtrl::SaveFile(const wxString& file)
-{
-    wxString theFile(file);
-    if (theFile == "")
-        theFile = m_fileName;
-    if (theFile == "")
-        return FALSE;
-    m_fileName = theFile;
-
-    Widget textWidget = (Widget) m_mainWidget;
-    FILE *fp;
-
-    if (!(fp = fopen (wxConstCast(theFile.c_str(), char), "w")))
-    {
-        return FALSE;
-    }
-    else
-    {
-        char *text = XmTextGetString (textWidget);
-        long len = XmTextGetLastPosition (textWidget);
-
-        if (fwrite (text, sizeof (char), len, fp) != (size_t) len)
-        {
-            // Did not write whole file
-        }
-        // Make sure newline terminates the file
-        if (text[len - 1] != '\n')
-            fputc ('\n', fp);
-
-        fclose (fp);
-        XtFree (text);
-        m_modified = FALSE;
-        return TRUE;
-    }
-}
-
 void wxTextCtrl::WriteText(const wxString& text)
 {
     long textPosition = GetInsertionPoint() + strlen (text);
@@ -848,6 +776,9 @@ wxTextWindowModifyProc (Widget WXUNUSED(w), XtPointer clientData, XmTextVerifyCa
         }
     }
 
+    if(tw->InSetValue())
+        return;
+
     // If we're already within an OnChar, return: probably a programmatic
     // insertion.
     if (tw->m_tempCallbackStruct)