mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-21 22:24:07 +01:00
Merge branch 'master' into feature/lua_scripting
This commit is contained in:
commit
8f90b4c9fc
11 changed files with 96 additions and 28 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
9
.github/workflows/build.yml
vendored
9
.github/workflows/build.yml
vendored
|
@ -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
|
||||||
|
|
|
@ -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+
|
||||||
|
|
||||||
|
|
23
CHANGELOG.md
23
CHANGELOG.md
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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("] ");
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue