Doc mods, sash window bug

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1514 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
1999-01-29 17:22:47 +00:00
parent 2e850e6846
commit 82540ef232
9 changed files with 43 additions and 74 deletions

View File

@@ -61,15 +61,15 @@ Returns the view associated with this frame.
\membersection{wxDocChildFrame::OnActivate} \membersection{wxDocChildFrame::OnActivate}
\func{void}{OnActivate}{\param{bool}{ active}} \func{void}{OnActivate}{\param{wxActivateEvent}{ event}}
Sets the currently active view to be the frame's view. You may need Sets the currently active view to be the frame's view. You may need
to override (but still call) this function in order to set the keyboard to override (but still call) this function in order to set the keyboard
focus for your subwindow. focus for your subwindow.
\membersection{wxDocChildFrame::OnClose} \membersection{wxDocChildFrame::OnCloseWindow}
\func{virtual bool}{OnClose}{\void} \func{void}{OnCloseWindow}{\param{wxCloseEvent\&}{ event}}
Closes and deletes the current view and document. Closes and deletes the current view and document.

View File

@@ -62,15 +62,15 @@ Returns the view associated with this frame.
\membersection{wxDocMDIChildFrame::OnActivate} \membersection{wxDocMDIChildFrame::OnActivate}
\func{void}{OnActivate}{\param{bool}{ active}} \func{void}{OnActivate}{\param{wxActivateEvent}{ event}}
Sets the currently active view to be the frame's view. You may need Sets the currently active view to be the frame's view. You may need
to override (but still call) this function in order to set the keyboard to override (but still call) this function in order to set the keyboard
focus for your subwindow. focus for your subwindow.
\membersection{wxDocMDIChildFrame::OnClose} \membersection{wxDocMDIChildFrame::OnCloseWindow}
\func{virtual bool}{OnClose}{\void} \func{void}{OnCloseWindow}{\param{wxCloseEvent\&}{ event}}
Closes and deletes the current view and document. Closes and deletes the current view and document.

View File

@@ -24,9 +24,10 @@ See the example application in {\tt samples/docview}.
\membersection{wxDocMDIParentFrame::wxDocMDIParentFrame} \membersection{wxDocMDIParentFrame::wxDocMDIParentFrame}
\func{}{wxDocMDIParentFrame}{\param{wxFrame *}{parent}, \param{wxWindowID}{ id}, \func{}{wxDocParentFrame}{\param{wxDocManager*}{ manager}, \param{wxFrame *}{parent}, \param{wxWindowID}{ id},
\param{const wxString\& }{title}, \param{int}{ x}, \param{int}{ y}, \param{int}{ width}, \param{int}{ height}, \param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},
\param{long}{ style}, \param{const wxString\& }{name}} \param{const wxSize\&}{ size = wxDefaultSize},
\param{long}{ style = wxDEFAULT\_FRAME\_STYLE}, \param{const wxString\& }{name = "frame"}}
Constructor. Constructor.
@@ -36,44 +37,25 @@ Constructor.
Destructor. Destructor.
\membersection{wxDocMDIParentFrame::OnClose} \membersection{wxDocMDIParentFrame::OnCloseWindow}
\func{bool}{OnClose}{\void} \func{void}{OnCloseWindow}{\param{wxCloseEvent\&}{ event}}
Deletes all views and documents. If no user input cancelled the Deletes all views and documents. If no user input cancelled the
operation, the function returns TRUE and the application will exit. operation, the frame will be destroyed and the application will exit.
Since understanding how document/view clean-up takes place can be difficult, Since understanding how document/view clean-up takes place can be difficult,
the implementation of this function is shown below. the implementation of this function is shown below.
\begin{verbatim} \begin{verbatim}
bool wxDocMDIParentFrame::OnClose(void) void wxDocParentFrame::OnCloseWindow(wxCloseEvent& event)
{ {
// Delete all views and documents if (m_docManager->Clear(!event.CanVeto()))
wxNode *node = docManager->GetDocuments().First();
while (node)
{ {
wxDocument *doc = (wxDocument *)node->Data(); this->Destroy();
wxNode *next = node->Next();
if (!doc->Close())
return FALSE;
// Implicitly deletes the document when the last
// view is removed (deleted)
doc->DeleteAllViews();
// Check document is deleted
if (docManager->GetDocuments().Member(doc))
delete doc;
// This assumes that documents are not connected in
// any way, i.e. deleting one document does NOT
// delete another.
node = next;
} }
return TRUE; else
event.Veto();
} }
\end{verbatim} \end{verbatim}

View File

@@ -23,9 +23,10 @@ See the example application in {\tt samples/docview}.
\membersection{wxDocParentFrame::wxDocParentFrame} \membersection{wxDocParentFrame::wxDocParentFrame}
\func{}{wxDocParentFrame}{\param{wxFrame *}{parent}, \param{wxWindowID}{ id}, \func{}{wxDocParentFrame}{\param{wxDocManager*}{ manager}, \param{wxFrame *}{parent}, \param{wxWindowID}{ id},
\param{const wxString\& }{title}, \param{int}{ x}, \param{int}{ y}, \param{int}{ width}, \param{int}{ height}, \param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},
\param{long}{ style}, \param{const wxString\& }{name}} \param{const wxSize\&}{ size = wxDefaultSize},
\param{long}{ style = wxDEFAULT\_FRAME\_STYLE}, \param{const wxString\& }{name = "frame"}}
Constructor. Constructor.
@@ -35,44 +36,25 @@ Constructor.
Destructor. Destructor.
\membersection{wxDocParentFrame::OnClose} \membersection{wxDocParentFrame::OnCloseWindow}
\func{bool}{OnClose}{\void} \func{void}{OnCloseWindow}{\param{wxCloseEvent\&}{ event}}
Deletes all views and documents. If no user input cancelled the Deletes all views and documents. If no user input cancelled the
operation, the function returns TRUE and the application will exit. operation, the frame will be destroyed and the application will exit.
Since understanding how document/view clean-up takes place can be difficult, Since understanding how document/view clean-up takes place can be difficult,
the implementation of this function is shown below. the implementation of this function is shown below.
\begin{verbatim} \begin{verbatim}
bool wxDocParentFrame::OnClose(void) void wxDocParentFrame::OnCloseWindow(wxCloseEvent& event)
{ {
// Delete all views and documents if (m_docManager->Clear(!event.CanVeto()))
wxNode *node = docManager->GetDocuments().First();
while (node)
{ {
wxDocument *doc = (wxDocument *)node->Data(); this->Destroy();
wxNode *next = node->Next();
if (!doc->Close())
return FALSE;
// Implicitly deletes the document when the last
// view is removed (deleted)
doc->DeleteAllViews();
// Check document is deleted
if (docManager->GetDocuments().Member(doc))
delete doc;
// This assumes that documents are not connected in
// any way, i.e. deleting one document does NOT
// delete another.
node = next;
} }
return TRUE; else
event.Veto();
} }
\end{verbatim} \end{verbatim}

View File

@@ -230,4 +230,3 @@ Sets the file filter.
Sets the internal document template flags (see the constructor description for more details). Sets the internal document template flags (see the constructor description for more details).

View File

@@ -222,6 +222,8 @@ bool wxGenericGrid::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos,
m_hScrollBar = new wxScrollBar(this, wxGRID_HSCROLL, wxPoint(0, 0), wxSize(20, 100), wxHORIZONTAL); m_hScrollBar = new wxScrollBar(this, wxGRID_HSCROLL, wxPoint(0, 0), wxSize(20, 100), wxHORIZONTAL);
m_vScrollBar = new wxScrollBar(this, wxGRID_VSCROLL, wxPoint(0, 0), wxSize(100, 20), wxVERTICAL); m_vScrollBar = new wxScrollBar(this, wxGRID_VSCROLL, wxPoint(0, 0), wxSize(100, 20), wxVERTICAL);
SetSize(-1, -1, size.x, size.y);
return TRUE; return TRUE;
} }

View File

@@ -324,7 +324,7 @@ wxSashEdgePosition wxSashWindow::SashHitTest(int x, int y, int WXUNUSED(toleranc
} }
case wxSASH_LEFT: case wxSASH_LEFT:
{ {
if ((x >= GetEdgeMargin(position)) && (x >= 0)) if ((x <= GetEdgeMargin(position)) && (x >= 0))
return wxSASH_LEFT; return wxSASH_LEFT;
break; break;
} }

View File

@@ -1829,11 +1829,15 @@ bool wxScrollBarPropertyInfo::SetProperty(wxString& name, wxProperty *property)
scrollBar->SetWindowStyleFlag(windowStyle); scrollBar->SetWindowStyleFlag(windowStyle);
// If the window style has changed, we swap the width and height parameters. // If the window style has changed, we swap the width and height parameters.
int w, h; // int w, h;
scrollBar->GetSize(&w, &h); // scrollBar->GetSize(&w, &h);
wxItemResource *item = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(scrollBar);
if ( item ) {
item->SetSize(item->GetX(), item->GetY(), item->GetHeight(), item->GetWidth());
item->SetStyle(windowStyle);
} /* IF */
scrollBar = (wxScrollBar *)wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(scrollBar, this); scrollBar = (wxScrollBar *)wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(scrollBar, this);
scrollBar->SetSize(-1, -1, h, w);
return TRUE; return TRUE;
} }