Changeset 343
- Timestamp:
- Nov 23, 2009, 11:37:40 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gui/kernel/qmime_pm.cpp
r339 r343 409 409 ULONG &flags, ULONG *data) const 410 410 { 411 if (!mimeData->hasText()) 411 if (!mimeData->hasText() || 412 (format != CF_TEXT && format != CF_TextUnicode && format != CF_TextHtml)) 412 413 return false; 413 414 … … 514 515 !mimeType.startsWith("text/html")) 515 516 return ret; 516 if (!(flags & CFI_POINTER) || !data) 517 if ((format != CF_TEXT && format != CF_TextUnicode && format != CF_TextHtml) || 518 !(flags & CFI_POINTER) || !data) 517 519 return ret; 518 520 … … 549 551 //////////////////////////////////////////////////////////////////////////////// 550 552 551 class QPMMime AnyMime : public QPMMime553 class QPMMimee : public QPMMime 552 554 { 553 555 public: 554 QPMMime AnyMime();556 QPMMimee(); 555 557 556 558 // for converting from Qt … … 558 560 bool convertFromMimeData(const QMimeData *mimeData, ULONG format, 559 561 ULONG &flags, ULONG *data) const; 560 562 // for converting to Qt 563 QList<MimeCFPair> mimesForFormats(const QList<ULONG> &formats) const; 564 QVariant convertFromFormat(ULONG format, ULONG flags, ULONG data, 565 const QString &mimeType, 566 QVariant::Type preferredType) const; 567 }; 568 569 QPMMimeImage::QPMMimeImage() 570 { 571 } 572 573 QList<QPMMime::MimeCFPair> QPMMimeImage::formatsForMimeData(const QMimeData *mimeData) const 574 { 575 QList<MimeCFPair> fmts; 576 if (mimeData->hasImage()) { 577 // "application/x-qt-image" seems to be used as a single name for all 578 // "image/xxx" types in Qt 579 fmts << MimeCFPair(QLatin1String("application/x-qt-image"), CF_BITMAP); 580 } 581 return fmts; 582 } 583 584 bool QPMMimeImage::convertFromMimeData(const QMimeData *mimeData, ULONG format, 585 ULONG &flags, ULONG *data) const 586 { 587 if (!mimeData->hasImage() || format != CF_BITMAP) 588 return false; 589 590 flags = CFI_HANDLE; 591 592 if (data == NULL) 593 return true; // delayed rendering, nothing to do 594 595 QImage img = qvariant_cast<QImage>(mimeData->imageData()); 596 if (img.isNull()) 597 return false; 598 599 QPixmap pm = QPixmap::fromImage(img); 600 if (pm.isNull()) 601 return false; 602 603 HBITMAP bmp = pm.toPmHBITMAP(0, true); 604 if (bmp == NULLHANDLE) 605 return false; 606 607 *data = bmp; 608 return true; 609 } 610 611 QList<QPMMime::MimeCFPair> QPMMimeImage::mimesForFormats(const QList<ULONG> &formats) const 612 { 613 QList<MimeCFPair> mimes; 614 if (formats.contains(CF_BITMAP)) 615 mimes << MimeCFPair(QLatin1String("application/x-qt-image"), CF_BITMAP); 616 return mimes; 617 } 618 619 QVariant QPMMimeImage::convertFromFormat(ULONG format, ULONG flags, ULONG data, 620 const QString &mimeType, 621 QVariant::Type preferredType) const 622 { 623 Q_UNUSED(preferredType); 624 625 QVariant ret; 626 627 if (mimeType != QLatin1String("application/x-qt-image")) 628 return ret; 629 if (format != CF_BITMAP || !(flags & CFI_HANDLE) || !data) 630 return ret; 631 632 QPixmap pm = QPixmap::fromPmHBITMAP((HBITMAP)data); 633 if (pm.isNull()) 634 return ret; 635 636 ret = pm.toImage(); 637 return ret; 638 } 639 640 //////////////////////////////////////////////////////////////////////////////// 641 642 class QPMMimeAnyMime : public QPMMime 643 { 644 public: 645 QPMMimeAnyMime(); 646 647 // for converting from Qt 648 QList<MimeCFPair> formatsForMimeData(const QMimeData *mimeData) const; 649 bool convertFromMimeData(const QMimeData *mimeData, ULONG format, 650 ULONG &flags, ULONG *data) const; 561 651 // for converting to Qt 562 652 QList<MimeCFPair> mimesForFormats(const QList<ULONG> &formats) const; … … 756 846 initialized = true; 757 847 new QPMMimeAnyMime; // must be the first (used as a fallback) 848 758 849 new QPMMimeText; 759 850 }
Note:
See TracChangeset
for help on using the changeset viewer.