diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2007-02-01 20:13:57 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2007-02-01 20:13:57 +0000 |
| commit | eef635336976f6e80a972950a07993dbc763c9b6 (patch) | |
| tree | da6c5cb73d2164c99fcb4fddbe6ab7673805fda0 /src | |
| parent | bda374b38662398c62d0bff5dc27620e4b39f47a (diff) | |
Fixed calculation of character widths for OS X Quartz rendering. Fixed OS X mouse click handling (STR #1504).
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5651 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_mac.cxx | 25 | ||||
| -rw-r--r-- | src/fl_font_mac.cxx | 6 |
2 files changed, 20 insertions, 11 deletions
diff --git a/src/Fl_mac.cxx b/src/Fl_mac.cxx index 6d755a222..30a0e012e 100644 --- a/src/Fl_mac.cxx +++ b/src/Fl_mac.cxx @@ -966,13 +966,20 @@ static pascal OSStatus carbonMouseHandler( EventHandlerCallRef nextHandler, Even { case kEventMouseDown: part = FindWindow( pos, &tempXid ); - if ( part == inGrow && !Fl::grab()) { - fl_unlock_function(); - suppressed = 1; - Fl_Tooltip::current(0L); - // if (grab() && grab()!=thisWindow) handle grab first (popping down menu bars) - // if (modal() && modal()!=thisWindow) handle modal first (popping down menu bars) - return CallNextEventHandler( nextHandler, event ); // let the OS handle this for us + if (!(Fl::grab() && window!=Fl::grab())) { + if ( part == inGrow ) { + fl_unlock_function(); + suppressed = 1; + Fl_Tooltip::current(0L); + return CallNextEventHandler( nextHandler, event ); // let the OS handle this for us + } + if ( part != inContent ) { + fl_unlock_function(); + suppressed = 1; + Fl_Tooltip::current(0L); + // anything else to here? + return CallNextEventHandler( nextHandler, event ); // let the OS handle this for us + } } suppressed = 0; if (part==inContent && !IsWindowActive( xid ) ) { @@ -1023,8 +1030,10 @@ static pascal OSStatus carbonMouseHandler( EventHandlerCallRef nextHandler, Even Fl::e_y = pos.v; SetPort( oldPort ); if (GetEventKind(event)==kEventMouseDown && part!=inContent) { - Fl::handle( sendEvent, window ); + int used = Fl::handle( sendEvent, window ); CallNextEventHandler( nextHandler, event ); // let the OS handle this for us + if (!used) + suppressed = 1; } else { Fl::handle( sendEvent, window ); } diff --git a/src/fl_font_mac.cxx b/src/fl_font_mac.cxx index 826207aad..e1185ae3d 100644 --- a/src/fl_font_mac.cxx +++ b/src/fl_font_mac.cxx @@ -212,7 +212,7 @@ UniChar *fl_macToUtf16(const char *txt, int len) UniChar *dst = utf16buf; for (i=0; i<len; i++) { c = *src++; - *dst++ = (c<128) ? c : utf16lut[c-128]; + *dst++ =(c<128) ? c : utf16lut[c-128]; } *dst = 0; return utf16buf; @@ -312,13 +312,13 @@ double fl_width(const char* txt, int n) { UniChar *uniStr = fl_macToUtf16(buf, 1); // now collect our ATSU resources ATSUTextLayout layout = fl_fontsize->layout; - err = ATSUSetTextPointerLocation(layout, uniStr, kATSUFromTextBeginning, 1, 1); // activate the current GC ByteCount iSize = sizeof(CGContextRef); ATSUAttributeTag iTag = kATSUCGContextTag; ATSUAttributeValuePtr iValuePtr=&fl_gc; ATSUSetLayoutControls(layout, 1, &iTag, &iSize, &iValuePtr); // now measure the bounding box + err = ATSUSetTextPointerLocation(layout, uniStr, kATSUFromTextBeginning, 1, 1); Fixed bBefore, bAfter, bAscent, bDescent; err = ATSUGetUnjustifiedBounds(layout, kATSUFromTextBeginning, 1, &bBefore, &bAfter, &bAscent, &bDescent); fl_fontsize->width[i] = FixedToInt(bAfter); @@ -328,7 +328,7 @@ double fl_width(const char* txt, int n) { int len = 0; const char *src = txt; for (int j=0; j<n; j++) { - unsigned int c = *src++; + unsigned char c = *src++; len += fl_fontsize->width[c]; } return len; |
