From: Vadim Zeitlin Date: Fri, 16 Jul 1999 23:06:35 +0000 (+0000) Subject: 1. fixed Maximise() mismatch between wxFrame and wxMDIFrame X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/9b73db3c34aefd98080b425459322fa821ae271f 1. fixed Maximise() mismatch between wxFrame and wxMDIFrame 2. tried (unsuccessfully) to fix the warning in pnghand.cpp 3. fixes for VC and BCC makefiles generation with tmake (still untested) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3021 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/distrib/msw/tmake/bcc.t b/distrib/msw/tmake/bcc.t index b3c3ffe111..97b91352a0 100644 --- a/distrib/msw/tmake/bcc.t +++ b/distrib/msw/tmake/bcc.t @@ -28,8 +28,11 @@ #! needs extra files (sql*.h) so not compiled by default. next if $file =~ /^odbc\./; + $isCFile = $file =~ /\.c$/; $file =~ s/cp?p?$/obj/; - $project{"WXCOMMONOBJS"} .= "\$(MSWDIR)\\" . $file . " " + $obj = "\$(MSWDIR)\\" . $file . " "; + $project{"WXCOMMONOBJS"} .= $obj; + $project{"WXCOBJS"} .= $obj if $isCFile; } #! special hack for Borland in 16 bits needs this file @@ -172,8 +175,9 @@ $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c my @objs = split; foreach (@objs) { $text .= $_ . ": "; + $suffix = $project{"WXCOBJS"} =~ /\Q$_/ ? "c" : '$(SRCSUFF)'; s/MSWDIR/COMMDIR/; - s/obj/\$(SRCSUFF)/; + s/obj/$suffix/; $text .= $_ . "\n\n"; } #$} diff --git a/distrib/msw/tmake/filelist.t b/distrib/msw/tmake/filelist.t index 07d041c9e2..fa697af5e4 100644 --- a/distrib/msw/tmake/filelist.t +++ b/distrib/msw/tmake/filelist.t @@ -9,8 +9,6 @@ #${ open(FILELIST, "filelist.txt") or die "Can't open filelist file: $!\n"; - my %wxfiles; - line: while ( defined($_ = ) ) { chomp; diff --git a/distrib/msw/tmake/filelist.txt b/distrib/msw/tmake/filelist.txt index b8ecf226ed..5a94040c22 100644 --- a/distrib/msw/tmake/filelist.txt +++ b/distrib/msw/tmake/filelist.txt @@ -185,7 +185,7 @@ metafile.cpp M minifram.cpp M msgdlg.cpp M nativdlg.cpp M -notebook.cpp M +notebook.cpp M 32 oleutils.cpp M O ownerdrw.cpp M palette.cpp M diff --git a/distrib/msw/tmake/vc.t b/distrib/msw/tmake/vc.t index e770d955aa..32c9b3dd20 100644 --- a/distrib/msw/tmake/vc.t +++ b/distrib/msw/tmake/vc.t @@ -102,6 +102,11 @@ $(CPPFLAGS) /Fo$@ /c /Tp $< $(CPPFLAGS) /Fo$@ /c /Tp $< << +{..\common}.c{..\common\$D}.obj: + cl @<< +$(CPPFLAGS) /Fo$@ /c /Tc $< +<< + {..\msw}.cpp{..\msw\$D}.obj: cl @<< $(CPPFLAGS) /Fo$@ /c /Tp $< diff --git a/include/wx/msw/mdi.h b/include/wx/msw/mdi.h index 397ab3f1dd..828df13b23 100644 --- a/include/wx/msw/mdi.h +++ b/include/wx/msw/mdi.h @@ -143,7 +143,7 @@ public: const wxString& name = wxFrameNameStr); // MDI operations - virtual void Maximize(); + virtual void Maximize(bool maximize = TRUE); virtual void Restore(); virtual void Activate(); diff --git a/samples/minimal/minimal.cpp b/samples/minimal/minimal.cpp index 82e36b96d9..b65cb80df0 100644 --- a/samples/minimal/minimal.cpp +++ b/samples/minimal/minimal.cpp @@ -105,7 +105,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(Minimal_Quit, MyFrame::OnQuit) EVT_MENU(Minimal_About, MyFrame::OnAbout) - EVT_BUTTON(-1, MyFrame::OnTest) + EVT_MENU(Minimal_Test, MyFrame::OnTest) EVT_PAINT(MyFrame::OnPaint) END_EVENT_TABLE() @@ -159,6 +159,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) wxMenu *menuFile = new wxMenu(wxMENU_TEAROFF); menuFile->Append(Minimal_About, "&About...\tCtrl-A", "Show about dialog"); + menuFile->Append(Minimal_Test, "&Test...\tCtrl-T", "Test"); menuFile->AppendSeparator(); menuFile->Append(Minimal_Quit, "E&xit\tAlt-X", "Quit this program"); @@ -202,8 +203,52 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) wxMessageBox(msg, "About Minimal", wxOK | wxICON_INFORMATION, this); } +struct Foo +{ + Foo(int n_) { n = n_; } + + int n; +}; + +WX_DECLARE_LIST(Foo, FooList); + +#include + +WX_DEFINE_LIST(FooList); + +int FooSort(const Foo **item1, const Foo **item2) +{ + return (*item2)->n - (*item1)->n; +} + +void ShowList(const FooList& list) +{ + wxString msg, str; + msg = "The list elements: ("; + for ( FooList::Node *node = list.GetFirst(); node; node = node->GetNext() ) + { + if ( !!str ) + msg += ", "; + str.Printf("%d", node->GetData()->n); + msg += str; + } + + msg += ')'; + + wxMessageBox(msg, "List contents", wxOK | wxICON_INFORMATION); +} + void MyFrame::OnTest(wxCommandEvent& event) { + FooList list; + list.Append(new Foo(12)); + list.Append(new Foo(3)); + list.Append(new Foo(1)); + list.Append(new Foo(7)); + list.Append(new Foo(4)); + ShowList(list); + list.Sort(FooSort); + ShowList(list); } void MyFrame::OnPaint(wxPaintEvent& event) diff --git a/src/msw/makefile.bcc b/src/msw/makefile.bcc index 4c1467510e..5a0eb1858e 100644 --- a/src/msw/makefile.bcc +++ b/src/msw/makefile.bcc @@ -1,8 +1,6 @@ - - -# This file was automatically generated by tmake at 21:00, 1999/07/14 +# This file was automatically generated by tmake at 01:04, 1999/07/17 # DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE BCC.T! # @@ -100,7 +98,6 @@ GENERICOBJS= $(MSWDIR)\busyinfo.obj \ COMMONOBJS = \ $(MSWDIR)\y_tab.obj \ - $(MSWDIR)\extended.obj \ $(MSWDIR)\cmndata.obj \ $(MSWDIR)\config.obj \ $(MSWDIR)\date.obj \ @@ -114,6 +111,8 @@ COMMONOBJS = \ $(MSWDIR)\dynarray.obj \ $(MSWDIR)\dynlib.obj \ $(MSWDIR)\event.obj \ + $(MSWDIR)\extended.obj \ + $(MSWDIR)\ffile.obj \ $(MSWDIR)\file.obj \ $(MSWDIR)\fileconf.obj \ $(MSWDIR)\filefn.obj \ @@ -146,6 +145,7 @@ COMMONOBJS = \ $(MSWDIR)\string.obj \ $(MSWDIR)\tbarbase.obj \ $(MSWDIR)\tbarsmpl.obj \ + $(MSWDIR)\textcmn.obj \ $(MSWDIR)\textfile.obj \ $(MSWDIR)\time.obj \ $(MSWDIR)\timercmn.obj \ @@ -212,7 +212,6 @@ MSWOBJS = $(MSWDIR)\accel.obj \ $(MSWDIR)\minifram.obj \ $(MSWDIR)\msgdlg.obj \ $(MSWDIR)\nativdlg.obj \ - $(MSWDIR)\notebook.obj \ $(MSWDIR)\ownerdrw.obj \ $(MSWDIR)\palette.obj \ $(MSWDIR)\pen.obj \ @@ -364,8 +363,6 @@ $(MSWDIR)\msgdlg.obj: $(MSWDIR)\msgdlg.$(SRCSUFF) $(MSWDIR)\nativdlg.obj: $(MSWDIR)\nativdlg.$(SRCSUFF) -$(MSWDIR)\notebook.obj: $(MSWDIR)\notebook.$(SRCSUFF) - $(MSWDIR)\ownerdrw.obj: $(MSWDIR)\ownerdrw.$(SRCSUFF) $(MSWDIR)\palette.obj: $(MSWDIR)\palette.$(SRCSUFF) @@ -451,6 +448,10 @@ $(MSWDIR)\dynlib.obj: $(COMMDIR)\dynlib.$(SRCSUFF) $(MSWDIR)\event.obj: $(COMMDIR)\event.$(SRCSUFF) +$(MSWDIR)\extended.obj: $(COMMDIR)\extended.c + +$(MSWDIR)\ffile.obj: $(COMMDIR)\ffile.$(SRCSUFF) + $(MSWDIR)\file.obj: $(COMMDIR)\file.$(SRCSUFF) $(MSWDIR)\fileconf.obj: $(COMMDIR)\fileconf.$(SRCSUFF) @@ -515,6 +516,8 @@ $(MSWDIR)\tbarbase.obj: $(COMMDIR)\tbarbase.$(SRCSUFF) $(MSWDIR)\tbarsmpl.obj: $(COMMDIR)\tbarsmpl.$(SRCSUFF) +$(MSWDIR)\textcmn.obj: $(COMMDIR)\textcmn.$(SRCSUFF) + $(MSWDIR)\textfile.obj: $(COMMDIR)\textfile.$(SRCSUFF) $(MSWDIR)\time.obj: $(COMMDIR)\time.$(SRCSUFF) @@ -525,7 +528,7 @@ $(MSWDIR)\tokenzr.obj: $(COMMDIR)\tokenzr.$(SRCSUFF) $(MSWDIR)\txtstrm.obj: $(COMMDIR)\txtstrm.$(SRCSUFF) -$(MSWDIR)\unzip.obj: $(COMMDIR)\unzip.$(SRCSUFF) +$(MSWDIR)\unzip.obj: $(COMMDIR)\unzip.c $(MSWDIR)\utilscmn.obj: $(COMMDIR)\utilscmn.$(SRCSUFF) diff --git a/src/msw/mdi.cpp b/src/msw/mdi.cpp index 551c1cc4ec..44a6a21faa 100644 --- a/src/msw/mdi.cpp +++ b/src/msw/mdi.cpp @@ -729,25 +729,35 @@ void wxMDIChildFrame::InternalSetMenuBar() // MDI operations // --------------------------------------------------------------------------- -void wxMDIChildFrame::Maximize() +void wxMDIChildFrame::Maximize(bool maximize) { wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); if ( parent && parent->GetClientWindow() ) - ::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIMAXIMIZE, (WPARAM) GetHwnd(), 0); + { + ::SendMessage(GetWinHwnd(parent->GetClientWindow()), + maximize ? WM_MDIMAXIMIZE : WM_MDIRESTORE, + (WPARAM)GetHwnd(), 0); + } } void wxMDIChildFrame::Restore() { wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); if ( parent && parent->GetClientWindow() ) - ::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIRESTORE, (WPARAM) GetHwnd(), 0); + { + ::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIRESTORE, + (WPARAM) GetHwnd(), 0); + } } void wxMDIChildFrame::Activate() { wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); if ( parent && parent->GetClientWindow() ) - ::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIACTIVATE, (WPARAM) GetHwnd(), 0); + { + ::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIACTIVATE, + (WPARAM) GetHwnd(), 0); + } } // --------------------------------------------------------------------------- diff --git a/src/msw/pnghand.cpp b/src/msw/pnghand.cpp index c855358dd7..0cb773c7c0 100644 --- a/src/msw/pnghand.cpp +++ b/src/msw/pnghand.cpp @@ -74,7 +74,7 @@ ima_png_error(png_struct *png_ptr, char *message) // static wxGifReaderIter* iter; wxPalette *wxCopyPalette(const wxPalette *cmap); -wxPNGReader::wxPNGReader(void) +wxPNGReader::wxPNGReader() { filetype = 0; RawImage = NULL; // Image data @@ -265,7 +265,7 @@ void wxPNGReader::NullData() Palette = NULL; } -wxBitmap* wxPNGReader::GetBitmap(void) +wxBitmap* wxPNGReader::GetBitmap() { wxBitmap *bitmap = new wxBitmap; if ( InstantiateBitmap(bitmap) ) @@ -354,7 +354,7 @@ wxPalette *wxCopyPalette(const wxPalette *cmap) return newCmap; } -wxMask *wxPNGReader::CreateMask(void) +wxMask *wxPNGReader::CreateMask() { HBITMAP hBitmap = ::CreateBitmap(GetWidth(), GetHeight(), 1, 1, NULL); @@ -385,141 +385,147 @@ wxMask *wxPNGReader::CreateMask(void) bool wxPNGReader::ReadFile(wxChar * ImageFileName) { - int number_passes; + int number_passes; - if (ImageFileName) - wxStrcpy(filename, ImageFileName); + if (ImageFileName) + wxStrcpy(filename, ImageFileName); - FILE *fp; - png_struct *png_ptr; - png_info *info_ptr; - wxPNGReaderIter iter(this); + FILE *fp; + png_struct *png_ptr; + png_info *info_ptr; - /* open the file */ - fp = fopen(wxConvFile.cWX2MB(filename), "rb"); - if (!fp) - return FALSE; + /* open the file */ + fp = fopen(wxConvFile.cWX2MB(filename), "rb"); + if (!fp) + return FALSE; - /* allocate the necessary structures */ - png_ptr = new (png_struct); - if (!png_ptr) - { - fclose(fp); - return FALSE; - } + /* allocate the necessary structures */ + png_ptr = new (png_struct); + if (!png_ptr) + { + fclose(fp); + return FALSE; + } - info_ptr = new (png_info); - if (!info_ptr) - { - fclose(fp); - delete(png_ptr); - return FALSE; - } - /* set error handling */ - if (setjmp(png_ptr->jmpbuf)) - { - png_read_destroy(png_ptr, info_ptr, (png_info *)0); - fclose(fp); - delete(png_ptr); - delete(info_ptr); + info_ptr = new (png_info); + if (!info_ptr) + { + fclose(fp); + delete(png_ptr); + return FALSE; + } + /* set error handling */ + if (setjmp(png_ptr->jmpbuf)) + { + png_read_destroy(png_ptr, info_ptr, (png_info *)0); + fclose(fp); + delete(png_ptr); + delete(info_ptr); - /* If we get here, we had a problem reading the file */ - return FALSE; - } - //png_set_error(ima_png_error, NULL); + /* If we get here, we had a problem reading the file */ + return FALSE; + } + //png_set_error(ima_png_error, NULL); - /* initialize the structures, info first for error handling */ - png_info_init(info_ptr); - png_read_init(png_ptr); + /* initialize the structures, info first for error handling */ + png_info_init(info_ptr); + png_read_init(png_ptr); - /* set up the input control */ - png_init_io(png_ptr, fp); + /* set up the input control */ + png_init_io(png_ptr, fp); - /* read the file information */ - png_read_info(png_ptr, info_ptr); + /* read the file information */ + png_read_info(png_ptr, info_ptr); - /* allocate the memory to hold the image using the fields - of png_info. */ - png_color_16 my_background={ 0, 31, 127, 255, 0 }; + /* allocate the memory to hold the image using the fields + of png_info. */ + png_color_16 my_background={ 0, 31, 127, 255, 0 }; - if (info_ptr->valid & PNG_INFO_bKGD) + if (info_ptr->valid & PNG_INFO_bKGD) { - png_set_background(png_ptr, &(info_ptr->background), - PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); + png_set_background(png_ptr, &(info_ptr->background), + PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); if ( info_ptr->num_palette > 0 ) bgindex = info_ptr->background.index; } - else { - png_set_background(png_ptr, &my_background, - PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); + else { + png_set_background(png_ptr, &my_background, + PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); // Added by JACS: guesswork! if ( info_ptr->num_trans != 0 ) bgindex = info_ptr->num_trans - 1 ; - } + } - /* tell libpng to strip 16 bit depth files down to 8 bits */ - if (info_ptr->bit_depth == 16) - png_set_strip_16(png_ptr); + /* tell libpng to strip 16 bit depth files down to 8 bits */ + if (info_ptr->bit_depth == 16) + png_set_strip_16(png_ptr); - int pixel_depth=(info_ptr->pixel_depth<24) ? info_ptr->pixel_depth: 24; - Create(info_ptr->width, info_ptr->height, pixel_depth, - info_ptr->color_type); + int pixel_depth=(info_ptr->pixel_depth<24) ? info_ptr->pixel_depth: 24; + Create(info_ptr->width, info_ptr->height, pixel_depth, + info_ptr->color_type); - if (info_ptr->num_palette>0) + if (info_ptr->num_palette>0) { - SetPalette((int)info_ptr->num_palette, (rgb_color_struct*)info_ptr->palette); + SetPalette((int)info_ptr->num_palette, (rgb_color_struct*)info_ptr->palette); } - int row_stride = info_ptr->width * ((pixel_depth+7)>>3); - // printf("P = %d D = %d RS= %d ", info_ptr->num_palette, info_ptr->pixel_depth,row_stride); -// printf("CT = %d TRS = %d BD= %d ", info_ptr->color_type, info_ptr->valid & PNG_INFO_tRNS,info_ptr->bit_depth); + int row_stride = info_ptr->width * ((pixel_depth+7)>>3); + // printf("P = %d D = %d RS= %d ", info_ptr->num_palette, info_ptr->pixel_depth,row_stride); + // printf("CT = %d TRS = %d BD= %d ", info_ptr->color_type, info_ptr->valid & PNG_INFO_tRNS,info_ptr->bit_depth); - byte *row_pointers = new byte[row_stride]; + byte *row_pointers = new byte[row_stride]; - /* turn on interlace handling */ - if (info_ptr->interlace_type) - number_passes = png_set_interlace_handling(png_ptr); - else - number_passes = 1; -// printf("NP = %d ", number_passes); + /* turn on interlace handling */ + if (info_ptr->interlace_type) + number_passes = png_set_interlace_handling(png_ptr); + else + number_passes = 1; + // printf("NP = %d ", number_passes); + + // don't use the object to prevent warnings from VC++ about "unportable + // interaction between setjmp and C++ object destruction" (this is a correct + // warning, of course!) + wxPNGReaderIter *iter = new wxPNGReaderIter(this); + for (int pass=0; pass< number_passes; pass++) + { + iter->upset(); + int y=0; + do { + //(unsigned char *)iter.GetRow(); + if (info_ptr->interlace_type) { + if (pass>0) + iter->GetRow(row_pointers, row_stride); + png_read_row(png_ptr, row_pointers, NULL); + } + else + png_read_row(png_ptr, row_pointers, NULL); - for (int pass=0; pass< number_passes; pass++) { - iter.upset(); - int y=0; - do { -// (unsigned char *)iter.GetRow(); - if (info_ptr->interlace_type) { - if (pass>0) - iter.GetRow(row_pointers, row_stride); - png_read_row(png_ptr, row_pointers, NULL); + iter->SetRow(row_pointers, row_stride); + y++; + } while(iter->PrevRow()); + // printf("Y=%d ",y); } - else - png_read_row(png_ptr, row_pointers, NULL); - iter.SetRow(row_pointers, row_stride); - y++; - } while(iter.PrevRow()); -// printf("Y=%d ",y); - } - delete[] row_pointers; + delete iter; + delete[] row_pointers; - /* read the rest of the file, getting any additional chunks - in info_ptr */ - png_read_end(png_ptr, info_ptr); + /* read the rest of the file, getting any additional chunks + in info_ptr */ + png_read_end(png_ptr, info_ptr); - /* clean up after the read, and free any memory allocated */ - png_read_destroy(png_ptr, info_ptr, (png_info *)0); + /* clean up after the read, and free any memory allocated */ + png_read_destroy(png_ptr, info_ptr, (png_info *)0); - /* free the structures */ - delete(png_ptr); - delete(info_ptr); + /* free the structures */ + delete(png_ptr); + delete(info_ptr); - /* close the file */ - fclose(fp); + /* close the file */ + fclose(fp); - /* that's it */ - return TRUE; + /* that's it */ + return TRUE; }