- Timestamp:
- Oct 27, 2010, 6:11:22 PM (15 years ago)
- Location:
- trunk/src/gui
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gui/kernel/qwidget_pm.cpp
r807 r808 1390 1390 if (destroyWindow && !(windowType() == Qt::Desktop) && 1391 1391 d->frameWinId() != NULLHANDLE) { 1392 // make sure the backing store is deleted before destroying HWND -- 1393 // QPMDiveWindowSurface depends on that 1394 delete d->topData()->backingStore; 1395 d->topData()->backingStore = 0; 1396 // now destroy HWND 1392 // destroy HWND 1397 1393 HWND id = d->frameWinId(); 1398 1394 #if defined(QT_DEBUGWINCREATEDESTROY) … … 1470 1466 1471 1467 if (old_fid != NULLHANDLE && q->windowType() != Qt::Desktop) { 1472 // make sure the backing store is deleted before destroying HWND -- 1473 // QPMDiveWindowSurface depends on that 1474 if (extra && extra->topextra) { 1475 delete extra->topextra->backingStore; 1476 extra->topextra->backingStore = 0; 1477 // zero the to-be-destroyed frame HWND just in case 1478 extra->topextra->fId = NULLHANDLE; 1479 } 1480 // now destroy HWND 1468 // destroy HWND 1481 1469 qt_WinDestroyWindow(old_fid); 1482 1470 } -
trunk/src/gui/painting/qwindowsurface_pm.cpp
r787 r808 352 352 struct WidgetData 353 353 { 354 QWidget *widget;355 354 int widgetHeight; 356 355 bool vrnDirty; … … 360 359 361 360 WidgetData data; 362 QMap< HWND, WidgetData> *subWidgets;361 QMap<, WidgetData> *subWidgets; 363 362 364 363 void addWidget(QWidget *widget); … … 369 368 if (widget == that->window()) 370 369 return &data; 371 if (!subWidgets || !subWidgets->contains(widget ->internalWinId()))370 if (!subWidgets || !subWidgets->contains(widget)) 372 371 return 0; 373 return &(*subWidgets)[widget ->internalWinId()];372 return &(*subWidgets)[widget]; 374 373 } 375 374 … … 386 385 // lazily create the sub-widget map (only when really necessary) 387 386 if (!subWidgets) 388 subWidgets = new QMap<HWND, WidgetData>(); 389 wd = &(*subWidgets)[widget->internalWinId()]; 390 } 391 392 wd->widget = widget; 387 subWidgets = new QMap<QWidget *, WidgetData>(); 388 wd = &(*subWidgets)[widget]; 389 } 390 393 391 wd->vrnDirty = true; 394 392 wd->widgetHeight = 0; … … 418 416 widget->removeEventFilter(this); 419 417 widget->removePmEventFilter(this); 420 subWidgets->remove(widget ->internalWinId());418 subWidgets->remove(widget); 421 419 } 422 420 } … … 425 423 { 426 424 QWidget *widget = qobject_cast<QWidget *>(obj); 427 if (event->type() == QEvent::ParentAboutToChange) { 425 if (event->type() == QEvent::ParentAboutToChange || 426 event->type() == QEvent::Destroy) { 428 427 removeWidget(widget); 429 428 } … … 466 465 data.vrnDirty = true; 467 466 if (subWidgets) { 468 foreach( HWND hwnd, subWidgets->keys())469 (*subWidgets)[ hwnd].vrnDirty = true;467 foreach(, subWidgets->keys()) 468 (*subWidgets)[].vrnDirty = true; 470 469 } 471 470 } … … 487 486 data.vrnDirty = true; 488 487 if (subWidgets) { 489 foreach( HWND hwnd, subWidgets->keys())490 (*subWidgets)[ hwnd].vrnDirty = true;488 foreach(, subWidgets->keys()) 489 (*subWidgets)[].vrnDirty = true; 491 490 } 492 491 } … … 530 529 { 531 530 if (d->subWidgets) { 532 foreach(HWND hwnd, d->subWidgets->keys()) 533 d->removeWidget((*d->subWidgets)[hwnd].widget); 531 QList<QWidget *> keys = d->subWidgets->keys(); 532 foreach(QWidget *w, keys) 533 d->removeWidget(w); 534 534 Q_ASSERT(d->subWidgets->count() == 0); 535 535 delete d->subWidgets;
Note:
See TracChangeset
for help on using the changeset viewer.