diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2003-08-02 05:54:43 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2003-08-02 05:54:43 +0000 |
| commit | c2e889169308b826f68becc4c2c14ede857689c3 (patch) | |
| tree | 2a89063465be54138298fc8c0b1024ac8fe424d4 | |
| parent | 111cbdb0b060f7647e5d8852c80eeec54e442687 (diff) | |
OS X: some changes to support Apples ProjectBuilder.
OS X: FLTK now queries the true windows position from the
window manager after creating a new window. This fixes the
problem with popup menues showing up at the wrong position.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@3067 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
| -rw-r--r-- | CHANGES | 5 | ||||
| -rw-r--r-- | FL/filename.H | 14 | ||||
| -rw-r--r-- | FL/math.h | 15 | ||||
| -rw-r--r-- | fluid/fluid.cxx | 6 | ||||
| -rw-r--r-- | src/Fl_mac.cxx | 16 |
5 files changed, 45 insertions, 11 deletions
@@ -1,5 +1,10 @@ CHANGES IN FLTK 1.1.4rc2 + - OS X: some changes to make ProjectBuilder compiles + possible. I'll add the PB project files later. + - OS X: FLTK would not know where a window was positioned + by the OS. As a result, popup menus could open at + wrong positions. - Fl_Window::show(argc,argv) incorrectly opened the display prior to parsing the arguments; this prevented the "-display foo" option from working (STR #111) diff --git a/FL/filename.H b/FL/filename.H index 088d6c8a3..2c8d99376 100644 --- a/FL/filename.H +++ b/FL/filename.H @@ -1,5 +1,5 @@ /* - * "$Id: filename.H,v 1.11.2.4.2.12 2003/01/30 21:40:42 easysw Exp $" + * "$Id: filename.H,v 1.11.2.4.2.13 2003/08/02 05:54:43 matthiaswm Exp $" * * Filename header file for the Fast Light Tool Kit (FLTK). * @@ -55,6 +55,16 @@ inline int fl_filename_relative(char *to, const char *from) { return fl_filename struct dirent {char d_name[1];}; +# elif defined(__APPLE__) && defined(__PROJECTBUILDER__) + +// Apple's ProjectBuilder has the nasty habit of including recursively +// down the file tree. To avoid re-including <FL/dirent.h> we must +// directly include the systems math file. (Plus, I could not find a +// predefined macro for ProjectBuilder builds, so we have to define it +// in the project) +# include <sys/types.h> +# include "/usr/include/dirent.h" + # else /* * WARNING: on some systems (very few nowadays?) <dirent.h> may not exist. @@ -117,5 +127,5 @@ FL_EXPORT int fl_filename_list(const char *d, struct dirent ***l, #endif /* FL_FILENAME_H */ /* - * End of "$Id: filename.H,v 1.11.2.4.2.12 2003/01/30 21:40:42 easysw Exp $". + * End of "$Id: filename.H,v 1.11.2.4.2.13 2003/08/02 05:54:43 matthiaswm Exp $". */ @@ -1,5 +1,5 @@ // -// "$Id: math.h,v 1.4.2.4.2.8 2003/01/30 21:40:55 easysw Exp $" +// "$Id: math.h,v 1.4.2.4.2.9 2003/08/02 05:54:43 matthiaswm Exp $" // // Math header file for the Fast Light Tool Kit (FLTK). // @@ -26,7 +26,16 @@ #ifndef fl_math_h # define fl_math_h -# include <math.h> +// Apple's ProjectBuilder has the nasty habit of including recursively +// down the file tree. To avoid re-including <FL/math.h> we must +// directly include the systems math file. (Plus, I could not find a +// predefined macro for ProjectBuilder builds, so we have to define it +// in the project) +# if defined(__APPLE__) && defined(__PROJECTBUILDER__) +# include "/usr/include/math.h" +# else +# include <math.h> +# endif # ifndef M_PI @@ -57,5 +66,5 @@ inline double copysign(double a, double b) {return b<0 ? -a : a;} // -// End of "$Id: math.h,v 1.4.2.4.2.8 2003/01/30 21:40:55 easysw Exp $". +// End of "$Id: math.h,v 1.4.2.4.2.9 2003/08/02 05:54:43 matthiaswm Exp $". // diff --git a/fluid/fluid.cxx b/fluid/fluid.cxx index 217323f4d..634964bef 100644 --- a/fluid/fluid.cxx +++ b/fluid/fluid.cxx @@ -1,5 +1,5 @@ // -// "$Id: fluid.cxx,v 1.15.2.13.2.40 2003/07/29 02:12:36 easysw Exp $" +// "$Id: fluid.cxx,v 1.15.2.13.2.41 2003/08/02 05:54:43 matthiaswm Exp $" // // FLUID main entry for the Fast Light Tool Kit (FLTK). // @@ -650,7 +650,7 @@ void update_history(const char *flname) { } // Shell command support... -#if !defined(WIN32) || defined(__CYGWIN__) +#if ( !defined(WIN32) || defined(__CYGWIN__) ) && ( !defined(__MWERKS__) && !defined(__APPLE__) ) // Support the full piped shell command... static FILE *shell_pipe = 0; @@ -886,5 +886,5 @@ int main(int argc,char **argv) { } // -// End of "$Id: fluid.cxx,v 1.15.2.13.2.40 2003/07/29 02:12:36 easysw Exp $". +// End of "$Id: fluid.cxx,v 1.15.2.13.2.41 2003/08/02 05:54:43 matthiaswm Exp $". // diff --git a/src/Fl_mac.cxx b/src/Fl_mac.cxx index e78f9a8e5..bfda9b7b1 100644 --- a/src/Fl_mac.cxx +++ b/src/Fl_mac.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_mac.cxx,v 1.1.2.50 2003/07/21 05:38:16 matthiaswm Exp $" +// "$Id: Fl_mac.cxx,v 1.1.2.51 2003/08/02 05:54:43 matthiaswm Exp $" // // MacOS specific code for the Fast Light Tool Kit (FLTK). // @@ -666,6 +666,10 @@ static pascal OSStatus carbonWindowHandler( EventHandlerCallRef nextHandler, Eve switch ( kind ) { + case kEventWindowBoundsChanging: + GetEventParameter( event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, ¤tBounds ); + GetEventParameter( event, kEventParamOriginalBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &originalBounds ); + break; case kEventWindowDrawContent: handleUpdateEvent( fl_xid( window ) ); ret = noErr; @@ -1615,8 +1619,9 @@ void Fl_X::make(Fl_Window* w) { kEventClassWindow, kEventWindowActivated }, { kEventClassWindow, kEventWindowDeactivated }, { kEventClassWindow, kEventWindowClose }, + { kEventClassWindow, kEventWindowBoundsChanging }, { kEventClassWindow, kEventWindowBoundsChanged } }; - ret = InstallWindowEventHandler( x->xid, windowHandler, 7, windowEvents, w, 0L ); + ret = InstallWindowEventHandler( x->xid, windowHandler, 8, windowEvents, w, 0L ); ret = InstallTrackingHandler( dndTrackingHandler, x->xid, w ); ret = InstallReceiveHandler( dndReceiveHandler, x->xid, w ); } @@ -1637,6 +1642,11 @@ void Fl_X::make(Fl_Window* w) ShowWindow(x->xid); + Rect rect; + GetWindowBounds(x->xid, kWindowContentRgn, &rect); + w->x(rect.left); w->y(rect.top); + w->w(rect.right-rect.left); w->h(rect.bottom-rect.top); + w->handle(FL_SHOW); w->redraw(); // force draw to happen w->set_visible(); @@ -1867,6 +1877,6 @@ void Fl::paste(Fl_Widget &receiver, int clipboard) { // -// End of "$Id: Fl_mac.cxx,v 1.1.2.50 2003/07/21 05:38:16 matthiaswm Exp $". +// End of "$Id: Fl_mac.cxx,v 1.1.2.51 2003/08/02 05:54:43 matthiaswm Exp $". // |
