mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
Better Highlights: Fix Unintentional Color Update (#1522)
* HighlightPhrase: Fix wrong documentation * Use right constructor for new HighlightPhrases * Fix preset highlights changing unintentionally Prior to this commit, the callback for reacting to user input on the highlight table (namely, `HighlightingPage::tableCellClicked`) only checked for the row number in order to determine whether preset highlights (self highlights, whispers, and subscriptions) need to be updated. Hence, changing rows 0 through 2 in the "User Highlights" tab would also update the preset highlights. This commit adds a check to determine whether the callback was triggered by the "Messages" highlight tab, or not.
This commit is contained in:
parent
bfee75ec58
commit
497ce2d2f2
|
@ -12,11 +12,6 @@ bool HighlightPhrase::operator==(const HighlightPhrase &other) const
|
||||||
other.soundUrl_, other.color_);
|
other.soundUrl_, other.color_);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Create a new HighlightPhrase.
|
|
||||||
*
|
|
||||||
* Use this constructor when updating an existing HighlightPhrase's color.
|
|
||||||
*/
|
|
||||||
HighlightPhrase::HighlightPhrase(const QString &pattern, bool hasAlert,
|
HighlightPhrase::HighlightPhrase(const QString &pattern, bool hasAlert,
|
||||||
bool hasSound, bool isRegex,
|
bool hasSound, bool isRegex,
|
||||||
bool isCaseSensitive, const QString &soundUrl,
|
bool isCaseSensitive, const QString &soundUrl,
|
||||||
|
@ -36,11 +31,6 @@ HighlightPhrase::HighlightPhrase(const QString &pattern, bool hasAlert,
|
||||||
this->color_ = std::make_shared<QColor>(color);
|
this->color_ = std::make_shared<QColor>(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Create a new HighlightPhrase.
|
|
||||||
*
|
|
||||||
* Use this constructor when creating a new HighlightPhrase.
|
|
||||||
*/
|
|
||||||
HighlightPhrase::HighlightPhrase(const QString &pattern, bool hasAlert,
|
HighlightPhrase::HighlightPhrase(const QString &pattern, bool hasAlert,
|
||||||
bool hasSound, bool isRegex,
|
bool hasSound, bool isRegex,
|
||||||
bool isCaseSensitive, const QString &soundUrl,
|
bool isCaseSensitive, const QString &soundUrl,
|
||||||
|
|
|
@ -15,10 +15,20 @@ class HighlightPhrase
|
||||||
public:
|
public:
|
||||||
bool operator==(const HighlightPhrase &other) const;
|
bool operator==(const HighlightPhrase &other) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Create a new HighlightPhrase.
|
||||||
|
*
|
||||||
|
* Use this constructor when creating a new HighlightPhrase.
|
||||||
|
*/
|
||||||
HighlightPhrase(const QString &pattern, bool hasAlert, bool hasSound,
|
HighlightPhrase(const QString &pattern, bool hasAlert, bool hasSound,
|
||||||
bool isRegex, bool isCaseSensitive, const QString &soundUrl,
|
bool isRegex, bool isCaseSensitive, const QString &soundUrl,
|
||||||
QColor color);
|
QColor color);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Create a new HighlightPhrase.
|
||||||
|
*
|
||||||
|
* Use this constructor when updating an existing HighlightPhrase's color.
|
||||||
|
*/
|
||||||
HighlightPhrase(const QString &pattern, bool hasAlert, bool hasSound,
|
HighlightPhrase(const QString &pattern, bool hasAlert, bool hasSound,
|
||||||
bool isRegex, bool isCaseSensitive, const QString &soundUrl,
|
bool isRegex, bool isCaseSensitive, const QString &soundUrl,
|
||||||
std::shared_ptr<QColor> color);
|
std::shared_ptr<QColor> color);
|
||||||
|
|
|
@ -121,7 +121,7 @@ HighlightingPage::HighlightingPage()
|
||||||
getApp()->highlights->highlightedUsers.appendItem(
|
getApp()->highlights->highlightedUsers.appendItem(
|
||||||
HighlightPhrase{"highlighted user", true, false, false,
|
HighlightPhrase{"highlighted user", true, false, false,
|
||||||
false, "",
|
false, "",
|
||||||
ColorProvider::instance().color(
|
*ColorProvider::instance().color(
|
||||||
ColorType::SelfHighlight)});
|
ColorType::SelfHighlight)});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -243,7 +243,16 @@ void HighlightingPage::tableCellClicked(const QModelIndex &clicked,
|
||||||
view->getModel()->setData(clicked, selected,
|
view->getModel()->setData(clicked, selected,
|
||||||
Qt::DecorationRole);
|
Qt::DecorationRole);
|
||||||
|
|
||||||
// For special highlights we need to manually update the color map
|
// Hacky (?) way to figure out what tab the cell was clicked in
|
||||||
|
const bool fromMessages = (dynamic_cast<HighlightModel *>(
|
||||||
|
view->getModel()) != nullptr);
|
||||||
|
|
||||||
|
if (fromMessages)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* For preset highlights in the "Messages" tab, we need to
|
||||||
|
* manually update the color map.
|
||||||
|
*/
|
||||||
auto instance = ColorProvider::instance();
|
auto instance = ColorProvider::instance();
|
||||||
switch (clicked.row())
|
switch (clicked.row())
|
||||||
{
|
{
|
||||||
|
@ -255,10 +264,12 @@ void HighlightingPage::tableCellClicked(const QModelIndex &clicked,
|
||||||
instance.updateColor(ColorType::Whisper, selected);
|
instance.updateColor(ColorType::Whisper, selected);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
instance.updateColor(ColorType::Subscription, selected);
|
instance.updateColor(ColorType::Subscription,
|
||||||
|
selected);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue