Ignore:
Timestamp:
Aug 2, 2010, 9:27:30 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.3 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/gui/kernel/qwidget_mac.mm

    r651 r769  
    153153QWidget *mac_mouse_grabber = 0;
    154154QWidget *mac_keyboard_grabber = 0;
     155extern QPointer<QWidget> qt_button_down; //qapplication_mac.cpp
    155156
    156157#ifndef QT_MAC_USE_COCOA
     
    563564    // below 'stays on top' windows. Add 1 to get above pure stay-on-top windows.
    564565    qt_mac_set_window_group(window, Qt::Popup, qt_mac_get_group_level(kOverlayWindowClass)+1);
     566}
     567#endif
     568
     569#ifdef QT_MAC_USE_COCOA
     570void qt_mac_set_needs_display(QWidget *widget, QRegion region)
     571{
     572    NSView *theNSView = qt_mac_nativeview_for(widget);
     573    if (region.isEmpty()) {
     574        [theNSView setNeedsDisplay:YES];
     575        return;
     576    }
     577
     578    QVector<QRect> rects = region.rects();
     579    for (int i = 0; i<rects.count(); ++i) {
     580        const QRect &rect = rects.at(i);
     581        NSRect nsrect = NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height());
     582        [theNSView setNeedsDisplayInRect:nsrect];
     583    }
     584
    565585}
    566586#endif
     
    848868                QApplication::sendSpontaneousEvent(widget, &e);
    849869            }
    850             extern QPointer<QWidget> qt_button_down; //qapplication_mac.cpp
    851870            qt_button_down = 0;
    852871        } else if(ekind == kEventWindowCollapsed) {
     
    876895            QEvent e(QEvent::Hide);
    877896            QApplication::sendSpontaneousEvent(widget, &e);
    878             extern QPointer<QWidget> qt_button_down; //qapplication_mac.cpp
    879897            qt_button_down = 0;
    880898        } else if(ekind == kEventWindowToolbarSwitchMode) {
     
    12501268                    if(widget->testAttribute(Qt::WA_WState_InPaintEvent))
    12511269                        qWarning("QWidget::repaint: Recursive repaint detected");
     1270                    if (widget->isWindow() && !widget->d_func()->isOpaque
     1271                        && !widget->testAttribute(Qt::WA_MacBrushedMetal)) {
     1272                        QRect qrgnRect = qrgn.boundingRect();
     1273                        CGContextClearRect(cg, CGRectMake(qrgnRect.x(), qrgnRect.y(), qrgnRect.width(), qrgnRect.height()));
     1274                    }
    12521275
    12531276                    QPoint redirectionOffset(0, 0);
     
    12991322                            widget->d_func()->restoreRedirected();
    13001323                    }
    1301 
    1302                     if (widget->isWindow() && !widget->d_func()->isOpaque
    1303                            && !widget->testAttribute(Qt::WA_MacBrushedMetal)) {
    1304                         QRect qrgnRect = qrgn.boundingRect();
    1305                         CGContextClearRect(cg, CGRectMake(qrgnRect.x(), qrgnRect.y(), qrgnRect.width(), qrgnRect.height()));
    1306                     }
    1307 
    13081324
    13091325                    if(!HIObjectIsOfClass((HIObjectRef)hiview, kObjectQWidget))
     
    15031519                qt_event_request_window_change(widget);
    15041520                if (!HIViewIsVisible(HIViewRef(widget->winId()))) {
    1505                     extern QPointer<QWidget> qt_button_down; //qapplication_mac.cpp
    15061521                    if (widget == qt_button_down)
    15071522                        qt_button_down = 0;
     
    15121527    case kEventClassMouse: {
    15131528        bool send_to_app = false;
    1514         extern QPointer<QWidget> qt_button_down; //qapplication_mac.cpp
    15151529        if(qt_button_down)
    15161530            send_to_app = true;
     
    33893403    if((q->windowType() == Qt::Desktop)) //you can't hide the desktop!
    33903404        return;
    3391 
    33923405    QMacCocoaAutoReleasePool pool;
    33933406    if(q->isWindow()) {
     
    35113524    if (!QWidget::mouseGrabber()){
    35123525        QWidget *enterWidget = QApplication::widgetAt(QCursor::pos());
     3526        if (enterWidget && enterWidget->data->in_destructor)
     3527            enterWidget = 0;
    35133528        QApplicationPrivate::dispatchEnterLeave(enterWidget, qt_mouseover);
    35143529        qt_mouseover = enterWidget;
     
    44554470    }
    44564471
     4472    // ### Scroll the dirty regions as well, the following is not correct.
     4473    QRegion displayRegion = r.isNull() ? dirtyOnWidget : (dirtyOnWidget & r);
     4474    const QVector<QRect> &rects = dirtyOnWidget.rects();
     4475    const QVector<QRect>::const_iterator end = rects.end();
     4476    QVector<QRect>::const_iterator it = rects.begin();
     4477    while (it != end) {
     4478        const QRect rect = *it;
     4479        const NSRect dirtyRect = NSMakeRect(rect.x() + dx, rect.y() + dy,
     4480                rect.width(), rect.height());
     4481        [view setNeedsDisplayInRect:dirtyRect];
     4482        ++it;
     4483    }
     4484
    44574485    NSSize deltaSize = NSMakeSize(dx, dy);
    4458     [view translateRectsNeedingDisplayInRect:scrollRect by:deltaSize];
    44594486    [view scrollRect:scrollRect by:deltaSize];
    44604487    [view setNeedsDisplayInRect:deltaXRect];
     
    46564683        return;
    46574684
    4658     if (extra->hasMask && extra->maskBits.size() != q->size()) {
    4659         extra->maskBits = QImage(q->size(), QImage::Format_Mono);
     4685    if (extra->hasMask) {
     4686        if(extra->maskBits.size() != q->size()) {
     4687            extra->maskBits = QImage(q->size(), QImage::Format_Mono);
     4688        }
    46604689        extra->maskBits.fill(QColor(Qt::color1).rgba());
    46614690        extra->maskBits.setNumColors(2);
Note: See TracChangeset for help on using the changeset viewer.