From 6c3a9ec36a4cc68ee241a96511d36f611370e947 Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Sat, 15 Dec 2001 15:20:54 +0000 Subject: [PATCH] Add "shown()" method to Fl_File_Chooser. Use "while shown" instead of "while visible" in chooser functions, since a desktop switch will make FLTK think the window is not visible and prematurely return whatever file you have selected. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1849 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- CHANGES | 4 ++++ FL/Fl_File_Chooser.H | 1 + src/Fl_File_Chooser.cxx | 4 ++++ src/Fl_File_Chooser.fl | 8 ++++++-- src/fl_file_dir.cxx | 8 ++++---- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 235361fff..1fa93d05d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,9 @@ CHANGES IN FLTK 1.1.0b8 + - The Fl_File_Chooser widget did not provide a shown() + method, and fl_file_chooser() and fl_dir_chooser() did + not wait on shown(); this would cause them to return + prematurely if you switched desktops/workspaces. - Cosmetic changes to plastic boxtypes. Now look much better for large areas and the sides now have a much greater "3D" feeling to them. diff --git a/FL/Fl_File_Chooser.H b/FL/Fl_File_Chooser.H index 6faa205f9..4be5bb883 100644 --- a/FL/Fl_File_Chooser.H +++ b/FL/Fl_File_Chooser.H @@ -68,6 +68,7 @@ public: const char * label(); void rescan(); void show(); + int shown(); void textcolor(Fl_Color c); Fl_Color textcolor(); void textfont(uchar f); diff --git a/src/Fl_File_Chooser.cxx b/src/Fl_File_Chooser.cxx index 9ab24d56b..ab5ea30d9 100644 --- a/src/Fl_File_Chooser.cxx +++ b/src/Fl_File_Chooser.cxx @@ -213,6 +213,10 @@ void Fl_File_Chooser::show() { fileList->deselect(); } +int Fl_File_Chooser::shown() { + return window->shown(); +} + void Fl_File_Chooser::textcolor(Fl_Color c) { fileList->textcolor(c); } diff --git a/src/Fl_File_Chooser.fl b/src/Fl_File_Chooser.fl index b92548d44..215a81fc5 100644 --- a/src/Fl_File_Chooser.fl +++ b/src/Fl_File_Chooser.fl @@ -89,8 +89,7 @@ fileList->filter(p); type(t); value(d); callback_ = 0; -data_ = 0;} {selected - } +data_ = 0;} {} } decl {void (*callback_)(Fl_File_Chooser*, void *);} {} decl {void *data_;} {} @@ -156,6 +155,11 @@ rescan();} {} code {window->show(); fileList->deselect();} {} } + Function {shown()} {return_type int + } { + code {return window->shown();} {selected + } + } Function {textcolor(Fl_Color c)} {return_type void } { code {fileList->textcolor(c);} {} diff --git a/src/fl_file_dir.cxx b/src/fl_file_dir.cxx index f8ffe82d6..463760591 100644 --- a/src/fl_file_dir.cxx +++ b/src/fl_file_dir.cxx @@ -1,5 +1,5 @@ // -// "$Id: fl_file_dir.cxx,v 1.1.2.3 2001/11/26 00:15:06 easysw Exp $" +// "$Id: fl_file_dir.cxx,v 1.1.2.4 2001/12/15 15:20:54 easysw Exp $" // // File chooser widget for the Fast Light Tool Kit (FLTK). // @@ -61,7 +61,7 @@ char* fl_file_chooser(const char* message, const char* pat, const char* fname) fc->show(); - while (fc->visible()) + while (fc->shown()) Fl::wait(); if (fc->value()) { @@ -91,7 +91,7 @@ char* fl_dir_chooser(const char* message, const char* fname) fc->show(); - while (fc->visible()) + while (fc->shown()) Fl::wait(); if (fc->value()) { @@ -103,5 +103,5 @@ char* fl_dir_chooser(const char* message, const char* fname) // -// End of "$Id: fl_file_dir.cxx,v 1.1.2.3 2001/11/26 00:15:06 easysw Exp $". +// End of "$Id: fl_file_dir.cxx,v 1.1.2.4 2001/12/15 15:20:54 easysw Exp $". //