summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES2
-rw-r--r--documentation/drawing.html4
-rw-r--r--documentation/intro.html8
-rw-r--r--documentation/osissues.html32
-rw-r--r--documentation/preface.html8
-rw-r--r--src/Fl_grab.cxx8
-rw-r--r--src/Fl_mac.cxx292
-rw-r--r--src/fl_line_style.cxx8
8 files changed, 317 insertions, 45 deletions
diff --git a/CHANGES b/CHANGES
index f3fdeaf1d..5a25dbbc1 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,7 @@
CHANGES IN FLTK 1.1.0b7
+ - Mac OS X uses mostly Carbon event handling to support
+ Mousewheel, three buttons, all modifier keys, etc.
- More documentation updates...
- Mac OS X support works 95%
- Updated paragraph 4 of the FLTK license exceptions;
diff --git a/documentation/drawing.html b/documentation/drawing.html
index 30a359247..dee747871 100644
--- a/documentation/drawing.html
+++ b/documentation/drawing.html
@@ -141,7 +141,7 @@ values. These are mapped to the closest color supported by the
screen, either from one of the 256 colors in the FLTK 1.0.x
colormap or a direct RGB value on TrueColor screens. You can
generate 24-bit RGB color values using the <A
-HREF="functions.html#fl_rgb_color"><TT>fl_rgb_color()</TT>
+HREF="functions.html#fl_rgb_color"><TT>fl_rgb_color()</TT></A>
function.
<H4>void fl_color(Fl_Color)</H4>
@@ -770,7 +770,7 @@ for example.
<H4>virtual void copy();<BR>
virtual void copy(int w, int h);</H4>
-<P>The <TT>copy() method creates a copy of the image. The second form
+<P>The <TT>copy()</TT> method creates a copy of the image. The second form
specifies the new size of the image - the image is resized using the
nearest-neighbor algorithm.
diff --git a/documentation/intro.html b/documentation/intro.html
index 7cc70753a..ba1af584b 100644
--- a/documentation/intro.html
+++ b/documentation/intro.html
@@ -98,12 +98,12 @@ is now included with several Linux distributions.</P>
<LI>The FLUID program (which includes every widget) is
538k.</LI>
- <LI>Written directly atop Xlib (or WIN32) for maximum
+ <LI>Written directly atop core libraries (Xlib, WIN32 or Carbon) for maximum
speed, and carefully optimized for code size and
performance.</LI>
- <LI>Precise low-level compatability between the X11 and
- WIN32 version - only about 10% of the code is
+ <LI>Precise low-level compatability between the X11,
+ WIN32 and MacOS version - only about 10% of the code is
different.</LI>
<LI>Interactive user interface builder program. Output is
@@ -113,7 +113,7 @@ is now included with several Linux distributions.</P>
is available.</LI>
<LI>Very small &amp; fast portable 2-D drawing library
- to hide Xlib and WIN32.</LI>
+ to hide Xlib, WIN32 or QuickDraw.</LI>
<LI>OpenGL/Mesa drawing area widget.</LI>
diff --git a/documentation/osissues.html b/documentation/osissues.html
index c52c1d615..f67016058 100644
--- a/documentation/osissues.html
+++ b/documentation/osissues.html
@@ -373,4 +373,36 @@ feature, not a bug. </P>
<P><TT>SetCapture</TT> (used by <TT>Fl::grab()</TT>) doesn't work, and
the main window title bar turns gray while menus are popped up. </P>
<P>FLUID does not support BMP files yet. </P>
+
+<H2>MacOS-specific interface</h2>
+FLTK supports MacOS 8.6, MacOS 9 and Mac OS X using the Apple Carbon library.
+When compiled with MPW or MetroWerks' CodeWarrior, application binaries in CFM format will
+run on all the above systems without changes.
+OS X's 'gcc' however creates Mach-O binaries which are not supported by
+MacOS 9 and earlier.
+<br>
+<PRE>#include &lt;FL/x.H&gt;</PRE>
+The <tt>&lt;FL/x.H&gt;</tt> header file defines the interface to FLTK's MacOS-specific
+functions. Be warned that some of the structures and calls in it are
+subject to change in future version of FLTK. Try to avoid doing this
+so your code is portable.
+<H4>WindowRef fl_xid(const Fl_Window *)</h4>
+Returns the window reference for an <tt>Fl_Window</tt>, or NULL if not shown.
+<h4>Fl_Window *fl_find(WindowRef xid)</h4>
+Return the <tt>Fl_Window</tt> that corresponds to the give window hande, or NULL if not found. FLTK Windows that are children of top-level windows share the WindowRef
+with the top-level window.
+<h3>Drawing Things Using QuickDraw</h3>
+When the virtual function <tt>Fl_Widget::draw()</tt> is called, FLTK has prepared
+the Window and CGrafPort for drawing. Clipping and offsets are prepared to allow
+correct subwindow drawing.
+<br><br>
+OS X doublebuffers all windows automatically. On OS X <tt>Fl_Window</tt> and
+<tt>Fl_Double_Window</tt> are handled internally in the same way.
+<h3>Mac File System Specifics</h3>
+<h4>Resource Forks</h4>
+FLTK does not access the resource fork of an application. However, a minimal
+resource fork must be created for OS 8 and OS X applications.
+<h4>Mac File Paths</h4>
+FLTK uses Unix-style filenames and paths.
+
</BODY></HTML>
diff --git a/documentation/preface.html b/documentation/preface.html
index 11f10a245..c75012c47 100644
--- a/documentation/preface.html
+++ b/documentation/preface.html
@@ -11,7 +11,7 @@
<P>This manual describes the Fast Light Tool Kit (&quot;FLTK&quot;)
version 1.1.0, a C++ Graphical User Interface
-(&quot;GUI&quot;) toolkit for UNIX and Microsoft Windows. Each
+(&quot;GUI&quot;) toolkit for UNIX, Microsoft Windows and MacOS. Each
of the chapters in this manual is designed as a tutorial for
using FLTK, while the appendices provide a convenient reference
for all FLTK widgets, functions, and operating system
@@ -88,6 +88,9 @@ interfaces.</P>
<DT>WIN32</DT>
<DD>The Microsoft Windows 32-bit Application Programmer's Interface.</DD>
+ <DT>MacOS</DT>
+ <DD>The Apple Macintosh OS 8.6 and later, including OS X.<DD>
+
</DL>
<H2>Copyrights and Trademarks</H2>
@@ -98,7 +101,8 @@ License, located in <A HREF="license.html#license">Appendix G</A>.</P>
<P>UNIX is a registered trademark of the X Open Group, Inc. Microsoft
and Windows are registered trademarks of Microsoft Corporation. OpenGL
-is a registered trademark of Silicon Graphics, Inc. </P>
+is a registered trademark of Silicon Graphics, Inc. . Apple, Macintosh,
+MacOS and Mac OS X are registered trademarks of Apple Computer, Inc. .</P>
</BODY>
</HTML>
diff --git a/src/Fl_grab.cxx b/src/Fl_grab.cxx
index fee3d6f09..56c13ba47 100644
--- a/src/Fl_grab.cxx
+++ b/src/Fl_grab.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_grab.cxx,v 1.1.2.4.2.2 2001/11/27 17:44:06 easysw Exp $"
+// "$Id: Fl_grab.cxx,v 1.1.2.4.2.3 2001/12/12 07:50:37 matthiaswm Exp $"
//
// Grab/release code for the Fast Light Tool Kit (FLTK).
//
@@ -51,7 +51,7 @@ void Fl::grab(Fl_Window* w) {
SetActiveWindow(fl_capture = fl_xid(first_window()));
SetCapture(fl_capture);
#elif defined(__APPLE__)
- //++
+ BeginAppModalStateForWindow( fl_xid(first_window()) );
#else
XGrabPointer(fl_display,
fl_xid(first_window()),
@@ -78,7 +78,7 @@ void Fl::grab(Fl_Window* w) {
fl_capture = 0;
ReleaseCapture();
#elif defined(__APPLE__)
- //++
+ EndAppModalStateForWindow( fl_xid(first_window()) );
#else
XUngrabKeyboard(fl_display, fl_event_time);
XUngrabPointer(fl_display, fl_event_time);
@@ -93,5 +93,5 @@ void Fl::grab(Fl_Window* w) {
}
//
-// End of "$Id: Fl_grab.cxx,v 1.1.2.4.2.2 2001/11/27 17:44:06 easysw Exp $".
+// End of "$Id: Fl_grab.cxx,v 1.1.2.4.2.3 2001/12/12 07:50:37 matthiaswm Exp $".
//
diff --git a/src/Fl_mac.cxx b/src/Fl_mac.cxx
index db33c1d7b..50f61c250 100644
--- a/src/Fl_mac.cxx
+++ b/src/Fl_mac.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_mac.cxx,v 1.1.2.3 2001/12/06 00:17:47 matthiaswm Exp $"
+// "$Id: Fl_mac.cxx,v 1.1.2.4 2001/12/12 07:50:37 matthiaswm Exp $"
//
// MacOS specific code for the Fast Light Tool Kit (FLTK).
//
@@ -28,8 +28,6 @@
// still be useful.
#define CONSOLIDATE_MOTION 0
-// use TARGET_API_MAC_CARBON if needed
-
#include <config.h>
#include <FL/Fl.H>
#include <FL/x.H>
@@ -41,7 +39,14 @@
#include <string.h>
#include <unistd.h>
+#ifdef TARGET_API_MAC_CARBON
+// use the above define if you want to use full Carbon API
+// - this will change event handling to Carbon Events
+#endif
+static unsigned short macKeyLookUp[];
+static Fl_Window* resize_from_system;
+Fl_Window* fl_find(Window);
int fl_handle(const EventRecord &event);
int fl_screen;
@@ -213,13 +218,33 @@ static double do_queued_events( double time = 0.0 )
// SetRectRgn(rgn, ev.where.h, ev.where.v, ev.where.h+1, ev.where.v+1 );
}
#else
+ #ifdef TARGET_API_MAC_CARBON
+ OSStatus ret;
+ EventRef ev;
+ static EventTargetRef target = 0;
+ if ( !target ) target = GetEventDispatcherTarget();
+ ret = ReceiveNextEvent( 0, NULL, time, true, &ev );
+ if ( ret == noErr )
+ {
+ ret = SendEventToEventTarget( ev, target );
+ if ( ret == eventNotHandledErr )
+ {
+ EventRecord er;
+ if ( ConvertEventRefToEventRecord( ev, &er ) )
+ fl_handle( er );
+ }
+ ReleaseEvent( ev );
+ }
+
+ #else
EventRecord ev;
- unsigned long ticks = (int)(time*60.0);
+ unsigned long ticks = (int)(time*60.0); // setting ticks to 7fffffff will wait forever
if ( WaitNextEvent(everyEvent, &ev, ticks, rgn) )
{
fl_handle(ev); //: handle the nullEvent to get mouse up events
SetRectRgn(rgn, ev.where.h, ev.where.v, ev.where.h+1, ev.where.v+1 );
}
+ #endif
#endif
#if CONSOLIDATE_MOTION
@@ -315,7 +340,180 @@ static OSErr QuitAppleEventHandler( const AppleEvent *appleEvt, AppleEvent* repl
return noErr;
}
+/**
+ * Carbon Mousewheel handler
+ * This needs to be linked into all new window event handlers
+ */
+OSStatus carbonMousewheelHandler( EventHandlerCallRef nextHandler, EventRef event, void *userData )
+{
+ Fl_Window *window = (Fl_Window*)userData;
+ EventMouseWheelAxis axis;
+ GetEventParameter( event, kEventParamMouseWheelAxis, typeMouseWheelAxis, NULL, sizeof(EventMouseWheelAxis), NULL, &axis );
+ long delta;
+ GetEventParameter( event, kEventParamMouseWheelDelta, typeLongInteger, NULL, sizeof(long), NULL, &delta );
+ if ( axis == kEventMouseWheelAxisY )
+ {
+ Fl::e_dy = - delta;
+ if ( Fl::e_dy) Fl::handle( FL_MOUSEWHEEL, window );
+ }
+ return noErr;
+}
+
+/**
+ * convert the current mouse chord into the FLTK modifier state
+ */
+static void chord_to_e_state( UInt32 chord )
+{
+ static ulong state[] =
+ {
+ 0, FL_BUTTON1, FL_BUTTON3, FL_BUTTON1|FL_BUTTON3, FL_BUTTON2,
+ FL_BUTTON2|FL_BUTTON1, FL_BUTTON2|FL_BUTTON3, FL_BUTTON2|FL_BUTTON1|FL_BUTTON3
+ };
+ Fl::e_state = ( Fl::e_state & 0xff0000 ) | state[ chord & 0x07 ];
+}
+
+/**
+ * Carbon Mouse Button Handler
+ */
+OSStatus carbonMouseHandler( EventHandlerCallRef nextHandler, EventRef event, void *userData )
+{
+ static int keysym[] = { 0, FL_Button+1, FL_Button+3, FL_Button+2 };
+ static int px, py;
+ Fl_Window *window = (Fl_Window*)userData;
+ Point pos;
+ GetEventParameter( event, kEventParamMouseLocation, typeQDPoint, NULL, sizeof(Point), NULL, &pos );
+ EventMouseButton btn;
+ GetEventParameter( event, kEventParamMouseButton, typeMouseButton, NULL, sizeof(EventMouseButton), NULL, &btn );
+ UInt32 clickCount;
+ GetEventParameter( event, kEventParamClickCount, typeUInt32, NULL, sizeof(UInt32), NULL, &clickCount );
+ UInt32 chord;
+ GetEventParameter( event, kEventParamMouseChord, typeUInt32, NULL, sizeof(UInt32), NULL, &chord );
+ WindowRef xid = fl_xid(window);
+ int sendEvent = 0;
+ switch ( GetEventKind( event ) )
+ {
+ case kEventMouseDown:
+ if ( btn==kEventMouseButtonPrimary && FindWindow( pos, &xid )!=inContent )
+ return CallNextEventHandler( nextHandler, event ); // we won't handle this. The OS should do that.
+ if (xid!=FrontWindow()) SelectWindow( xid ); //{ SelectWindow(xid); return 1; } // do we want to keep this?!
+ sendEvent = FL_PUSH;
+ Fl::e_is_click = 1; px = pos.h; py = pos.v;
+ Fl::e_clicks = clickCount;
+ // fall through
+ case kEventMouseUp:
+ if (!window) break;
+ if ( !sendEvent ) sendEvent = FL_RELEASE;
+ Fl::e_keysym = keysym[ btn ];
+ // fall through
+ case kEventMouseMoved:
+ if ( !sendEvent ) { sendEvent = FL_MOVE; chord = 0; }
+ // fall through
+ case kEventMouseDragged:
+ if ( !sendEvent ) {
+ sendEvent = FL_DRAG;
+ if (abs(pos.h-px)>5 || abs(pos.v-py)>5) Fl::e_is_click = 0;
+ }
+ chord_to_e_state( chord );
+ SetPort( GetWindowPort(xid) ); SetOrigin(0, 0);
+ Fl::e_x_root = pos.h;
+ Fl::e_y_root = pos.v;
+ GlobalToLocal( &pos );
+ Fl::e_x = pos.h;
+ Fl::e_y = pos.v;
+ Fl::handle( sendEvent, window );
+ break;
+ }
+ return noErr;
+}
+
+/**
+ * convert the current mouse chord into the FLTK modifier state
+ */
+static void mods_to_e_state( UInt32 mods )
+{
+ long state = 0;
+ if ( mods & kEventKeyModifierNumLockMask ) state |= FL_NUM_LOCK;
+ if ( mods & cmdKey ) state |= FL_CTRL;
+ if ( mods & (optionKey|rightOptionKey) ) state |= FL_ALT;
+ if ( mods & (controlKey|rightControlKey) ) state |= FL_META;
+ if ( mods & (shiftKey|rightShiftKey) ) state |= FL_SHIFT;
+ if ( mods & alphaLock ) state |= FL_CAPS_LOCK;
+ Fl::e_state = ( Fl::e_state & 0xff000000 ) | state;
+ //printf( "State 0x%08x (%04x)\n", Fl::e_state, mods );
+}
+/**
+ * convert the current mouse chord into the FLTK keysym
+ */
+static void mods_to_e_keysym( UInt32 mods )
+{
+ if ( mods & cmdKey ) Fl::e_keysym = FL_Control_L;
+ //else if ( mods & kEventKeyModifierNumLockMask ) Fl::e_keysym = FL_Num_Lock;
+ else if ( mods & optionKey ) Fl::e_keysym = FL_Alt_L;
+ else if ( mods & rightOptionKey ) Fl::e_keysym = FL_Alt_R;
+ else if ( mods & controlKey ) Fl::e_keysym = FL_Meta_L;
+ else if ( mods & rightControlKey ) Fl::e_keysym = FL_Meta_R;
+ else if ( mods & shiftKey ) Fl::e_keysym = FL_Shift_L;
+ else if ( mods & rightShiftKey ) Fl::e_keysym = FL_Shift_R;
+ else if ( mods & alphaLock ) Fl::e_keysym = FL_Caps_Lock;
+ else Fl::e_keysym = 0;
+}
+
+/**
+ * handle carbon keyboard events
+ */
+OSStatus carbonKeyboardHandler( EventHandlerCallRef nextHandler, EventRef event, void *userData )
+{
+ static char buffer[5];
+ int sendEvent = 0;
+ Fl_Window *window = (Fl_Window*)userData;
+ UInt32 mods;
+ static UInt32 prevMods = 0xdeadbeef;
+ GetEventParameter( event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &mods );
+ if ( prevMods == 0xdeadbeef ) prevMods = mods;
+ UInt32 keyCode;
+ GetEventParameter( event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode );
+ char key;
+ GetEventParameter( event, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &key );
+ switch ( GetEventKind( event ) )
+ {
+ case kEventRawKeyDown:
+ case kEventRawKeyRepeat:
+ sendEvent = FL_KEYBOARD;
+ // fall through
+ case kEventRawKeyUp:
+ if ( !sendEvent ) sendEvent = FL_KEYUP;
+ Fl::e_keysym = macKeyLookUp[ keyCode & 0x7f ];
+ if ( key=='\t' || key==27 || key>=32 )
+ {
+ buffer[0] = key;
+ Fl::e_length = 1;
+ } else {
+ buffer[0] = 0;
+ Fl::e_length = 0;
+ }
+ Fl::e_text = buffer;
+ // insert UnicodeHandling right here!
+ break;
+ case kEventRawKeyModifiersChanged: {
+ UInt32 tMods = prevMods ^ mods;
+ if ( tMods )
+ {
+ mods_to_e_keysym( tMods );
+ if ( Fl::e_keysym )
+ sendEvent = ( prevMods<mods ) ? FL_KEYBOARD : FL_KEYUP;
+ Fl::e_length = 0;
+ buffer[0] = 0;
+ prevMods = mods;
+ }
+ mods_to_e_state( mods );
+ break; }
+ }
+ while (window->parent()) window = window->window();
+ if (sendEvent && Fl::handle(sendEvent,window)) return noErr;
+ return noErr; // for testing
+ return CallNextEventHandler( nextHandler, event );;
+}
/**
* initialize the Mac toolboxes and set the default menubar
@@ -533,7 +731,7 @@ unsigned short mac2fltk(ulong macKey)
*/
static inline void checkdouble()
{
- if (Fl::e_is_click == Fl::e_keysym)
+ if (Fl::e_is_click == Fl::e_keysym)
Fl::e_clicks++;
else {
Fl::e_clicks = 0;
@@ -544,10 +742,6 @@ static inline void checkdouble()
ptime = fl_event_time;
}
-/************************** Mac Window System stuff ***********************/
-
-static Fl_Window* resize_from_system;
-Fl_Window* fl_find(Window);
/**
@@ -687,7 +881,7 @@ int fl_handle(const EventRef event)
eventkind = GetEventKind(event);
memcpy(buffer, &eventclass, 4);
buffer[4] = '\0';
- printf("fl_event(): class = %s, kind = %ld\n", buffer, eventkind);
+ //printf("fl_event(): class = %s, kind = %ld\n", buffer, eventkind);
}
#else
int fl_handle(const EventRecord &macevent)
@@ -702,7 +896,7 @@ int fl_handle(const EventRecord &macevent)
switch (macevent.what)
{
case mouseDown: {
- // handle the differnt mouseDown events in various areas of the screen
+ // handle the different mouseDown events in various areas of the screen
int part = FindWindow(macevent.where, &xid);
//printf("mousedown in part %d\n", part );
prevMouseDownXid = xid;
@@ -792,7 +986,7 @@ int fl_handle(const EventRecord &macevent)
break;
case updateEvt:
xid = (WindowPtr)macevent.message;
- handleUpdateEvent( xid );
+ if (xid) handleUpdateEvent( xid );
break;
case diskEvt:
break;
@@ -975,22 +1169,6 @@ void Fl_X::make(Fl_Window* w)
}
}
int xwm = xp, ywm = yp, bt, bx, by;
- // classes:
- // kAlertWindowClass: small up frame - nice
- // kModalWindowClass: as above
- // kFloatingWindowClass: does not deactivate app window, but has small title bar (medium decoration)
- // kDocumentWindowClass: transparent huge upper title (large decoration) -- last standard definition
- // kUtilityWindowClass: like 'floating (small decoration)
- // kHelpWindowClass: perfect: no decoration, keeps master active, stays on top of ALL windows, not modal though
- // kSheetWindowClass: no deco, deactivates parent
- // kToolbarWindowClass: no deco, passive, under other menues
- // kPlainWindowClass: no deco, active, under
- // kOverlayWindowClass: invisible!
- // kSheetAlertWindowClass: no deco, active, under
- // kAltPlainWindowClass: no deco, active, under
- // attributes:
- // kWindowCloseBoxAttribute, HorizontalZoom, VerticalZoom, FullZoom, CollapsBox, Resizable,
- // SideTitlebar(floatin only), NoUpdates, NoActivates, Macros: StandardDocument, StandardFloating
if (!fake_X_wm(w, xwm, ywm, bt, bx, by))
{ winclass = kHelpWindowClass; winattr = 0; }
else if (w->modal())
@@ -1048,6 +1226,42 @@ void Fl_X::make(Fl_Window* w)
Fl_X::first = x;
if (w->resizable()) DrawGrowIcon(x->xid);
w->set_visible();
+ // add event handlers
+ #ifdef TARGET_API_MAC_CARBON
+ { // Install Carbon Event handlers
+ OSStatus ret;
+ EventHandlerUPP mousewheelHandler = NewEventHandlerUPP( carbonMousewheelHandler ); // will not be disposed by Carbon...
+ EventTypeSpec mousewheelEvents[1];
+ mousewheelEvents[0].eventClass = kEventClassMouse;
+ mousewheelEvents[0].eventKind = kEventMouseWheelMoved;
+ ret = InstallWindowEventHandler( x->xid, mousewheelHandler, 2, mousewheelEvents, w, 0L );
+ EventHandlerUPP mouseHandler = NewEventHandlerUPP( carbonMouseHandler ); // will not be disposed by Carbon...
+ EventTypeSpec mouseEvents[4];
+ mouseEvents[0].eventClass = kEventClassMouse;
+ mouseEvents[0].eventKind = kEventMouseDown;
+ mouseEvents[1].eventClass = kEventClassMouse;
+ mouseEvents[1].eventKind = kEventMouseUp;
+ mouseEvents[2].eventClass = kEventClassMouse;
+ mouseEvents[2].eventKind = kEventMouseMoved;
+ mouseEvents[3].eventClass = kEventClassMouse;
+ mouseEvents[3].eventKind = kEventMouseDragged;
+ ret = InstallWindowEventHandler( x->xid, mouseHandler, 4, mouseEvents, w, 0L );
+ EventHandlerUPP keyboardHandler = NewEventHandlerUPP( carbonKeyboardHandler ); // will not be disposed by Carbon...
+ EventTypeSpec keyboardEvents[4];
+ keyboardEvents[0].eventClass = kEventClassKeyboard;
+ keyboardEvents[0].eventKind = kEventRawKeyDown;
+ keyboardEvents[1].eventClass = kEventClassKeyboard;
+ keyboardEvents[1].eventKind = kEventRawKeyRepeat;
+ keyboardEvents[2].eventClass = kEventClassKeyboard;
+ keyboardEvents[2].eventKind = kEventRawKeyUp;
+ keyboardEvents[3].eventClass = kEventClassKeyboard;
+ keyboardEvents[3].eventKind = kEventRawKeyModifiersChanged;
+ ret = InstallWindowEventHandler( x->xid, keyboardHandler, 4, keyboardEvents, w, 0L );
+ //EventTargetRef winTarget = GetWindowEventTarget( x->xid );
+ //InstallStandardEventHandler( winTarget ); // it would be useful to call this, but we must make sure that ALL other events are Carbonized first
+ }
+ #endif
+
w->handle(FL_SHOW);
w->redraw(); // force draw to happen
//TransitionWindow( x->xid, kWindowZoomTransitionEffect, kWindowShowTransitionAction, 0 );
@@ -1265,9 +1479,29 @@ DoMyOperation();
endTime = UpTime();
elapsedTime = SubAbsoluteFromAbsolute(endTime, startTime);
elapsedNanoseconds = AbsoluteToNanoseconds(elapsedTime);
+
+------ window classes:
+ // classes:
+ // kAlertWindowClass: small up frame - nice
+ // kModalWindowClass: as above
+ // kFloatingWindowClass: does not deactivate app window, but has small title bar (medium decoration)
+ // kDocumentWindowClass: transparent huge upper title (large decoration) -- last standard definition
+ // kUtilityWindowClass: like 'floating (small decoration)
+ // kHelpWindowClass: perfect: no decoration, keeps master active, stays on top of ALL windows, not modal though
+ // kSheetWindowClass: no deco, deactivates parent
+ // kToolbarWindowClass: no deco, passive, under other menues
+ // kPlainWindowClass: no deco, active, under
+ // kOverlayWindowClass: invisible!
+ // kSheetAlertWindowClass: no deco, active, under
+ // kAltPlainWindowClass: no deco, active, under
+ // attributes:
+ // kWindowCloseBoxAttribute, HorizontalZoom, VerticalZoom, FullZoom, CollapsBox, Resizable,
+ // SideTitlebar(floatin only), NoUpdates, NoActivates, Macros: StandardDocument, StandardFloating
+
+
*/
//
-// End of "$Id: Fl_mac.cxx,v 1.1.2.3 2001/12/06 00:17:47 matthiaswm Exp $".
+// End of "$Id: Fl_mac.cxx,v 1.1.2.4 2001/12/12 07:50:37 matthiaswm Exp $".
//
diff --git a/src/fl_line_style.cxx b/src/fl_line_style.cxx
index 043aaa8e7..297a15033 100644
--- a/src/fl_line_style.cxx
+++ b/src/fl_line_style.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fl_line_style.cxx,v 1.3.2.3.2.7 2001/12/07 16:28:38 easysw Exp $"
+// "$Id: fl_line_style.cxx,v 1.3.2.3.2.8 2001/12/12 07:50:37 matthiaswm Exp $"
//
// Line style code for the Fast Light Tool Kit (FLTK).
//
@@ -58,8 +58,8 @@ void fl_line_style(int style, int width, char* dashes) {
// QuickDraw supports pen size and pattern, but no arbitrary line styles.
static Pattern styles[] = {
{ { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } }, // FL_SOLID
- { { 0xcc, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00 } }, // FL_DASH
- { { 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00 } } // FL_DOT
+ { { 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f } }, // FL_DASH
+ { { 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55 } } // FL_DOT
};
if (!width) width = 1;
@@ -104,5 +104,5 @@ void fl_line_style(int style, int width, char* dashes) {
//
-// End of "$Id: fl_line_style.cxx,v 1.3.2.3.2.7 2001/12/07 16:28:38 easysw Exp $".
+// End of "$Id: fl_line_style.cxx,v 1.3.2.3.2.8 2001/12/12 07:50:37 matthiaswm Exp $".
//