Merge branch 'master' into feature/lua_scripting

This commit is contained in:
Mm2PL 2023-02-15 23:36:36 +00:00 committed by GitHub
commit 8f90b4c9fc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 96 additions and 28 deletions

View file

@ -40,9 +40,10 @@ if [ ! -f ./bin/chatterino ] || [ ! -x ./bin/chatterino ]; then
exit 1 exit 1
fi fi
chatterino_version=$(git describe 2>/dev/null | cut -c 2-) || true chatterino_version=$(git describe 2>/dev/null) || true
if [ -z "$chatterino_version" ]; then if [ "$(echo "$chatterino_version" | cut -c1-1)" = 'v' ]; then
# Fall back to this in case the build happened outside of a git repo chatterino_version="$(echo "$chatterino_version" | cut -c2-)"
else
chatterino_version="0.0.0-dev" chatterino_version="0.0.0-dev"
fi fi

View file

@ -349,6 +349,9 @@ jobs:
if: (github.event_name == 'push' && github.ref == 'refs/heads/master') if: (github.event_name == 'push' && github.ref == 'refs/heads/master')
steps: steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # allows for tags access
- uses: actions/download-artifact@v3 - uses: actions/download-artifact@v3
with: with:
name: chatterino-windows-x86-64-5.15.2.zip name: chatterino-windows-x86-64-5.15.2.zip
@ -390,3 +393,9 @@ jobs:
prerelease: true prerelease: true
name: Nightly Release name: Nightly Release
tag: nightly-build tag: nightly-build
- name: Update nightly-build tag
run: |
git tag -f nightly-build
git push -f origin nightly-build
shell: bash

View file

@ -8,11 +8,11 @@ Note on Qt version compatibility: If you are installing Qt from a package manage
_Most likely works the same for other Debian-like distros_ _Most likely works the same for other Debian-like distros_
Install all of the dependencies using `sudo apt install qttools5-dev qtmultimedia5-dev qt5-image-formats-plugins libqt5svg5-dev libboost-dev libssl-dev libboost-system-dev libboost-filesystem-dev cmake g++` Install all of the dependencies using `sudo apt install qttools5-dev qt5-image-formats-plugins libqt5svg5-dev libboost-dev libssl-dev libboost-system-dev libboost-filesystem-dev cmake g++`
### Arch Linux ### Arch Linux
Install all of the dependencies using `sudo pacman -S --needed qt5-base qt5-multimedia qt5-imageformats qt5-svg qt5-tools gst-plugins-ugly gst-plugins-good boost rapidjson pkgconf openssl cmake` Install all of the dependencies using `sudo pacman -S --needed qt5-base qt5-imageformats qt5-svg qt5-tools boost rapidjson pkgconf openssl cmake`
Alternatively you can use the [chatterino2-git](https://aur.archlinux.org/packages/chatterino2-git/) package to build and install Chatterino for you. Alternatively you can use the [chatterino2-git](https://aur.archlinux.org/packages/chatterino2-git/) package to build and install Chatterino for you.
@ -20,7 +20,7 @@ Alternatively you can use the [chatterino2-git](https://aur.archlinux.org/packag
_Most likely works the same for other Red Hat-like distros. Substitute `dnf` with `yum`._ _Most likely works the same for other Red Hat-like distros. Substitute `dnf` with `yum`._
Install all of the dependencies using `sudo dnf install qt5-qtbase-devel qt5-qtmultimedia-devel qt5-imageformats qt5-qtsvg-devel qt5-linguist libsecret-devel openssl-devel boost-devel cmake` Install all of the dependencies using `sudo dnf install qt5-qtbase-devel qt5-imageformats qt5-qtsvg-devel qt5-linguist libsecret-devel openssl-devel boost-devel cmake`
### NixOS 18.09+ ### NixOS 18.09+

View file

@ -2,19 +2,21 @@
## Unversioned ## Unversioned
- Major: Added live emote updates for BTTV (#4147) - Major: Added live emote updates for BTTV. (#4147)
- Minor: Added option to highlight your own messages in Highlights page under Users tab. (#3833)
- Minor: Change the highlight order to prioritize Message highlights over User highlights. (#4303)
- Minor: Added ability to negate search options by prefixing it with an exclamation mark (e.g. `!badge:mod` to search for messages where the author does not have the moderator badge). (#4207)
- Minor: Search window input will automatically use currently selected text if present. (#4178)
- Minor: Cleared up highlight sound settings (#4194)
- Minor: Tables in settings window will now scroll to newly added rows. (#4216)
- Minor: Added link to streamlink docs for easier user setup. (#4217)
- Minor: Added setting to turn off rendering of reply context. (#4224) - Minor: Added setting to turn off rendering of reply context. (#4224)
- Minor: Changed the highlight order to prioritize Message highlights over User highlights. (#4303)
- Minor: Added a setting to highlight your own messages in `Highlights -> Users`. (#3833)
- Minor: Added the ability to negate search options by prefixing it with an exclamation mark (e.g. `!badge:mod` to search for messages where the author does not have the moderator badge). (#4207)
- Minor: Search window input will automatically use currently selected text if present. (#4178)
- Minor: Grouped highlight sound columns together and improved wording for the default sound setting. (#4194)
- Minor: Tables in settings window will now scroll to newly added rows. (#4216)
- Minor: Added setting to select which channels to log. (#4302) - Minor: Added setting to select which channels to log. (#4302)
- Minor: Added channel name to /mentions log entries. (#4371)
- Minor: Added link to streamlink docs for easier user setup. (#4217)
- Minor: Added support for HTTP and Socks5 proxies through environment variables. (#4321) - Minor: Added support for HTTP and Socks5 proxies through environment variables. (#4321)
- Minor: Remove sending part of the multipart emoji workaround (#4361) - Minor: Removed sending part of the multipart emoji workaround. (#4361)
- Minor: Added crashpad to capture crashes on Windows locally. See PR for build/crash analysis instructions. (#4351) - Minor: Added crashpad to capture crashes on Windows locally. See PR for build/crash analysis instructions. (#4351)
- Bugfix: Fixed User Card moderation actions not working after Twitch IRC chat command deprecation. (#4378)
- Bugfix: Fixed crash that would occur when performing certain actions after removing all tabs. (#4271) - Bugfix: Fixed crash that would occur when performing certain actions after removing all tabs. (#4271)
- Bugfix: Fixed highlight sounds not reloading on change properly. (#4194) - Bugfix: Fixed highlight sounds not reloading on change properly. (#4194)
- Bugfix: Fixed CTRL + C not working in reply thread popups. (#4209) - Bugfix: Fixed CTRL + C not working in reply thread popups. (#4209)
@ -33,7 +35,7 @@
- Bugfix: Fixed an issue where beta versions wouldn't update to stable versions correctly. (#4329) - Bugfix: Fixed an issue where beta versions wouldn't update to stable versions correctly. (#4329)
- Bugfix: Avoided crash that could occur when receiving channel point reward information. (#4360) - Bugfix: Avoided crash that could occur when receiving channel point reward information. (#4360)
- Dev: Changed sound backend from Qt to miniaudio. (#4334) - Dev: Changed sound backend from Qt to miniaudio. (#4334)
- Dev: Remove protocol from QApplication's Organization Domain (so changed from `https://www.chatterino.com` to `chatterino.com`). (#4256) - Dev: Removed protocol from QApplication's Organization Domain (so changed from `https://www.chatterino.com` to `chatterino.com`). (#4256)
- Dev: Ignore `WM_SHOWWINDOW` hide events, causing fewer attempted rescales. (#4198) - Dev: Ignore `WM_SHOWWINDOW` hide events, causing fewer attempted rescales. (#4198)
- Dev: Migrated to C++ 20 (#4252, #4257) - Dev: Migrated to C++ 20 (#4252, #4257)
- Dev: Enable LTO for main branch builds. (#4258, #4260) - Dev: Enable LTO for main branch builds. (#4258, #4260)
@ -53,6 +55,7 @@
- Dev: Disabled ImageExpirationPool in tests. (#4363) - Dev: Disabled ImageExpirationPool in tests. (#4363)
- Dev: Don't rely on undocumented registry keys to find the default browser on Windows. (#4362) - Dev: Don't rely on undocumented registry keys to find the default browser on Windows. (#4362)
- Dev: Use `QEnterEvent` for `QWidget::enterEvent` on Qt 6. (#4365) - Dev: Use `QEnterEvent` for `QWidget::enterEvent` on Qt 6. (#4365)
- Dev: Use `qintptr` in `QWidget::nativeEvent` on Qt 6. (#4376)
## 2.4.0 ## 2.4.0

View file

@ -956,7 +956,7 @@ void CommandController::initialize(Settings &, Paths &paths)
QString message) { QString message) {
using Error = HelixGetChattersError; using Error = HelixGetChattersError;
QString errorMessage = QString("Failed to get chatter count: "); QString errorMessage = QString("Failed to get chatter count - ");
switch (error) switch (error)
{ {
@ -1064,7 +1064,7 @@ void CommandController::initialize(Settings &, Paths &paths)
auto formatModsError = [](HelixGetModeratorsError error, QString message) { auto formatModsError = [](HelixGetModeratorsError error, QString message) {
using Error = HelixGetModeratorsError; using Error = HelixGetModeratorsError;
QString errorMessage = QString("Failed to get moderators: "); QString errorMessage = QString("Failed to get moderators - ");
switch (error) switch (error)
{ {

View file

@ -95,6 +95,11 @@ void LoggingChannel::addMessage(MessagePtr message)
} }
QString str; QString str;
if (channelName.startsWith("/mentions"))
{
str.append("#" + message->channelName + " ");
}
str.append('['); str.append('[');
str.append(now.toString("HH:mm:ss")); str.append(now.toString("HH:mm:ss"));
str.append("] "); str.append("] ");

View file

@ -631,8 +631,13 @@ void BaseWindow::moveIntoDesktopRect(QPoint point)
this->move(point); this->move(point);
} }
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
bool BaseWindow::nativeEvent(const QByteArray &eventType, void *message,
qintptr *result)
#else
bool BaseWindow::nativeEvent(const QByteArray &eventType, void *message, bool BaseWindow::nativeEvent(const QByteArray &eventType, void *message,
long *result) long *result)
#endif
{ {
#ifdef USEWINSDK #ifdef USEWINSDK
MSG *msg = reinterpret_cast<MSG *>(message); MSG *msg = reinterpret_cast<MSG *>(message);
@ -830,7 +835,11 @@ bool BaseWindow::handleSHOWWINDOW(MSG *msg)
#endif #endif
} }
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
bool BaseWindow::handleNCCALCSIZE(MSG *msg, qintptr *result)
#else
bool BaseWindow::handleNCCALCSIZE(MSG *msg, long *result) bool BaseWindow::handleNCCALCSIZE(MSG *msg, long *result)
#endif
{ {
#ifdef USEWINSDK #ifdef USEWINSDK
if (this->hasCustomWindowFrame()) if (this->hasCustomWindowFrame())
@ -914,7 +923,11 @@ bool BaseWindow::handleMOVE(MSG *msg)
return false; return false;
} }
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
bool BaseWindow::handleNCHITTEST(MSG *msg, qintptr *result)
#else
bool BaseWindow::handleNCHITTEST(MSG *msg, long *result) bool BaseWindow::handleNCHITTEST(MSG *msg, long *result)
#endif
{ {
#ifdef USEWINSDK #ifdef USEWINSDK
const LONG border_width = 8; // in pixels const LONG border_width = 8; // in pixels

View file

@ -67,8 +67,13 @@ public:
static bool supportsCustomWindowFrame(); static bool supportsCustomWindowFrame();
protected: protected:
virtual bool nativeEvent(const QByteArray &eventType, void *message, #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
bool nativeEvent(const QByteArray &eventType, void *message,
qintptr *result) override;
#else
bool nativeEvent(const QByteArray &eventType, void *message,
long *result) override; long *result) override;
#endif
virtual void scaleChangedEvent(float) override; virtual void scaleChangedEvent(float) override;
virtual void paintEvent(QPaintEvent *) override; virtual void paintEvent(QPaintEvent *) override;
@ -103,10 +108,15 @@ private:
bool handleDPICHANGED(MSG *msg); bool handleDPICHANGED(MSG *msg);
bool handleSHOWWINDOW(MSG *msg); bool handleSHOWWINDOW(MSG *msg);
bool handleNCCALCSIZE(MSG *msg, long *result);
bool handleSIZE(MSG *msg); bool handleSIZE(MSG *msg);
bool handleMOVE(MSG *msg); bool handleMOVE(MSG *msg);
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
bool handleNCCALCSIZE(MSG *msg, qintptr *result);
bool handleNCHITTEST(MSG *msg, qintptr *result);
#else
bool handleNCCALCSIZE(MSG *msg, long *result);
bool handleNCHITTEST(MSG *msg, long *result); bool handleNCHITTEST(MSG *msg, long *result);
#endif
bool enableCustomFrame_; bool enableCustomFrame_;
ActionOnFocusLoss actionOnFocusLoss_ = Nothing; ActionOnFocusLoss actionOnFocusLoss_ = Nothing;

View file

@ -27,8 +27,13 @@ FramelessEmbedWindow::FramelessEmbedWindow()
} }
#ifdef USEWINSDK #ifdef USEWINSDK
# if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
bool FramelessEmbedWindow::nativeEvent(const QByteArray &eventType,
void *message, qintptr *result)
# else
bool FramelessEmbedWindow::nativeEvent(const QByteArray &eventType, bool FramelessEmbedWindow::nativeEvent(const QByteArray &eventType,
void *message, long *result) void *message, long *result)
# endif
{ {
MSG *msg = reinterpret_cast<MSG *>(message); MSG *msg = reinterpret_cast<MSG *>(message);

View file

@ -13,8 +13,15 @@ public:
protected: protected:
#ifdef USEWINSDK #ifdef USEWINSDK
# if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
bool nativeEvent(const QByteArray &eventType, void *message,
qintptr *result) override;
# else
bool nativeEvent(const QByteArray &eventType, void *message, bool nativeEvent(const QByteArray &eventType, void *message,
long *result) override; long *result) override;
# endif
void showEvent(QShowEvent *event) override; void showEvent(QShowEvent *event) override;
#endif #endif

View file

@ -5,6 +5,7 @@
#include "common/NetworkRequest.hpp" #include "common/NetworkRequest.hpp"
#include "common/QLogging.hpp" #include "common/QLogging.hpp"
#include "controllers/accounts/AccountController.hpp" #include "controllers/accounts/AccountController.hpp"
#include "controllers/commands/CommandController.hpp"
#include "controllers/highlights/HighlightBlacklistUser.hpp" #include "controllers/highlights/HighlightBlacklistUser.hpp"
#include "controllers/hotkeys/HotkeyController.hpp" #include "controllers/hotkeys/HotkeyController.hpp"
#include "messages/Message.hpp" #include "messages/Message.hpp"
@ -223,6 +224,10 @@ UserInfoPopup::UserInfoPopup(bool closeAutomatically, QWidget *parent,
.arg(this->userName_) .arg(this->userName_)
.arg(calculateTimeoutDuration(button)); .arg(calculateTimeoutDuration(button));
} }
msg = getApp()->commands->execCommand(
msg, this->underlyingChannel_, false);
this->underlyingChannel_->sendMessage(msg); this->underlyingChannel_->sendMessage(msg);
return ""; return "";
}}, }},
@ -478,25 +483,35 @@ UserInfoPopup::UserInfoPopup(bool closeAutomatically, QWidget *parent,
case TimeoutWidget::Ban: { case TimeoutWidget::Ban: {
if (this->underlyingChannel_) if (this->underlyingChannel_)
{ {
this->underlyingChannel_->sendMessage("/ban " + QString value = "/ban " + this->userName_;
this->userName_); value = getApp()->commands->execCommand(
value, this->underlyingChannel_, false);
this->underlyingChannel_->sendMessage(value);
} }
} }
break; break;
case TimeoutWidget::Unban: { case TimeoutWidget::Unban: {
if (this->underlyingChannel_) if (this->underlyingChannel_)
{ {
this->underlyingChannel_->sendMessage("/unban " + QString value = "/unban " + this->userName_;
this->userName_); value = getApp()->commands->execCommand(
value, this->underlyingChannel_, false);
this->underlyingChannel_->sendMessage(value);
} }
} }
break; break;
case TimeoutWidget::Timeout: { case TimeoutWidget::Timeout: {
if (this->underlyingChannel_) if (this->underlyingChannel_)
{ {
this->underlyingChannel_->sendMessage( QString value = "/timeout " + this->userName_ + " " +
"/timeout " + this->userName_ + " " + QString::number(arg);
QString::number(arg));
value = getApp()->commands->execCommand(
value, this->underlyingChannel_, false);
this->underlyingChannel_->sendMessage(value);
} }
} }
break; break;