From 6af8a49aaebc5cc53737f334121af9ccb71c4a9c Mon Sep 17 00:00:00 2001 From: Blitzmerker Date: Mon, 29 Dec 2014 19:00:28 +0100 Subject: [PATCH] Fixes the "Card preview window gets stuck and can't be removed" issue by saving the cardname, instead of getting it back from the popup (with possible issues with case sensitivity). Also closes an old popup when a new is created. --- cockatrice/src/tab.cpp | 6 +++++- cockatrice/src/tab.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/cockatrice/src/tab.cpp b/cockatrice/src/tab.cpp index 28838ed2..7ae2cca2 100644 --- a/cockatrice/src/tab.cpp +++ b/cockatrice/src/tab.cpp @@ -10,6 +10,10 @@ Tab::Tab(TabSupervisor *_tabSupervisor, QWidget *parent) void Tab::showCardInfoPopup(const QPoint &pos, const QString &cardName) { + if (infoPopup) { + infoPopup->deleteLater(); + } + currentCardName = cardName; infoPopup = new CardInfoWidget(CardInfoWidget::ModePopUp, cardName, 0, Qt::Widget | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint | Qt::WindowStaysOnTopHint); infoPopup->setAttribute(Qt::WA_TransparentForMouseEvents); QRect screenRect = qApp->desktop()->screenGeometry(this); @@ -23,7 +27,7 @@ void Tab::showCardInfoPopup(const QPoint &pos, const QString &cardName) void Tab::deleteCardInfoPopup(const QString &cardName) { if (infoPopup) { - if ((infoPopup->getCardName() == cardName) || (cardName == "_")) { + if ((currentCardName == cardName) || (cardName == "_")) { infoPopup->deleteLater(); infoPopup = 0; } diff --git a/cockatrice/src/tab.h b/cockatrice/src/tab.h index 1b8b7704..30d4e2ed 100644 --- a/cockatrice/src/tab.h +++ b/cockatrice/src/tab.h @@ -19,6 +19,7 @@ protected slots: void showCardInfoPopup(const QPoint &pos, const QString &cardName); void deleteCardInfoPopup(const QString &cardName); private: + QString currentCardName; bool contentsChanged; CardInfoWidget *infoPopup; QList tabMenus;