|
Author: manolo
Date: 2011-09-15 05:25:11 -0700 (Thu, 15 Sep 2011)
New Revision: 9037
Log:
Transferred to branch-3.0 all changes in branch-1.3/src and branch-1.3/FL until r9035.
Modified:
branches/branch-3.0/include/fltk3/PostScript.h
branches/branch-3.0/include/fltk3/Printer.h
branches/branch-3.0/include/fltk3/RoundButton.h
branches/branch-3.0/include/fltk3/osx.h
branches/branch-3.0/src/fltk3/cocoa.mm
branches/branch-3.0/src/fltk3/cocoaNativeFileChooser.mm
branches/branch-3.0/src/fltk3/cocoaQuartzPrinter.mm
Modified: branches/branch-3.0/include/fltk3/PostScript.h
===================================================================
--- branches/branch-3.0/include/fltk3/PostScript.h 2011-09-14 15:19:20 UTC (rev 9036)
+++ branches/branch-3.0/include/fltk3/PostScript.h 2011-09-15 12:25:11 UTC (rev 9037)
@@ -217,7 +217,7 @@
*/
class FLTK3_EXPORT PostScriptFileDevice : public fltk3::PagedDevice {
#ifdef __APPLE__
- Fl_CGContextRef gc;
+ CGContextRef gc;
#endif
protected:
fltk3::PostScriptGraphicsDriver *driver();
Modified: branches/branch-3.0/include/fltk3/Printer.h
===================================================================
--- branches/branch-3.0/include/fltk3/Printer.h 2011-09-14 15:19:20 UTC (rev 9036)
+++ branches/branch-3.0/include/fltk3/Printer.h 2011-09-15 12:25:11 UTC (rev 9037)
@@ -65,9 +65,9 @@
float scale_x;
float scale_y;
float angle; // rotation angle in radians
- Fl_PMPrintSession printSession;
- Fl_PMPageFormat pageFormat;
- Fl_PMPrintSettings printSettings;
+ PMPrintSession printSession;
+ PMPageFormat pageFormat;
+ PMPrintSettings printSettings;
#elif defined(WIN32)
int abortPrint;
PRINTDLG pd;
Modified: branches/branch-3.0/include/fltk3/RoundButton.h
===================================================================
--- branches/branch-3.0/include/fltk3/RoundButton.h 2011-09-14 15:19:20 UTC (rev 9036)
+++ branches/branch-3.0/include/fltk3/RoundButton.h 2011-09-15 12:25:11 UTC (rev 9037)
@@ -45,7 +45,7 @@
turning on a light, rather than drawing pushed in. The shape of the
"light" is initially set to fltk3::ROUND_DOWN_BOX. The color of the light
when on is controlled with selection_color(), which defaults to
- fltk3::RED.
+ fltk3::FOREGROUND_COLOR.
*/
class FLTK3_EXPORT RoundButton : public LightButton {
public:
Modified: branches/branch-3.0/include/fltk3/osx.h
===================================================================
--- branches/branch-3.0/include/fltk3/osx.h 2011-09-14 15:19:20 UTC (rev 9036)
+++ branches/branch-3.0/include/fltk3/osx.h 2011-09-15 12:25:11 UTC (rev 9037)
@@ -33,38 +33,23 @@
#if !defined(Fltk3_X_H)
# error "Never use <fltk3/osx.h> directly; include <fltk3/x.h> instead."
#endif // !Fltk3_X_H
-#include <fltk3/Widget.h>
typedef void* Window; // this is really a pointer to the subclass FLWindow of NSWindow
-namespace fltk3 {
- typedef void* Offscreen; // this is really a CGContextRef
- typedef void* Bitmask; // this is really a CGImageRef
-}
-
-#include <AvailabilityMacros.h>
-#ifndef MAC_OS_X_VERSION_10_3
-#define MAC_OS_X_VERSION_10_3 1030
-#endif
-#ifndef MAC_OS_X_VERSION_10_4
-#define MAC_OS_X_VERSION_10_4 1040
-#endif
-#ifndef MAC_OS_X_VERSION_10_5
-#define MAC_OS_X_VERSION_10_5 1050
-#endif
-#ifndef MAC_OS_X_VERSION_10_6
-#define MAC_OS_X_VERSION_10_6 1060
-#endif
-
#if !(defined(FL_LIBRARY) || defined(FLTK3_INTERNALS)) // this part is used when compiling an application program
+#include <fltk3/Widget.h>
namespace fltk3 {
- typedef void* Region;
+ typedef struct flCocoaRegion* Region;
}
-typedef void* Fl_CGContextRef;
-typedef void* Fl_PMPrintSettings;
-typedef void* Fl_PMPageFormat;
-typedef void* Fl_PMPrintSession;
+typedef struct CGContext* CGContextRef;
+typedef struct OpaquePMPrintSettings* PMPrintSettings;
+typedef struct OpaquePMPageFormat* PMPageFormat;
+typedef struct OpaquePMPrintSession* PMPrintSession;
+typedef struct CGImage* CGImageRef;
+namespace fltk3 {
+ typedef CGContextRef Offscreen;
+ }
#else // this part must be compiled when building the FLTK libraries
@@ -72,12 +57,8 @@
#include <ApplicationServices/ApplicationServices.h>
#undef check // because of fltk3::check()
-typedef CGContextRef Fl_CGContextRef;
-typedef PMPrintSettings Fl_PMPrintSettings;
-typedef PMPageFormat Fl_PMPageFormat;
-typedef PMPrintSession Fl_PMPrintSession;
-
namespace fltk3 {
+ typedef CGContextRef Offscreen;
typedef struct flCocoaRegion {
int count;
CGRect *rects;
@@ -167,32 +148,48 @@
RGBColor rgb;
ulong pen;
} *fl_current_xmap;
-extern FLTK3_EXPORT Window fl_window;
+extern Window fl_window;
#endif // FL_LIBRARY || FLTK3_INTERNALS
-extern FLTK3_EXPORT Fl_CGContextRef fl_gc;
+#ifndef MAC_OS_X_VERSION_10_3
+#define MAC_OS_X_VERSION_10_3 1030
+#endif
+#ifndef MAC_OS_X_VERSION_10_4
+#define MAC_OS_X_VERSION_10_4 1040
+#endif
+#ifndef MAC_OS_X_VERSION_10_5
+#define MAC_OS_X_VERSION_10_5 1050
+#endif
+#ifndef MAC_OS_X_VERSION_10_6
+#define MAC_OS_X_VERSION_10_6 1060
+#endif
namespace fltk3 {
- extern FLTK3_EXPORT class SysMenuBar *sys_menu_bar;
+ typedef CGImageRef Bitmask;
+ }
+
+extern CGContextRef fl_gc;
+namespace fltk3 {
+ extern class SysMenuBar *sys_menu_bar;
}
extern Window fl_xid(const fltk3::Window*);
-
+extern fltk3::Window* fl_find(Window xid);
namespace fltk3 {
void clip_region(fltk3::Region);
}
-extern FLTK3_EXPORT fltk3::Bitmask fl_create_bitmask(int w, int h, const uchar *data);
-extern FLTK3_EXPORT fltk3::Bitmask fl_create_alphamask(int w, int h, int d, int ld, const uchar *data);
-extern FLTK3_EXPORT void fl_delete_bitmask(fltk3::Bitmask bm);
+extern fltk3::Bitmask fl_create_bitmask(int w, int h, const uchar *data);
+extern fltk3::Bitmask fl_create_alphamask(int w, int h, int d, int ld, const uchar *data);
+extern void fl_delete_bitmask(fltk3::Bitmask bm);
extern fltk3::Offscreen fl_create_offscreen(int w, int h);
extern void fl_copy_offscreen(int x,int y,int w,int h, fltk3::Offscreen gWorld, int srcx,int srcy);
extern void fl_delete_offscreen(fltk3::Offscreen gWorld);
extern void fl_begin_offscreen(fltk3::Offscreen gWorld);
extern void fl_end_offscreen();
-extern FLTK3_EXPORT int fl_parse_color(const char* p, uchar& r, uchar& g, uchar& b);
+extern int fl_parse_color(const char* p, uchar& r, uchar& g, uchar& b);
extern void fl_open_display();
#endif // FLTK3_DOXYGEN
Modified: branches/branch-3.0/src/fltk3/cocoa.mm
===================================================================
--- branches/branch-3.0/src/fltk3/cocoa.mm 2011-09-14 15:19:20 UTC (rev 9036)
+++ branches/branch-3.0/src/fltk3/cocoa.mm 2011-09-15 12:25:11 UTC (rev 9037)
@@ -5,21 +5,12 @@
//
// Copyright 1998-2011 by Bill Spitzak and others.
//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Library General Public
-// License as published by the Free Software Foundation; either
-// version 2 of the License, or (at your option) any later version.
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file. If this
+// file is missing or damaged, see the license at:
//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Library General Public License for more details.
+// http://www.fltk.org/COPYING.php
//
-// You should have received a copy of the GNU Library General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-// USA.
-//
// Please report all bugs and problems on the following page:
//
// http://www.fltk.org/str.php
@@ -904,61 +895,12 @@
static void (*open_cb)(const char *) = 0;
-
/*
* Install an open documents event handler...
*/
-@interface FLAppleEventHandler : NSObject
-{
-}
-- (void)handleAppleEvent:(NSAppleEventDescriptor *)event withReplyEvent: (NSAppleEventDescriptor *)replyEvent;
-@end
-@implementation FLAppleEventHandler
-- (void)handleAppleEvent:(NSAppleEventDescriptor *)event withReplyEvent: (NSAppleEventDescriptor *)replyEvent
-{
- NSAppleEventDescriptor *single = [event descriptorAtIndex:1];
- const AEDesc *document = [single aeDesc];
- long i, n;
- FSRef fileRef;
- AEKeyword keyWd;
- DescType typeCd;
- Size actSz;
- char filename[1024];
- // Lock access to FLTK in this thread...
- fl_lock_function();
-
- // Open the documents via the callback...
- if (AECountItems(document, &n) == noErr) {
- for (i = 1; i <= n; i ++) {
- AEGetNthPtr(document, i, typeFSRef, &keyWd, &typeCd,
- (Ptr)&fileRef, sizeof(fileRef),
- (actSz = sizeof(fileRef), &actSz));
- FSRefMakePath( &fileRef, (UInt8*)filename, sizeof(filename) );
-
- (*open_cb)(filename);
- }
- }
- // Unlock access to FLTK for all threads...
- fl_unlock_function();
-}
-@end
-
void fl_open_callback(void (*cb)(const char *)) {
- static NSAppleEventManager *aeventmgr = nil;
- static FLAppleEventHandler *handler;
fl_open_display();
- if (!aeventmgr) {
- aeventmgr = [NSAppleEventManager sharedAppleEventManager];
- handler = [[FLAppleEventHandler alloc] init];
- }
-
open_cb = cb;
- if (cb) {
- [aeventmgr setEventHandler:handler andSelector:@selector(handleAppleEvent:withReplyEvent:)
- forEventClass:kCoreEventClass andEventID:kAEOpenDocuments];
- } else {
- [aeventmgr removeEventHandlerForEventClass:kCoreEventClass andEventID:kAEOpenDocuments];
- }
}
@@ -993,6 +935,7 @@
- (void)applicationWillHide:(NSNotification *)notify;
- (void)applicationWillUnhide:(NSNotification *)notify;
- (id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)client;
+- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename;
@end
@implementation FLDelegate
- (void)windowDidMove:(NSNotification *)notif
@@ -1128,7 +1071,7 @@
for (x = Fl_X::first;x;x = x->next) {
FLWindow *cw = (FLWindow*)x->xid;
fltk3::Window *win = x->w;
- if (win && cw) {
+ if (win && cw && [cw isVisible]) {
if (win->modal()) {
[cw setLevel:NSModalPanelWindowLevel];
if (topModal)
@@ -1172,7 +1115,7 @@
for (x = Fl_X::first;x;x = x->next) {
FLWindow *cw = (FLWindow*)x->xid;
fltk3::Window *win = x->w;
- if (win && cw) {
+ if (win && cw && [cw isVisible]) {
if (win->modal()) {
[cw setLevel:NSNormalWindowLevel];
if (top) [cw orderWindow:NSWindowAbove relativeTo:[top windowNumber]];
@@ -1183,7 +1126,7 @@
for (x = Fl_X::first;x;x = x->next) {
FLWindow *cw = (FLWindow*)x->xid;
fltk3::Window *win = x->w;
- if (win && cw) {
+ if (win && cw && [cw isVisible]) {
if (win->non_modal()) {
[cw setLevel:NSNormalWindowLevel];
if (top) [cw orderWindow:NSWindowAbove relativeTo:[top windowNumber]];
@@ -1209,7 +1152,6 @@
for (x = Fl_X::first;x;x = x->next) {
fltk3::Window *w = x->w;
if ( !w->parent() ) {
- if ( w->border() || (!w->modal() && !w->tooltip_window()) ) fltk3::handle( fltk3::FOCUS, w);
fltk3::handle( fltk3::SHOW, w);
}
}
@@ -1227,6 +1169,16 @@
}
return nil;
}
+- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
+{
+ if (open_cb) {
+ fl_lock_function();
+ (*open_cb)([filename UTF8String]);
+ fl_unlock_function();
+ return YES;
+ }
+ return NO;
+}
@end
@implementation FLApplication
@@ -2674,7 +2626,11 @@
void Fl_X::destroy() {
// subwindows share their xid with their parent window, so should not close it
if (!subwindow && w && !w->parent() && xid) {
- [[(NSWindow *)xid contentView] release];
+ NSView *topview = [(NSWindow *)xid contentView];
+ if ( [NSView focusView] == topview ) {
+ [topview unlockFocus];
+ }
+ [topview release];
[(NSWindow *)xid close];
}
}
@@ -2893,6 +2849,7 @@
scale = (float)w/win->w();
if ((float)h/wh < scale) scale = (float)h/wh;
printer.scale(scale);
+ printer.printable_rect(&w, &h);
}
//#define ROTATE 1
#ifdef ROTATE
@@ -2900,10 +2857,10 @@
printer.printable_rect(&w, &h);
printer.origin(w/2, h/2 );
printer.rotate(20.);
- printer.print_window( win, - win->w()/2, - win->h()/2 );
#else
- printer.print_window(win);
+ printer.origin(w/2, h/2);
#endif
+ printer.print_window( win, - ww/2, - wh/2 );
printer.end_page();
printer.end_job();
fl_unlock_function();
Modified: branches/branch-3.0/src/fltk3/cocoaNativeFileChooser.mm
===================================================================
--- branches/branch-3.0/src/fltk3/cocoaNativeFileChooser.mm 2011-09-14 15:19:20 UTC (rev 9036)
+++ branches/branch-3.0/src/fltk3/cocoaNativeFileChooser.mm 2011-09-15 12:25:11 UTC (rev 9037)
@@ -129,8 +129,6 @@
// POST BROWSER
int err = post();
- _filt_total = 0;
-
return(err);
}
@@ -408,7 +406,7 @@
}
rank++;
*(q++) = '\n';
- if (*p) p = r + 1;
+ if (*r) p = r + 1; else p = r;
} while(*p);
*q = 0;
return t;
@@ -609,6 +607,7 @@
}
if (_directory && !dir) dir = [[NSString alloc] initWithUTF8String:_directory];
if (_filt_total) {
+ if (_filt_value >= _filt_total) _filt_value = _filt_total - 1;
char *t = prepareMacFilter(_filt_total, _filter, _filt_patt);
popup = createPopupAccessory((NSSavePanel*)_panel, t, [[(NSSavePanel*)_panel nameFieldLabel] UTF8String], _filt_value);
delete[] t;
Modified: branches/branch-3.0/src/fltk3/cocoaQuartzPrinter.mm
===================================================================
--- branches/branch-3.0/src/fltk3/cocoaQuartzPrinter.mm 2011-09-14 15:19:20 UTC (rev 9036)
+++ branches/branch-3.0/src/fltk3/cocoaQuartzPrinter.mm 2011-09-15 12:25:11 UTC (rev 9037)
@@ -51,35 +51,30 @@
//returns 0 iff OK
{
OSStatus status = 0;
+ fl_open_display();
Fl_X::q_release_context();
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
- if( [NSPrintPanel instancesRespondToSelector:@selector(runModalWithPrintInfo:)] &&
- [NSPrintInfo instancesRespondToSelector:@selector(PMPrintSession)] ) {
- NSAutoreleasePool *localPool;
- localPool = [[NSAutoreleasePool alloc] init];
+ if (fl_mac_os_version >= 100500) {
NSPrintInfo *info = [NSPrintInfo sharedPrintInfo];
- NSPageLayout *layout = [NSPageLayout pageLayout];
- NSInteger retval = [layout runModal];
- if(retval == NSOKButton) {
- NSPrintPanel *panel = [NSPrintPanel printPanel];
- retval = (NSInteger)[panel runModalWithPrintInfo:info];//from 10.5 only
- }
+ NSPrintPanel *panel = [NSPrintPanel printPanel];
+ //from 10.5
+ [panel setOptions:NSPrintPanelShowsCopies | NSPrintPanelShowsPageRange | NSPrintPanelShowsPageSetupAccessory];
+ NSInteger retval = [panel runModalWithPrintInfo:info];//from 10.5
if(retval != NSOKButton) {
- fltk3::first_window()->show();
- [localPool release];
+ fltk3::Window *w = fltk3::first_window();
+ if (w) w->show();
return 1;
}
- printSession = (PMPrintSession)[info PMPrintSession];
- pageFormat = (PMPageFormat)[info PMPageFormat];
- printSettings = (PMPrintSettings)[info PMPrintSettings];
+ printSession = (PMPrintSession)[info PMPrintSession];//from 10.5
+ pageFormat = (PMPageFormat)[info PMPageFormat];//from 10.5
+ printSettings = (PMPrintSettings)[info PMPrintSettings];//from 10.5
UInt32 from32, to32;
PMGetFirstPage(printSettings, &from32);
if (frompage) *frompage = (int)from32;
PMGetLastPage(printSettings, &to32);
if (topage) *topage = (int)to32;
if(topage && *topage > pagecount) *topage = pagecount;
- status = PMSessionBeginCGDocumentNoDialog(printSession, printSettings, pageFormat);
- [localPool release];
+ status = PMSessionBeginCGDocumentNoDialog(printSession, printSettings, pageFormat);//from 10.4
}
else {
#endif
@@ -298,7 +293,8 @@
PMSessionEndDocumentNoDialog(printSession);
fltk3::DisplayDevice::display_device()->set_current();
fl_gc = 0;
- fltk3::first_window()->show();
+ fltk3::Window *w = fltk3::first_window();
+ if (w) w->show();
}
#endif // __APPLE__
[ Direct Link to Message ] | |