mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-02 15:45:21 +00:00
fix: 修复从托盘拖动图标到任务栏引起崩溃的问题
将static_cast修改为dynamic_cast,增加了类型判断 Log: Influence: 将托盘图标拖动到任务栏 Bug: https://pms.uniontech.com/bug-view-181945.html Change-Id: I5b23088b8b7508d9a7cf2683a3a8571a57b82e38
This commit is contained in:
parent
4800acce2c
commit
a572f8a37d
@ -50,6 +50,4 @@ private:
|
||||
bool m_useSourcePixmap;
|
||||
};
|
||||
|
||||
Q_DECLARE_INTERFACE(QuickIconDrag, "QuickIconDrag")
|
||||
|
||||
#endif // QUICKDRAGCORE_H
|
||||
|
@ -320,7 +320,9 @@ bool QuickPluginWindow::eventFilter(QObject *watched, QEvent *event)
|
||||
|
||||
void QuickPluginWindow::dragEnterEvent(QDragEnterEvent *event)
|
||||
{
|
||||
m_dragEnterMimeData = static_cast<QuickPluginMimeData *>(const_cast<QMimeData *>(event->mimeData()));
|
||||
// 由于QuickPluginMimeData和QuickIconDrag的来源是pluginManager插件,dock和插件中都使用了这两个类,但是这个两个类
|
||||
// 是各自编译的,相当于编译了两份,所以使用qobject_cast会导致转换失败,因此,此处使用dynamic_cast来保证转换成功
|
||||
m_dragEnterMimeData = dynamic_cast<QuickPluginMimeData *>(const_cast<QMimeData *>(event->mimeData()));
|
||||
if (m_dragEnterMimeData) {
|
||||
PluginsItemInterface *plugin = m_dragEnterMimeData->pluginItemInterface();
|
||||
QIcon icon = plugin->icon(DockPart::QuickShow);
|
||||
@ -329,7 +331,7 @@ void QuickPluginWindow::dragEnterEvent(QDragEnterEvent *event)
|
||||
if (widget)
|
||||
icon = widget->grab();
|
||||
}
|
||||
QuickIconDrag *drag = qobject_cast<QuickIconDrag *>(m_dragEnterMimeData->drag());
|
||||
QuickIconDrag *drag = dynamic_cast<QuickIconDrag *>(m_dragEnterMimeData->drag());
|
||||
if (drag && !icon.isNull()) {
|
||||
QPixmap pixmap = icon.pixmap(QSize(16, 16));
|
||||
drag->updatePixmap(pixmap);
|
||||
|
Loading…
x
Reference in New Issue
Block a user