From ad813b00d5956f35f2b1585a276095e24ce8ad5a Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Wed, 24 Feb 1999 08:02:28 +0000 Subject: [PATCH] Some stubs corrections; Motif corrections incl. busy cursor fix; doc corrections git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1775 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/html/faqmsw.htm | 20 ++++++++++++++++++++ docs/latex/wx/document.tex | 6 +++--- docs/latex/wx/tokenizr.tex | 12 ++++++------ docs/latex/wx/window.tex | 2 ++ docs/motif/install.txt | 14 ++++++++++++++ docs/msw/install.txt | 7 +++++++ include/wx/motif/frame.h | 1 - include/wx/motif/mdi.h | 2 +- include/wx/motif/setup.h | 3 +++ include/wx/stubs/filedlg.h | 18 ++++++++++++++++++ include/wx/stubs/setup.h | 6 ++++++ include/wx/tokenzr.h | 3 +++ samples/docview/doc.cpp | 2 +- samples/docview/docview.cpp | 2 +- samples/docview/view.cpp | 2 +- samples/docvwmdi/doc.cpp | 2 +- samples/docvwmdi/docview.cpp | 2 +- samples/docvwmdi/view.cpp | 2 +- samples/layout/layout.cpp | 2 +- samples/printing/printing.cpp | 2 +- src/generic/panelg.cpp | 2 +- src/motif/dialog.cpp | 5 +++++ src/motif/utils.cpp | 3 +++ src/motif/window.cpp | 14 ++++++++++---- src/stubs/filedlg.cpp | 2 +- src/stubs/makefile.unx | 2 +- src/stubs/thread.cpp | 4 ++++ 27 files changed, 116 insertions(+), 26 deletions(-) diff --git a/docs/html/faqmsw.htm b/docs/html/faqmsw.htm index b373e725de..984a87f3fc 100644 --- a/docs/html/faqmsw.htm +++ b/docs/html/faqmsw.htm @@ -146,6 +146,26 @@ There is a sample which demonstrates MFC and wxWindows code co-existing in the s application. However, don't expect to be able to enable wxWindows windows with OLE-2 functionality using MFC.

+

Why do I sometimes get bizarre crash problems using VC++ 5/6?

+ +Some crash problems can be due to inconsistent compiler +options (and of course this isn't limited to wxWindows). +If strange/weird/impossible things start to happen please +check (dumping IDE project file as makefile and doing text comparison +if necessary) that the project settings, especially the list of defined +symbols, struct packing, etc. are exactly the same for all items in +the project. After this, delete everything (including PCH) and recompile.

+ +VC++ 5's optimization code seems to be broken and can +cause problems: this can be seen when deleting an object Dialog +Editor, in Release mode with optimizations on. If in doubt, +switch off optimisations, although this will result in much +larger executables. It seems possible that the library can be created with +strong optimization, so long as the application is not strongly +optimized. For example, in wxWindows project, set to 'Minimum +Size'. In Dialog Editor project, set to 'Customize: Favor Small +Code' (and no others). This will then work.

+ diff --git a/docs/latex/wx/document.tex b/docs/latex/wx/document.tex index fc50326630..4affd5ade7 100644 --- a/docs/latex/wx/document.tex +++ b/docs/latex/wx/document.tex @@ -141,7 +141,7 @@ dialog boxes. By default, uses the frame associated with the first view. \constfunc{wxString}{GetFilename}{\void} -Gets the filename associated with this document, or NULL if none is +Gets the filename associated with this document, or "" if none is associated. \membersection{wxDocument::GetFirstView} @@ -241,7 +241,7 @@ document, and notifies the views that the filename (in fact, the title) has chan \func{virtual bool}{OnOpenDocument}{\param{const wxString\& }{filename}} -Constructs an input file stream for the given filename (which must not be NULL), +Constructs an input file stream for the given filename (which must not be empty), and calls LoadObject. If LoadObject returns TRUE, the document is set to unmodified; otherwise, an error message box is displayed. The document's views are notified that the filename has changed, to give windows an opportunity @@ -251,7 +251,7 @@ to update their titles. All of the document's views are then updated. \func{virtual bool}{OnSaveDocument}{\param{const wxString\& }{filename}} -Constructs an output file stream for the given filename (which must not be NULL), +Constructs an output file stream for the given filename (which must not be empty), and calls SaveObject. If SaveObject returns TRUE, the document is set to unmodified; otherwise, an error message box is displayed. diff --git a/docs/latex/wx/tokenizr.tex b/docs/latex/wx/tokenizr.tex index 750bd8cb35..ffc8d5dfe7 100644 --- a/docs/latex/wx/tokenizr.tex +++ b/docs/latex/wx/tokenizr.tex @@ -31,25 +31,25 @@ Destructor. \membersection{wxStringTokenizer::CountTokens}\label{wxstringtokenizercounttokens} -\constfunc{virtual int}{CountTokens}{\void} +\constfunc{int}{CountTokens}{\void} Returns the number of tokens in the input string. -\membersection{wxStringTokenizer::HasMoreToken}\label{wxstringtokenizerhasmoretoken} +\membersection{wxStringTokenizer::HasMoreTokens}\label{wxstringtokenizerhasmoretokens} -\constfunc{virtual bool}{HasMoreToken}{\void} +\constfunc{bool}{HasMoreTokens}{\void} Returns TRUE if the tokenizer has further tokens. -\membersection{wxStringTokenizer::NextToken}\label{wxstringtokenizernexttoken} +\membersection{wxStringTokenizer::GetNextToken}\label{wxstringtokenizergetnexttoken} -\constfunc{virtual wxString}{NextToken}{\void} +\constfunc{wxString}{GetNextToken}{\void} Returns the next token. \membersection{wxStringTokenizer::GetString}\label{wxstringtokenizergetstring} -\constfunc{virtual wxString}{GetString}{\void} +\constfunc{wxString}{GetString}{\void} Returns the input string. diff --git a/docs/latex/wx/window.tex b/docs/latex/wx/window.tex index 22a2375ef0..6c371edf25 100644 --- a/docs/latex/wx/window.tex +++ b/docs/latex/wx/window.tex @@ -1683,11 +1683,13 @@ Sets the window's cursor. \docparam{cursor}{Specifies the cursor that the window should normally display.} +\begin{comment} \wxheading{Remarks} Under Windows, you sometimes need to call ::wxSetCursor in addition to this function if you want the cursor to change immediately, because under Windows, wxWindows only sets the global cursor when it detects mouse movement. +\end{comment \wxheading{See also} diff --git a/docs/motif/install.txt b/docs/motif/install.txt index 25e82c7cfc..59b5efa404 100644 --- a/docs/motif/install.txt +++ b/docs/motif/install.txt @@ -131,6 +131,20 @@ Troubleshooting possible temporary workaround (comment out the final XtDestroyWidget from ~wxWindow in window.cpp). +- If you use flex and bison instead of yacc and lex, you may need + to change the relevant part of src/motif/makefile.unx to read: + + ../common/y_tab.c: ../common/parser.y + $(YACC) ../common/parser.y + mv ../common/parser.tab.c ../common/y_tab.c + + (the 'mv' command needs to be changed) + +- Some compilers, such as Sun C++, may give a lot of warnings about + virtual functions being hidden. Please ignore these, it's correct C++ syntax. + If you find any incorrect instances, though, such as a + missing 'const' in an overridden function, please let us know. + Other Notes ----------- diff --git a/docs/msw/install.txt b/docs/msw/install.txt index 6659a1680e..98481fb68f 100644 --- a/docs/msw/install.txt +++ b/docs/msw/install.txt @@ -137,6 +137,13 @@ optimized. For example, in wxWindows project, set to 'Minimum Size'. In Dialog Editor project, set to 'Customize: Favor Small Code' (and no others). This will then work. +Note (4): some crash problems can be due to inconsistent compiler +options. If strange/weird/impossible things start to happen please +check (dumping IDE project file as makefile and doing text comparison +if necessary) that the project settings, especially the list of defined +symbols, struct packing, etc. are exactly the same for all items in +the project. After this, delete everything (including PCH) and recompile. + Visual C++ 1.5 compilation -------------------------- diff --git a/include/wx/motif/frame.h b/include/wx/motif/frame.h index 9326616bb9..732b4917c3 100644 --- a/include/wx/motif/frame.h +++ b/include/wx/motif/frame.h @@ -55,7 +55,6 @@ public: virtual bool Destroy(); - void SetClientSize(int width, int height); void GetClientSize(int *width, int *height) const; void GetSize(int *width, int *height) const ; void GetPosition(int *x, int *y) const ; diff --git a/include/wx/motif/mdi.h b/include/wx/motif/mdi.h index 26376b2c61..37cb782543 100644 --- a/include/wx/motif/mdi.h +++ b/include/wx/motif/mdi.h @@ -146,7 +146,7 @@ public: void SetTitle(const wxString& title); void SetClientSize(int width, int height); - void GetClientSize(int *width, int *height); + void GetClientSize(int *width, int *height) const; void GetSize(int *width, int *height) const; void GetPosition(int *x, int *y) const ; diff --git a/include/wx/motif/setup.h b/include/wx/motif/setup.h index d8a9fbdd86..d1e2804da4 100644 --- a/include/wx/motif/setup.h +++ b/include/wx/motif/setup.h @@ -138,6 +138,9 @@ #define wxUSE_TOOLTIPS 0 // Use tooltips +#define wxUSE_DYNLIB_CLASS 0 + // Use wxLibrary + /* * Finer detail * diff --git a/include/wx/stubs/filedlg.h b/include/wx/stubs/filedlg.h index 9169262331..bd6075eb15 100644 --- a/include/wx/stubs/filedlg.h +++ b/include/wx/stubs/filedlg.h @@ -67,5 +67,23 @@ public: #define wxHIDE_READONLY 0x0008 #define wxFILE_MUST_EXIST 0x0010 +// File selector - backward compatibility +WXDLLEXPORT wxString wxFileSelector(const char *message = wxFileSelectorPromptStr, const char *default_path = NULL, + const char *default_filename = NULL, const char *default_extension = NULL, + const char *wildcard = wxFileSelectorDefaultWildcardStr, int flags = 0, + wxWindow *parent = NULL, int x = -1, int y = -1); + +// An extended version of wxFileSelector +WXDLLEXPORT wxString wxFileSelectorEx(const char *message = wxFileSelectorPromptStr, const char *default_path = NULL, + const char *default_filename = NULL, int *indexDefaultExtension = NULL, + const char *wildcard = wxFileSelectorDefaultWildcardStr, int flags = 0, + wxWindow *parent = NULL, int x = -1, int y = -1); + +// Generic file load dialog +WXDLLEXPORT wxString wxLoadFileSelector(const char *what, const char *extension, const char *default_name = NULL, wxWindow *parent = NULL); + +// Generic file save dialog +WXDLLEXPORT wxString wxSaveFileSelector(const char *what, const char *extension, const char *default_name = NULL, wxWindow *parent = NULL); + #endif // _WX_FILEDLG_H_ diff --git a/include/wx/stubs/setup.h b/include/wx/stubs/setup.h index 0456d8c1a6..49c2fe8b50 100644 --- a/include/wx/stubs/setup.h +++ b/include/wx/stubs/setup.h @@ -126,6 +126,12 @@ #define wxUSE_SERIAL 0 // Use serialization + +#define wxUSE_TOOLTIPS 0 + // Use tooltips + +#define wxUSE_DYNLIB_CLASS 0 + // Use wxLibrary /* * Finer detail * diff --git a/include/wx/tokenzr.h b/include/wx/tokenzr.h index c23d130185..764b4c8091 100644 --- a/include/wx/tokenzr.h +++ b/include/wx/tokenzr.h @@ -30,7 +30,10 @@ public: int CountTokens(); bool HasMoreToken(); + inline bool HasMoreTokens() { return HasMoreToken(); }; wxString NextToken(); + // A better name! + inline wxString GetNextToken() { return NextToken(); }; wxString GetString() { return m_string; } void SetString(const wxString& to_tokenize, diff --git a/samples/docview/doc.cpp b/samples/docview/doc.cpp index 04e328c621..23a5316143 100644 --- a/samples/docview/doc.cpp +++ b/samples/docview/doc.cpp @@ -25,7 +25,7 @@ #endif #if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! +#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h! #endif #include "doc.h" diff --git a/samples/docview/docview.cpp b/samples/docview/docview.cpp index 681fa2ebc0..6204548013 100644 --- a/samples/docview/docview.cpp +++ b/samples/docview/docview.cpp @@ -32,7 +32,7 @@ #endif #if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! +#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h! #endif #include "wx/docview.h" diff --git a/samples/docview/view.cpp b/samples/docview/view.cpp index e0e01bb499..61cec41421 100644 --- a/samples/docview/view.cpp +++ b/samples/docview/view.cpp @@ -25,7 +25,7 @@ #endif #if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! +#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h! #endif #include "docview.h" diff --git a/samples/docvwmdi/doc.cpp b/samples/docvwmdi/doc.cpp index 04e328c621..23a5316143 100644 --- a/samples/docvwmdi/doc.cpp +++ b/samples/docvwmdi/doc.cpp @@ -25,7 +25,7 @@ #endif #if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! +#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h! #endif #include "doc.h" diff --git a/samples/docvwmdi/docview.cpp b/samples/docvwmdi/docview.cpp index 00a2ea7340..dad7ffd133 100644 --- a/samples/docvwmdi/docview.cpp +++ b/samples/docvwmdi/docview.cpp @@ -30,7 +30,7 @@ #endif #if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! +#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h! #endif #include "docview.h" diff --git a/samples/docvwmdi/view.cpp b/samples/docvwmdi/view.cpp index 56afdce5df..80adc13467 100644 --- a/samples/docvwmdi/view.cpp +++ b/samples/docvwmdi/view.cpp @@ -25,7 +25,7 @@ #endif #if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! +#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h! #endif #include "docview.h" diff --git a/samples/layout/layout.cpp b/samples/layout/layout.cpp index ab66c79b01..23209958d2 100644 --- a/samples/layout/layout.cpp +++ b/samples/layout/layout.cpp @@ -21,7 +21,7 @@ #endif #if !wxUSE_CONSTRAINTS -#error You must set wxUSE_CONSTRAINTS to 1 in wx_setup.h! +#error You must set wxUSE_CONSTRAINTS to 1 in setup.h! #endif #include diff --git a/samples/printing/printing.cpp b/samples/printing/printing.cpp index 4ace50d72a..2deb53b0fd 100644 --- a/samples/printing/printing.cpp +++ b/samples/printing/printing.cpp @@ -25,7 +25,7 @@ #endif #if !wxUSE_PRINTING_ARCHITECTURE -#error You must set wxUSE_PRINTING_ARCHITECTURE to 1 in wx_setup.h to compile this demo. +#error You must set wxUSE_PRINTING_ARCHITECTURE to 1 in setup.h to compile this demo. #endif // Set this to 1 if you want to test PostScript printing under MSW. diff --git a/src/generic/panelg.cpp b/src/generic/panelg.cpp index f96bb1701b..4046f5bd11 100644 --- a/src/generic/panelg.cpp +++ b/src/generic/panelg.cpp @@ -51,7 +51,7 @@ bool wxPanel::Create(wxWindow *parent, wxWindowID id, long style, const wxString& name) { - m_lastFocus = NULL; + m_lastFocus = 0; bool ret = wxWindow::Create(parent, id, pos, size, style, name); diff --git a/src/motif/dialog.cpp b/src/motif/dialog.cpp index 7dc7f7363f..41d930d7f1 100644 --- a/src/motif/dialog.cpp +++ b/src/motif/dialog.cpp @@ -342,6 +342,11 @@ void wxDialog::DoSetSize(int x, int y, int width, int height, int sizeFlags) XtVaSetValues((Widget) m_mainWidget, XmNresizePolicy, XmRESIZE_NONE, NULL); } +void wxDialog::DoSetClientSize(int width, int height) +{ + wxWindow::SetSize(-1, -1, width, height); +} + void wxDialog::SetTitle(const wxString& title) { m_dialogTitle = title; diff --git a/src/motif/utils.cpp b/src/motif/utils.cpp index 99569a53c2..94820453fb 100644 --- a/src/motif/utils.cpp +++ b/src/motif/utils.cpp @@ -556,6 +556,9 @@ wxXSetBusyCursor (wxWindow * win, wxCursor * cursor) Display *display = (Display*) win->GetXDisplay(); Window xwin = (Window) win->GetXWindow(); + if (!xwin) + return; + XSetWindowAttributes attrs; if (cursor) diff --git a/src/motif/window.cpp b/src/motif/window.cpp index 5af4953242..e3e0d614be 100644 --- a/src/motif/window.cpp +++ b/src/motif/window.cpp @@ -747,7 +747,7 @@ void wxWindow::GetClientSize(int *x, int *y) const *x = xx; *y = yy; } -void wxWindow::SetSize(int x, int y, int width, int height, int sizeFlags) +void wxWindow::DoSetSize(int x, int y, int width, int height, int sizeFlags) { // A bit of optimization to help sort out the flickers. int oldX, oldY, oldW, oldH; @@ -819,7 +819,7 @@ void wxWindow::SetSize(int x, int y, int width, int height, int sizeFlags) */ } -void wxWindow::SetClientSize(int width, int height) +void wxWindow::DoSetClientSize(int width, int height) { if (m_drawingArea) { @@ -2307,12 +2307,18 @@ void wxDeleteWindowFromTable(Widget w) // Get the underlying X window and display WXWindow wxWindow::GetXWindow() const { - return (WXWindow) XtWindow((Widget) GetMainWidget()); + if (GetMainWidget()) + return (WXWindow) XtWindow((Widget) GetMainWidget()); + else + return (WXWindow) 0; } WXDisplay *wxWindow::GetXDisplay() const { - return (WXDisplay*) XtDisplay((Widget) GetMainWidget()); + if (GetMainWidget()) + return (WXDisplay*) XtDisplay((Widget) GetMainWidget()); + else + return (WXDisplay*) NULL; } WXWidget wxWindow::GetMainWidget() const diff --git a/src/stubs/filedlg.cpp b/src/stubs/filedlg.cpp index 36182617e0..8832598af4 100644 --- a/src/stubs/filedlg.cpp +++ b/src/stubs/filedlg.cpp @@ -59,7 +59,7 @@ wxString wxFileSelector(const char *title, return wxEmptyString; } -char *wxFileSelectorEx(const char *title, +wxString wxFileSelectorEx(const char *title, const char *defaultDir, const char *defaultFileName, int* defaultFilterIndex, diff --git a/src/stubs/makefile.unx b/src/stubs/makefile.unx index a834d05b4a..9e789a14a0 100644 --- a/src/stubs/makefile.unx +++ b/src/stubs/makefile.unx @@ -51,7 +51,7 @@ LIB_CPP_SRC=\ ../common/framecmn.cpp \ ../common/stream.cpp \ ../common/datstrm.cpp \ - ../common/fstream.cpp \ + ../common/wfstream.cpp \ ../common/mstream.cpp \ ../common/zstream.cpp \ ../common/objstrm.cpp \ diff --git a/src/stubs/thread.cpp b/src/stubs/thread.cpp index e12b45e63b..34ad1a4f14 100644 --- a/src/stubs/thread.cpp +++ b/src/stubs/thread.cpp @@ -17,6 +17,8 @@ #include "wx/thread.h" #include "wx/utils.h" +#if wxUSE_THREADS + enum thread_state { STATE_IDLE = 0, STATE_RUNNING, @@ -259,3 +261,5 @@ public: IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) +#endif + // wxUSE_THREADS -- 2.45.2