From fce5b5df0ca6c48ca985d65e459c06b31f48ba13 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 27 Jul 2000 22:52:59 +0000 Subject: [PATCH] fixed the problem with iconizing the miniframes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7889 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/minifram.h | 60 ++++++++++++++++++--------------------- src/common/dynlib.cpp | 1 - src/msw/frame.cpp | 23 +++++++++++++-- 3 files changed, 48 insertions(+), 36 deletions(-) diff --git a/include/wx/msw/minifram.h b/include/wx/msw/minifram.h index 9d1b228aac..116371e281 100644 --- a/include/wx/msw/minifram.h +++ b/include/wx/msw/minifram.h @@ -1,12 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: minifram.h +// Name: wx/msw/minifram.h // Purpose: wxMiniFrame class // Author: Julian Smart // Modified by: // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_MINIFRAM_H_ @@ -20,55 +20,51 @@ #ifdef __WIN32__ -class WXDLLEXPORT wxMiniFrame: public wxFrame { - - DECLARE_DYNAMIC_CLASS(wxMiniFrame) - +class WXDLLEXPORT wxMiniFrame : public wxFrame +{ public: - inline wxMiniFrame(void) {} - inline wxMiniFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr) + wxMiniFrame() { } + wxMiniFrame(wxWindow *parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxCAPTION | wxCLIP_CHILDREN | wxRESIZE_BORDER, + const wxString& name = wxFrameNameStr) { Create(parent, id, title, pos, size, style | wxFRAME_TOOL_WINDOW | wxFRAME_FLOAT_ON_PARENT, name); } protected: + DECLARE_DYNAMIC_CLASS(wxMiniFrame) }; -#else - -class WXDLLEXPORT wxMiniFrame: public wxFrame { - - DECLARE_DYNAMIC_CLASS(wxMiniFrame) +#else // !Win32 +class WXDLLEXPORT wxMiniFrame : public wxFrame +{ public: - inline wxMiniFrame(void) {} - inline wxMiniFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE|wxTINY_CAPTION_HORIZ, - const wxString& name = wxFrameNameStr) + wxMiniFrame() { } + wxMiniFrame(wxWindow *parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE|wxTINY_CAPTION_HORIZ, + const wxString& name = wxFrameNameStr) { Create(parent, id, title, pos, size, style, name); } - ~wxMiniFrame(void); + virtual ~wxMiniFrame(); - long MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); + virtual long MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); -protected: + DECLARE_DYNAMIC_CLASS(wxMiniFrame) }; -#endif - +#endif // Win32/!Win32 #endif // _WX_MINIFRAM_H_ diff --git a/src/common/dynlib.cpp b/src/common/dynlib.cpp index cc41e9f693..3aa8cc8758 100644 --- a/src/common/dynlib.cpp +++ b/src/common/dynlib.cpp @@ -102,7 +102,6 @@ static wxString ConstructLibraryName(const wxString& basename) return fullname; } - // --------------------------------------------------------------------------- // wxLibrary (one instance per dynamic library) // --------------------------------------------------------------------------- diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 9a324b1042..5b46e6c7c6 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -620,10 +620,17 @@ bool wxFrame::MSWCreate(int id, wxWindow *parent, const wxChar *wclass, wxWindow // could be the culprit. But without it, you can get a lot of flicker. DWORD msflags = 0; - if ((style & wxCAPTION) == wxCAPTION) - msflags = WS_OVERLAPPED; + if ( style & wxCAPTION ) + { + if ( style & wxFRAME_TOOL_WINDOW ) + msflags |= WS_POPUPWINDOW; + else + msflags |= WS_OVERLAPPED; + } else - msflags = WS_POPUP; + { + msflags |= WS_POPUP; + } if (style & wxMINIMIZE_BOX) msflags |= WS_MINIMIZEBOX; @@ -779,6 +786,16 @@ void wxFrame::IconizeChildFrames(bool bIconize) { wxWindow *win = node->GetData(); + // iconizing the frames with this style under Win95 shell puts them at + // the bottom of the screen (as the MDI children) instead of making + // them appear in the taskbar because they are, by virtue of this + // style, not managed by the taskbar - instead leave Windows take care + // of them +#ifdef __WIN95__ + if ( win->GetWindowStyle() & wxFRAME_TOOL_WINDOW ) + continue; +#endif // Win95 + // the child MDI frames are a special case and should not be touched by // the parent frame - instead, they are managed by the user wxFrame *frame = wxDynamicCast(win, wxFrame);