From f59d80ca00e0ef9963c771a26decd605a85d5596 Mon Sep 17 00:00:00 2001
From: Robert Roebling <robert@roebling.de>
Date: Wed, 29 Dec 1999 09:48:10 +0000
Subject: [PATCH]   Small doc updates, mainly wxDropTarget,   wxFileDlg now
 interprets a default dir of "." as     the current working dir,   dialog and
 frame honour "wxApp::DeleteFrameOnExit".

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5134 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/app.tex      |  17 ++----
 docs/latex/wx/dataobj.tex  |   4 +-
 docs/latex/wx/dropsrc.tex  |  15 ++---
 docs/latex/wx/droptrgt.tex | 110 ++++++++++++++++++++++++++++---------
 docs/latex/wx/filedlg.tex  |   2 +-
 docs/latex/wx/function.tex |   4 +-
 docs/latex/wx/strmzlib.tex |   4 +-
 src/generic/filedlgg.cpp   |   2 +-
 src/gtk/dialog.cpp         |   3 +-
 src/gtk/frame.cpp          |   5 +-
 src/gtk1/dialog.cpp        |   3 +-
 src/gtk1/frame.cpp         |   5 +-
 12 files changed, 117 insertions(+), 57 deletions(-)

diff --git a/docs/latex/wx/app.tex b/docs/latex/wx/app.tex
index cd5a9fd400..af67ba0e18 100644
--- a/docs/latex/wx/app.tex
+++ b/docs/latex/wx/app.tex
@@ -120,16 +120,16 @@ manner to refer to the application.
 
 \helpref{wxApp::SetClassName}{wxappsetclassname}
 
-\membersection{wxApp::GetExitOnDelete}\label{wxappgetexitondelete}
+\membersection{wxApp::GetExitOnFrameDelete}\label{wxappgetexitonframedelete}
 
-\constfunc{bool}{GetExitOnDelete}{\void}
+\constfunc{bool}{GetExitFrameOnDelete}{\void}
 
 Returns TRUE if the application will exit when the top-level window is deleted, FALSE
 otherwise.
 
 \wxheading{See also}
 
-\helpref{wxApp::SetExitOnDelete}{wxappsetexitondelete}
+\helpref{wxApp::SetExitOnFrameDelete}{wxappsetexitonframedelete}
 
 \membersection{wxApp::GetTopWindow}\label{wxappgettopwindow}
 
@@ -338,8 +338,7 @@ BOOL CTheApp::PreTranslateMessage(MSG *msg)
 
 \func{bool}{Pending}{\void}
 
-Returns TRUE if unprocessed events are in the window system event queue
-(MS Windows and Motif).
+Returns TRUE if unprocessed events are in the window system event queue.
 
 \wxheading{See also}
 
@@ -406,9 +405,9 @@ manner to refer to the application.
 
 \helpref{wxApp::GetClassName}{wxappgetclassname}
 
-\membersection{wxApp::SetExitOnDelete}\label{wxappsetexitondelete}
+\membersection{wxApp::SetExitOnFrameDelete}\label{wxappsetexitonframedelete}
 
-\func{void}{SetExitOnDelete}{\param{bool}{ flag}}
+\func{void}{SetExitOnFrameDelete}{\param{bool}{ flag}}
 
 Allows the programmer to specify whether the application will exit when the
 top-level frame is deleted.
@@ -418,10 +417,6 @@ top-level frame is deleted.
 \docparam{flag}{If TRUE (the default), the application will exit when the top-level frame is
 deleted. If FALSE, the application will continue to run.}
 
-\wxheading{Remarks}
-
-Currently, setting this to FALSE only has an effect under Windows.
-
 \membersection{wxApp::SetTopWindow}\label{wxappsettopwindow}
 
 \func{void}{SetTopWindow}{\param{wxWindow* }{window}}
diff --git a/docs/latex/wx/dataobj.tex b/docs/latex/wx/dataobj.tex
index b8e1f8d742..55e03819b7 100644
--- a/docs/latex/wx/dataobj.tex
+++ b/docs/latex/wx/dataobj.tex
@@ -72,14 +72,14 @@ implement.}
 Please note that the easiest way to use drag and drop and the clipboard with
 multiple formats is by using wxDataObjectComposite, but it is not the most
 efficient one as each wxDataObjectSimple would contain the whole data in its
-respective formars. Now imagine that you want to paste 200 pages of text in
+respective formats. Now imagine that you want to paste 200 pages of text in
 your proprietary format, as well as Word, RTF, HTML, Unicode and plain text to
 the clipboard and even today's computers are in trouble. For this case, you
 will have to derive from wxDataObject directly and make it enumerate its
 formats and provide the data in the requested format on demand.
 
 Note that neither the GTK data transfer mechanisms for the clipboard and
-drag and drop, neither does the OLE data transfer copy any data until another application
+drag and drop, nor the OLE data transfer copy any data until another application
 actually requests the data. This is in contrast to the 'feel' offered to the
 user of a program who would normally think that the data resides in the
 clipboard after having pressed 'Copy' - in reality it is only declared to be
diff --git a/docs/latex/wx/dropsrc.tex b/docs/latex/wx/dropsrc.tex
index f25dff1898..4f122c5c4b 100644
--- a/docs/latex/wx/dropsrc.tex
+++ b/docs/latex/wx/dropsrc.tex
@@ -6,7 +6,7 @@ This class represents a source for a drag and drop operation.
 
 \wxheading{Derived from}
 
-\helpref{wxObject}{wxobject}
+None
 
 \wxheading{Include files}
 
@@ -18,14 +18,14 @@ This class represents a source for a drag and drop operation.
 
 {\small\begin{verbatim}
 enum wxDragResult
-  {
+{
     wxDragError,    // error prevented the d&d operation from completing
     wxDragNone,     // drag target didn't accept the data
     wxDragCopy,     // the data was successfully copied
     wxDragMove,     // the data was successfully moved
     wxDragCancel    // the operation was cancelled by user (not an error)
-  };
-\end{verbatim}%
+};
+\end{verbatim}
 }
 
 \wxheading{See also}
@@ -40,9 +40,9 @@ enum wxDragResult
 \func{}{wxDropSource}{\param{wxWindow*}{ win = NULL}}
 
 Default/wxGTK-specific constructor. If you use the default constructor you must
-call \helpref{wxDropSource::SetData}{wxdropsourcesetdata} later.
+call \helpref{SetData}{wxdropsourcesetdata} later.
 
-{\it win} is required by wxGTK and therefore should always be set.
+Note that {\it win} is required by the GTK port and therefore should always be set.
 
 \membersection{wxDropSource::\destruct{wxDropSource}}\label{wxdropsourcedtor}
 
@@ -52,7 +52,8 @@ call \helpref{wxDropSource::SetData}{wxdropsourcesetdata} later.
 
 \func{void}{SetData}{\param{wxDataObject\&}{ data}}
 
-Sets the data \helpref{data object}{wxdataobject} associated with the drop source.
+Sets the data \helpref{wxDataObject}{wxdataobject} associated with the 
+drop source. This will not delete any previously associated data.
 
 \membersection{wxDropSource::DoDragDrop}\label{wxdropsourcedodragdrop}
 
diff --git a/docs/latex/wx/droptrgt.tex b/docs/latex/wx/droptrgt.tex
index 30e206c4e7..db5b38d78a 100644
--- a/docs/latex/wx/droptrgt.tex
+++ b/docs/latex/wx/droptrgt.tex
@@ -2,60 +2,81 @@
 
 \overview{Overview}{wxdndoverview}
 
-This class represents a target for a drag and drop operation.
+This class represents a target for a drag and drop operation. A \helpref{wxDataObject}{wxdataobject}
+can be associated with it and by default, this object will be filled with the data from the
+drag source, if the data formats supported by the data object match the drag source data 
+format.
+
+There are various virtual handler functions defined in this class which may be overridden
+to give visual feedback or react in a more fine-tuned way, e.g. by not accepting data on
+the whole window area, but only a small portion of it. The normal sequence of calls is
+\helpref{OnEnter}{wxdroptargetonenter}, possibly many times \helpref{OnDragOver}{wxdroptargetondragover},
+\helpref{OnDrop}{wxdroptargetondrop} and finally \helpref{OnData}{wxdroptargetondata}.
 
 \wxheading{Derived from}
 
-\helpref{wxObject}{wxobject}
+None
 
 \wxheading{Include files}
 
 <wx/dnd.h>
 
+\wxheading{Types}
+
+\index{wxDragResult}wxDragResult is defined as follows:
+
+{\small\begin{verbatim}
+enum wxDragResult
+{
+    wxDragError,    // error prevented the d&d operation from completing
+    wxDragNone,     // drag target didn't accept the data
+    wxDragCopy,     // the data was successfully copied
+    wxDragMove,     // the data was successfully moved
+    wxDragCancel    // the operation was cancelled by user (not an error)
+};
+\end{verbatim}
+}
+
 \wxheading{See also}
 
 \helpref{Drag and drop overview}{wxdndoverview}, \helpref{wxDropSource}{wxdropsource}, 
-\helpref{wxTextDropTarget}{wxtextdroptarget}, \helpref{wxFileDropTarget}{wxfiledroptarget}
+\helpref{wxTextDropTarget}{wxtextdroptarget}, \helpref{wxFileDropTarget}{wxfiledroptarget},
+\helpref{wxDataFormat}{wxdataformat}, \helpref{wxDataObject}{wxdataobject}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 
 \membersection{wxDropTarget::wxDropTarget}\label{wxdroptargetwxdroptarget}
 
-\func{}{wxDropTarget}{\void}
+\func{}{wxDropTarget}{\param{wxDataObject*}{ data = NULL}}
 
-Constructor.
+Constructor. {\it data} is the data to be associated with the drop target.
 
 \membersection{wxDropTarget::\destruct{wxDropTarget}}\label{wxdroptargetdtor}
 
 \func{}{\destruct{wxDropTarget}}{\void}
 
-Destructor.
-
-\membersection{wxDropTarget::GetFormatCount}\label{wxdroptargetgetformatcount}
+Destructor. Deletes the associated data object, if any.
 
-\constfunc{virtual size\_t}{GetFormatCount}{\void}
+\membersection{wxDropTarget::GetData}\label{wxdroptargetgetdata}
 
-Override this to indicate how many formats you support.
+\func{virtual void}{GetData}{\void}
 
-\membersection{wxDropTarget::GetFormat}\label{wxdroptargetgetformat}
-
-\constfunc{virtual wxDataFormat}{GetFormat}{\param{size\_t }{n}}
-
-Override this to indicate what kind of data you support.
+This method may only be called from within \helpref{OnData}{wxdroptargetondata}.
+By default, this method copies the data from the drop source to the 
+\helpref{wxDataObject}{wxdataobject} associated with this drop target,
+calling its \helpref{wxDataObject::SetData}{wxdataobjectsetdata} method.
 
 \membersection{wxDropTarget::OnData}\label{wxdroptargetondata}
 
 \func{virtual wxDragResult}{OnData}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxDragResult}{ def}}
 
-Called after OnDrop() returns TRUE: you will usually just call
-GetData() from here and, probably, also refresh something to update the
-new data and, finally, return the code indicating how did the operation
-complete (returning default value in case of success and wxDragError on
-failure is usually ok).
+Called after \helpref{OnDrop}{wxdroptargetondrop} returns TRUE. By default this
+will usually \helpref{GetData}{wxdroptargetgetdata} and will return the suggested
+default value {\it def}.
 
 \membersection{wxDropTarget::OnDrop}\label{wxdroptargetondrop}
 
-\func{virtual bool}{OnDrop}{\param{long }{x}, \param{long }{y}, \param{const void* }{data}, \param{size\_t }{size}}
+\func{virtual bool}{OnDrop}{\param{wxCoord }{x}, \param{wxCoord }{y}}
 
 Called when the user drops a data object on the target. Return FALSE to veto the operation.
 
@@ -65,19 +86,48 @@ Called when the user drops a data object on the target. Return FALSE to veto the
 
 \docparam{y}{The y coordinate of the mouse.}
 
-\docparam{data}{The data being dropped.}
-
-\docparam{size}{The size of the data being dropped.}
-
 \wxheading{Return value}
 
 Return TRUE to accept the data, FALSE to veto the operation.
 
 \membersection{wxDropTarget::OnEnter}\label{wxdroptargetonenter}
 
-\func{virtual void}{OnEnter}{\void}
+\func{virtual wxDragResult}{OnEnter}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxDragResult}{ def}}
+
+Called when the mouse enters the drop target. By default, this calls \helpref{OnDragOver}{wxdroptargetondragover}.
+
+\wxheading{Parameters}
+
+\docparam{x}{The x coordinate of the mouse.}
+
+\docparam{y}{The y coordinate of the mouse.}
+
+\docparam{def}{Suggested default for return value. Determined by SHIFT or CONTROL key states.}
 
-Called when the mouse enters the drop target.
+\wxheading{Return value}
+
+Returns the desired operation or {\tt wxDragNone}. This is used for optical feedback
+from the side of the drop source, typically in form of changing the icon.
+
+\membersection{wxDropTarget::OnDragOver}\label{wxdroptargetondragover}
+
+\func{virtual wxDragResult}{OnDragOver}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxDragResult}{ def}}
+
+Called when the mouse is being dragged over the drop target. By default, 
+this calls functions return the suggested return value {\it def}.
+
+\wxheading{Parameters}
+
+\docparam{x}{The x coordinate of the mouse.}
+
+\docparam{y}{The y coordinate of the mouse.}
+
+\docparam{def}{Suggested value for return value. Determined by SHIFT or CONTROL key states.}
+
+\wxheading{Return value}
+
+Returns the desired operation or {\tt wxDragNone}. This is used for optical feedback
+from the side of the drop source, typically in form of changing the icon.
 
 \membersection{wxDropTarget::OnLeave}\label{wxdroptargetonleave}
 
@@ -85,3 +135,9 @@ Called when the mouse enters the drop target.
 
 Called when the mouse leaves the drop target.
 
+\membersection{wxDropTarget::SetDataObject}\label{wxdroptargetsetdataobject}
+
+\func{void}{SetDataObject}{\param{wxDataObject*}{ data}}
+
+Sets the data \helpref{wxDataObject}{wxdataobject} associated with the 
+drop target and deletes any previously associated data object.
diff --git a/docs/latex/wx/filedlg.tex b/docs/latex/wx/filedlg.tex
index 63d4a9bd1a..0932cb3306 100644
--- a/docs/latex/wx/filedlg.tex
+++ b/docs/latex/wx/filedlg.tex
@@ -26,7 +26,7 @@ If path is ``", the current directory will be used. If filename is ``",
 no default filename will be supplied. The wildcard determines what files
 are displayed in the file selector, and file extension supplies a type
 extension for the required filename. Flags may be a combination of wxOPEN,
-wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, wxMULTIPLE or 0.
+wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, wxFILE\_MUST\_EXIST, wxMULTIPLE or 0.
 
 Both the X and Windows versions implement a wildcard filter. Typing a
 filename containing wildcards (*, ?) in the filename text item, and
diff --git a/docs/latex/wx/function.tex b/docs/latex/wx/function.tex
index 3a5343e446..f4196b4223 100644
--- a/docs/latex/wx/function.tex
+++ b/docs/latex/wx/function.tex
@@ -478,13 +478,13 @@ is remembered between the 2 program runs.}
  \param{int}{ x = -1}, \param{int}{ y = -1}}
 
 Pops up a file selector box. In Windows, this is the common file selector
-dialog. In X, this is a file selector box with somewhat less functionality.
+dialog. In X, this is a file selector box with the same functionality.
 The path and filename are distinct elements of a full file pathname.
 If path is empty, the current directory will be used. If filename is empty,
 no default filename will be supplied. The wildcard determines what files
 are displayed in the file selector, and file extension supplies a type
 extension for the required filename. Flags may be a combination of wxOPEN,
-wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, wxMULTIPLE or 0.
+wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, wxFILE\_MUST\_EXIST, wxMULTIPLE or 0.
 
 Both the Unix and Windows versions implement a wildcard filter. Typing a
 filename containing wildcards (*, ?) in the filename text item, and
diff --git a/docs/latex/wx/strmzlib.tex b/docs/latex/wx/strmzlib.tex
index de17f381ce..ff8c49b720 100644
--- a/docs/latex/wx/strmzlib.tex
+++ b/docs/latex/wx/strmzlib.tex
@@ -16,7 +16,7 @@ stream to get new compressed data.
 
 \wxheading{See also}
 
-\helpref{wxStreamBuffer}{wxstreamBuffer}, \helpref{wxInputStream}{wxinputstream}
+\helpref{wxInputStream}{wxinputstream}
 
 % -----------------------------------------------------------------------------
 % wxZlibOutputStream
@@ -36,5 +36,5 @@ to the "filtered" stream.
 
 \wxheading{See also}
 
-\helpref{wxStreamBuffer}{wxstreamBuffer}, \helpref{wxOutputStream}{wxoutputstream}
+\helpref{wxOutputStream}{wxoutputstream}
 
diff --git a/src/generic/filedlgg.cpp b/src/generic/filedlgg.cpp
index 8b13841962..a39a066ea5 100644
--- a/src/generic/filedlgg.cpp
+++ b/src/generic/filedlgg.cpp
@@ -579,7 +579,7 @@ wxFileDialog::wxFileDialog(wxWindow *parent,
         m_dialogStyle |= wxOPEN;
     
     m_dir = defaultDir;
-    if (m_dir.IsEmpty())
+    if ((m_dir.IsEmpty()) || (m_dir == wxT(".")))
     {
         char buf[200];
         m_dir = getcwd( buf, sizeof(buf) );
diff --git a/src/gtk/dialog.cpp b/src/gtk/dialog.cpp
index 5411e1cb9d..1b68a287c7 100644
--- a/src/gtk/dialog.cpp
+++ b/src/gtk/dialog.cpp
@@ -339,7 +339,8 @@ wxDialog::~wxDialog()
         wxTheApp->SetTopWindow( (wxWindow*) NULL );
     }
 
-    if (wxTopLevelWindows.Number() == 0)
+    if ((wxTopLevelWindows.Number() == 0) &&
+        (wxTheApp->GetExitOnFrameDelete()))
     {
         wxTheApp->ExitMainLoop();
     }
diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp
index 564c0d8575..ecefa29954 100644
--- a/src/gtk/frame.cpp
+++ b/src/gtk/frame.cpp
@@ -504,8 +504,11 @@ wxFrame::~wxFrame()
     if (wxTheApp->GetTopWindow() == this)
         wxTheApp->SetTopWindow( (wxWindow*) NULL );
 
-    if (wxTopLevelWindows.Number() == 0)
+    if ((wxTopLevelWindows.Number() == 0) &&
+        (wxTheApp->GetExitOnFrameDelete()))
+    {
         wxTheApp->ExitMainLoop();
+    }
 }
 
 // ----------------------------------------------------------------------------
diff --git a/src/gtk1/dialog.cpp b/src/gtk1/dialog.cpp
index 5411e1cb9d..1b68a287c7 100644
--- a/src/gtk1/dialog.cpp
+++ b/src/gtk1/dialog.cpp
@@ -339,7 +339,8 @@ wxDialog::~wxDialog()
         wxTheApp->SetTopWindow( (wxWindow*) NULL );
     }
 
-    if (wxTopLevelWindows.Number() == 0)
+    if ((wxTopLevelWindows.Number() == 0) &&
+        (wxTheApp->GetExitOnFrameDelete()))
     {
         wxTheApp->ExitMainLoop();
     }
diff --git a/src/gtk1/frame.cpp b/src/gtk1/frame.cpp
index 564c0d8575..ecefa29954 100644
--- a/src/gtk1/frame.cpp
+++ b/src/gtk1/frame.cpp
@@ -504,8 +504,11 @@ wxFrame::~wxFrame()
     if (wxTheApp->GetTopWindow() == this)
         wxTheApp->SetTopWindow( (wxWindow*) NULL );
 
-    if (wxTopLevelWindows.Number() == 0)
+    if ((wxTopLevelWindows.Number() == 0) &&
+        (wxTheApp->GetExitOnFrameDelete()))
+    {
         wxTheApp->ExitMainLoop();
+    }
 }
 
 // ----------------------------------------------------------------------------
-- 
2.50.0

