summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2007-02-01 20:13:57 +0000
committerMatthias Melcher <fltk@matthiasm.com>2007-02-01 20:13:57 +0000
commiteef635336976f6e80a972950a07993dbc763c9b6 (patch)
treeda6c5cb73d2164c99fcb4fddbe6ab7673805fda0 /src
parentbda374b38662398c62d0bff5dc27620e4b39f47a (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.cxx25
-rw-r--r--src/fl_font_mac.cxx6
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;