Commit graph

1966 commits

Author SHA1 Message Date
pajlada e327ed4166
Update magic_enum from v0.9.3 to v0.9.5 (#4992)
* Fix include path for magic enum
* Update .clang-format to ensure magic enum is caught as a third party library
2023-12-01 15:03:04 +01:00
Mm2PL 6d02bb7304
Make emote completion a lot smarter (#4987) 2023-11-28 10:06:35 +00:00
pajlada a240797b68
Add support for sound backends & some miniaudio changes (#4978)
Miniaudio now runs everything in a separate audio thread - this uses boost::asio's io_context.
Our miniaudio implementation is now also much simplified - it does not use its own resource manager or device. This might end up being stupid if sounds don't work after changing output device or locking or w/e
I've made the sound controller into an interface, meaning we can support multiple sound backends in Chatterino. I've added a Null sound backend that disables all sound. A QMediaPlayer or QSoundEffect or Qt backend could be added.
Miniaudio might idle & disable the device now too, not sure

I've added some unrelated changes in the form of a new setting type, and a new setting page helper function for it, which will hopefully make adding new enum settings easier in the future.
This setting stores its value as a string instead of an int, and uses magic_enum to convert between that string value and its enum value.
2023-11-26 22:06:12 +01:00
pajlada 5b741a8eb6
refactor: Remove Emoji's EmojiMap with a vector (#4980) 2023-11-26 18:17:58 +00:00
Mm2PL 1a685d7bd0
Finish renaming Viewer list to Chatter list (#4974) 2023-11-20 17:59:04 +00:00
Mm2PL fbc8aacabe
Refactored the Image Uploader feature. (#4971)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-11-19 11:05:30 +00:00
nerix 6faf63c5c4
refactor: Remove Outcome from network requests (#4959) 2023-11-12 14:51:51 +01:00
pajlada 95620e6e10
fix: Split input sometimes not accepting focus (#4958) 2023-11-11 10:58:20 +00:00
Mm2PL f943f70634
Add support for opening usercards by ID (#4934)
Co-authored-by: nerix <nerixdev@outlook.de>
2023-11-06 20:42:24 +01:00
iProdigy 5209e47df1
Improve reply popup after thread update (#4923)
Co-authored-by: nerix <nero.9@hotmail.de>
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-11-05 16:25:26 +00:00
nerix 7d145e3577
Disable clickable sections in tables (#4913) 2023-11-04 18:42:13 +00:00
nerix 5325c7b826
Fix tooltips appearing too large and/or away from the cursor (#4920) 2023-11-04 18:13:34 +00:00
pajlada f8b239899a
refactor: KeyboardSettingsPage (#4937) 2023-11-04 10:56:31 +00:00
pajlada 4e63a1b6ec
refactor: Message (#4915)
* Helix: Remove static from anon namespace

* Message: Remove empty anon namespace

* Message: Remove else after return

* Message: Avoid repeating type in return

* Message: Remove ScrollbarHighlight alias

* Message: Remove unused includes

* AttachedWindow: Remove unused include
2023-11-02 14:48:12 +00:00
Mm2PL 03b32bffc8
Bugfix: Fixed a crash when clicking More messages below button in a usercard and closing it quickly. (#4933) 2023-11-02 12:12:52 +00:00
pajlada 56346874e1
ci: Use clang-format 16 (#4929) 2023-10-31 17:24:47 +00:00
pajlada 7efe58cca9
refactor: ChannelView (#4926)
Co-authored-by: nerix <nerixdev@outlook.de>
2023-10-31 14:54:14 +01:00
nerix c811e2d991
refactor: Change lifetime of context menus (#4924) 2023-10-29 19:24:38 +00:00
nerix 7ecbfa0cdb
refactor: debug count and popup (#4921)
* Moved implementation of the methods to the `cpp` file.
* Added `DebugCount::Flag(s)` and `DebugCount::configure(name, flags)`.
* Moved from `QMap` to `std::map` (order is important here).
* Used `QStringBuilder` for concatenations.
* Used `QLocale` for formatting (adds separators).
* Added `DebugCount::Flag::DataSize` for data sizes in bytes (and fixed language to English).
* Used `DataSize` for image sizes (maybe this should be moved somewhere else?).
* Added copy button to popup.
* Fixed Image usage reporting being eight times too large (could be another PR, but honestly it's four characters).
2023-10-28 21:17:32 +02:00
pajlada 5c0219c245
refactor: Use override instead of virtual where possible (#4917) 2023-10-25 18:13:48 +02:00
kornes 12808d3154
refactor: simplify double click selection (#4898) 2023-10-17 13:38:38 +02:00
kornes ccaedc3987
perf: reduce repaints amount caused by selection (#4889)
Co-authored-by: nerix <nero.9@hotmail.de>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-10-13 17:19:52 +00:00
Daniel Sage 653a14c76b
fix: Don't use QCompleter prefix filter (#4855)
* Invalidate tab completion model when settings change

* Remove true culprit

* Update CHANGELOG.md

* Remove QCompleter setFilterMode call

---------

Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
2023-10-13 11:22:48 +02:00
pajlada fec45889a8
Replace boost::optional with std::optional (#4877) 2023-10-08 16:50:48 +00:00
nerix 4db93bf1da
Adjust DontFocus window flags on Windows and macOS (#4876) 2023-10-08 00:03:14 +02:00
nerix 752825793a
Ignore invisible widgets when hit testing (#4873)
Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
2023-10-06 21:26:25 +00:00
nerix 2fc7fdd91a
Fix empty page added when showing OOB dialog (#4849) 2023-10-01 06:40:34 +00:00
nerix 916427a612
Fix flickering when running with Direct2D (#4851) 2023-10-01 07:13:37 +02:00
nerix 783c7530f3
Allow any window to be bounds-checked (#4802)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-09-24 13:32:43 +00:00
Daniel Sage 37009e8e6b
Consolidate input completion code in preparation for advanced completion strategies (#4639)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-09-24 12:17:17 +00:00
nerix 6860c7007e
Fix selection rendering (#4830)
The rendering of selections was not aligned to the actual selection that took place for newlines at the end of messages, if they were the only part that was selected of that message.

In addition to that fix, we've already refactored the MessageLayoutContainer to try to make it a little bit more sane to work with in the future.

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-09-23 15:09:56 +00:00
Felanbird 89b915bad1
Mention filters in the note for features that nicknames don't work with (#4826) 2023-09-18 08:52:08 +02:00
pajlada e6df652a4f
fix: QuickSwitcherPopup now pops up in the selected window (#4819) 2023-09-17 21:52:17 +00:00
nerix 3265df7661
Fixed too much text being copied when copying chat messages (#4812)
* fix: selection copying too much

* chore: add changelog entry

* Update changelog entry

---------

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-09-17 12:37:02 +00:00
nerix dc62e8248b
Add (invisible) resize handle to frameless usercards and reply threads (#4795)
* feat: add resize handle to usercards&reply threads

* Add changelog entry

---------

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-09-17 11:27:20 +00:00
Mm2PL d752ce86fd
Add WindowManager::getLastSelectedWindow() to replace getMainWindow() (#4816)
1. No longer can return a nullptr if no window was ever focused
  2. When closing a window, it will no longer return an invalid pointer
2023-09-16 20:53:44 +00:00
qooq69 38c994be49
Fixed Usercard Popup not floating on tiling WMs on Linux (#3511) 2023-09-16 22:15:01 +02:00
pajlada 8fe3af3522
Fix signal connection nodiscard warnings (#4818) 2023-09-16 11:52:51 +00:00
nerix 2d5f078306
Style account switcher to match the current theme (#4817) 2023-09-15 18:44:36 +02:00
nerix 337b043bc3
Fix input in reply thread popup losing focus when dragging (#4815) 2023-09-13 20:38:32 +00:00
nerix 283ede86ad
Only layout visible ChannelViews (#4811) 2023-09-10 17:08:13 +02:00
Daniel Sage 1b9ee939bb
Select correct notebook tab after closing while filtered (#4770) 2023-09-10 10:38:59 +00:00
pajlada 813d96867b
Migrate to the new Get Channel Followers Helix endpoint, fixing follower count not showing up in usercards (#4809) 2023-09-09 12:51:45 +00:00
pajlada d4558b5fe5
Fix all warnings from the cppcoreguidelines-pro-type-member-init clang-tidy check (#4426) 2023-09-09 11:11:19 +00:00
nerix af4233850d
Remove offset logic from BaseWindow::moveTo (#4798)
It's now up to each window to offset its coordinates themselves (which is good 👍 )
2023-08-28 16:38:41 +00:00
pajlada 7cb04bf58b
Remove BaseSettings & merge ConcurrentSettings (#4775) 2023-08-28 17:51:28 +02:00
Mm2PL 1e35391075
Hide AutoMod term management messages in Streamer Mode. (#4758)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-08-12 12:16:30 -04:00
Mm2PL ec0d77643f
Remove USEWEBENGINE (#4757)
This code has been sitting behind a define since 2018 (de3a490). I'm not opposed to this code coming back however in this state, it feels better to remove it.
2023-08-07 18:24:17 +00:00
Mm2PL 59160c5d04
Minor: Add missing hotkey Action for Open Player in Browser. (#4756) 2023-08-07 13:41:32 +00:00
Mm2PL 168f346c81
Remove restriction on Go To Message on system messages from search (#4614)
* Remove restriction on go to message on system messages

Fixes #4608

* changelog

* Change the changelog entry from a bugfix to minor

---------

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-08-05 16:36:49 +00:00
pajlada 9e2eb0dd29
Fix tooltip & popup positioning (#4740)
* Fix tooltip & popup positioning

This tries to ensure the tooltip & popups are created on the correct
monitor

* Add changelog entry

* Clean up debug output

* Use the full frame geometry to figure out screen bound movements

* Remove the now-unused `setStayInScreenRect` function

* Change the UserInfoPopup offset to be based on its width & height
instead

* Remove more debug output
2023-08-05 11:22:37 +00:00
Mm2PL b98be3b0f3
Fixed right-clicking mentions no longer working. (#4751)
* fix up rightclicking mentions

* changelog

* Merge changelog entries other PR was merged after 2.4.4
2023-08-05 11:17:34 +00:00
Mm2PL 89323ffa1f
Fixed tab completion rarely completing the wrong word. (#4735)
* Fixed tab completion rarely completing the wrong word.

Fixes: #3101

* Use QSignalBlocker instead of janky bool, add comment about hidden logic

* copypasteo
2023-07-31 21:34:53 +00:00
nerix 71594ad0d8
Remove getApp and getSettings calls from Message-Rendering (#4535)
* refactor: remove singletons from message rendering

* chore: add changelog entry

* Disable the `cppcoreguidelines-avoid-const-or-ref-data-members` clang-tidy check

* auto *app

* Selection is a struct, not a class

* Use ChannelView's `signalHolder_` instead of `channelConnections_`

* Remove `applySettings` step, instead just connect & set each setting individually

* rename & constify some context values

* Handle empty "last message color" setting value better (as it was
        originally in this pr before I removed that change :-)

* unrelated mini refactor cleanup

* let painSelection handle size_t instead of int

* Add some more comments to the MessageLayoutContext structs

---------

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-07-30 12:52:39 +00:00
nerix 378aee7ab1
Refactor Native Messages (#4738)
* refactor: move ipc queue into its own class

* refactor: move windows.h related functions to AW

* refactor: make NM-Client methods static

* refactor: json access

* refactor: use struct initializer

* refactor: move `handleMessage` to anon-namespace

* refactor: clean-up includes

* refactor: move action handler to functions

* refactor: cleanup `handleSelect`

* fix: cleanup clang-tidy warnings

* chore: simplify json

* revert: keep handlers as methods

This is more readable and extensible.

* fix: typo

* fix: namespace

* fix: rename define

* refactor: `IpcQueue` to be simpler

* fix: rename cmake option

* fix: use variant when constructing

* fix: make it a ref

* fix: its a pair now
2023-07-30 11:14:58 +00:00
Brian c496a68633
Fix: Incorrect tab focus in reply threads (#4739)
* Fix: Incorrect tab focus in reply threads
fixes #4737

* Append to changelog

---------

Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
2023-07-29 17:06:12 +00:00
Abhinav Neelam 9cb59f753f
focus message input when selecting emotes in emote popup (#4719)
* focus input when selecting emotes in emote popup

* changelog

---------

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-07-29 13:16:19 +00:00
SputNikPlop 7079729591
fix: change viewer list to chatter list (#4732)
* fix: change viewer list to chatter list

* fix: enter changelog entry
2023-07-29 10:47:24 +00:00
nerix 33fa3e0a97
Use New 7TV Cosmetics System (#4512)
* feat(seventv): use new cosmetics system

* chore: add changelog entry

* fix: old `clang-format`

* fix: small suggestions pt1

* refactor: add 7tv api wrapper

* fix: small clang-tidy things

* fix: remove unused constants

* fix: old clangtidy

* refactor: rename

* fix: increase interval to 60s

* fix: newline

* fix: Twitch

* docs: add comment

* fix: remove v2 badges endpoint

* fix: deadlock

This is actually really sad.

* fix: remove api entry

* fix: old clang-format

* Sort functions in SeventvBadges.hpp/cpp

* Remove unused vector include

* Add comments to SeventvBadges.hpp functions

* Rename `addBadge` to `registerBadge`

* fix: cleanup eventloop

* ci(test): add timeout

---------

Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-07-29 09:49:44 +00:00
nerix fca57696bb
Increase max number of blocked users loaded from 100 to 1,000 (#4721)
Also includes a little refactor of how the requests are made & how the blocked users are stored
2023-07-23 11:26:12 +00:00
pajlada a440f0261a
Fix crash that could occur when closing a split before its display name was updated (#4731)
This fixes a crash that could occur when closing a split before the
display name had a chance to update

The reason I found this was because the LiveController change I made
updated display names more regularly

Additionally, we now make sure to not send duplicate `displayNameUpdated` signals
upon each request for channels with CJK characters in their display name

* Default-initialize the `actualDisplayName` with the user's login name to not send an initial display name update if the display name is the same casing as the login name
2023-07-23 10:11:57 +00:00
Mm2PL ae8b2adcdd
Add accelerators to the right click menu for messages (#4705) 2023-07-22 12:54:48 +02:00
pajlada 76527073cf
Ensure live status requests are always batched (#4713) 2023-07-02 13:52:15 +00:00
Mm2PL f915eab1a2
Add "pin" action to usercards and reply threads (#4692) 2023-07-01 16:38:55 +00:00
pajlada d2f1516818
Fix crash that could occur if closing the usercard quickly after blocking (#4711)
* Specifically, this adds a caller to the network request, which makes the
success or failure callback not fire.
This has the unintended consequence of the block list not reloading if
the usercard is closed, but it's not a big concern.

* Add unrelated `-DUSE_ALTERNATE_LINKER` cmake option

From 0517d99b46/CMakeLists.txt (L87-L103)
2023-07-01 12:01:47 +00:00
Mm2PL 2f272b37ca
Allow for customizing the behavior of Right Clicking of usernames. (#4622)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-07-01 11:03:16 +00:00
pajlada af34bf6246
Fix streamer mode button being always visible on Windows (#4690)
Fixes #4682
2023-06-18 12:33:44 +00:00
Andrew Opalach 0e60ca10d0
Fix smooth scrolling when ChannelView is full (#4501)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-06-18 12:09:11 +00:00
nerix aff9342647
Add option to subscribe to and pin reply threads (#4680)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-06-17 15:41:52 +00:00
Daniel Sage 4361790fbd
Add setting to only show tabs with live channels (#4358)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-06-11 11:34:28 +02:00
nerix 839ba60fd8
Respect Theme in Input Completion & Quick Switcher (#4671) 2023-06-10 12:38:23 +00:00
nerix 65a14fb95b
Fix crash resulting from a mutex deadlock when switching users (#4675) 2023-06-10 11:40:30 +00:00
nerix 335dff53af
Don't add QLayouts to QWidgets that already have one (#4672) 2023-06-10 10:55:47 +00:00
Arne 6681ed5bfb
Remove QObjectRef in favor of QPointer (#4666)
* replace usage of QObjectRef with QPointer

* delete QObjectRef class

* inlucde QPointer header

* Add changelog entry

* use isNull() instead of ! data()

---------

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-06-04 11:24:04 +00:00
Wissididom e803b6de95
Remove duplicate Fluent icons license (#4665) 2023-06-04 11:40:11 +02:00
chrrs bf4148a370
Consider nicknames when searching for messages (#4663)
Co-authored-by: pajlada <rasmus.karlsson+github@pajlada.com>
2023-05-31 19:38:17 +00:00
pajlada e9432d3b65
Clean up GenericListModel (#4661)
Co-authored-by: Daniel Sage <sagedanielr@gmail.com>
2023-05-29 16:37:55 +02:00
Mm2PL c7b22939d5
Improve editing of hotkeys (#4628)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-05-27 14:04:30 +00:00
Mm2PL c6c884df70
Add an indicator in the title bar if Streamer Mode is active (#4410) 2023-05-27 10:38:25 +00:00
Daniel Sage 51f2c4d1c0
Add input completion test suite (#4644)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-05-21 10:10:49 +00:00
pajlada 5d0bdc195e
Add the ability to select custom themes in the settings dialog (#4570)
Themes are loaded from the Themes directory (under the Chatterino directory, so %APPDATA%/Chatterino2/Themes).

Themes are json files (see the built in themes as an example).

After importing a theme, you must restart Chatterino for it to show up in the settings
2023-05-19 12:26:51 +00:00
Felanbird 8e87886ccc
Reduce the size of the update prompt (#4626)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-05-13 10:13:42 +00:00
Mm2PL 1d4c6d5a9e
Fixed crash when scrolling up really fast. (#4621) 2023-05-11 18:05:27 +02:00
Van Huynh 68f14d3425
Fix Ctrl+Backspace bug after Select All in chat search popup (#4536) 2023-05-07 21:10:22 +00:00
pajlada caa0220ce6
Add a Send button that can be used to send messages (#4607)
This button is disabled by default, and can be enabled with the "Show send message button" setting.
2023-05-07 13:18:07 +00:00
nerix 91f4b86436
Antialias Click-Effects on Buttons (#4473)
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-05-07 11:26:55 +00:00
pajlada f39d43faef
Fix link tooltips showing up blank instead of with text-only (#4597)
Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
2023-05-02 20:33:01 +00:00
pajlada 9d71f9017f
Revert "Dim disabled items in context menus (#4423)" (#4596)
This reverts commit 642718474c.
2023-05-02 19:33:36 +00:00
pajlada 6672adf287
Fix the menu position on macOS when using Qt 6.5 (#4595) 2023-05-02 20:50:13 +02:00
nerix 642718474c
Dim disabled items in context menus (#4423) 2023-04-29 16:50:13 +00:00
nerix 610394d696
Fix Twitch-Specific Filters Not Being Applied (#4529)
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-04-10 10:08:15 +00:00
Daniel Sage 34db692895
Implement type checking/validation for filters (#4364)
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-04-09 23:35:06 +02:00
kornes 5c55f62600
Fix emote & badge tooltips not showing up when thumbnails were hidden (#4509)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-04-08 13:43:38 +00:00
Guilherme Espada 7a286480d6
Fix build on latest Fedora (#4518)
gcc (GCC) 13.0.1 20230401 (Red Hat 13.0.1-0)

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-04-08 08:58:04 +02:00
Mm2PL 5ba809804e
Add basic lua scripting capabilities (#4341)
The scripting capabilities is locked behind a cmake flag, and is not enabled by default.

Co-authored-by: nerix <nerixdev@outlook.de>
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-04-02 15:31:53 +02:00
kornes b209c50b01
Fix channel search when custom scrollback limit is used (#4496) 2023-04-01 12:34:34 +00:00
Colton Clemmer 3d4985c88f
Migrate viewer list to Helix (#4117)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-03-27 16:26:08 +00:00
Muzuwi 1fbbef34bf
Initialize list of blocked users on IgnoresPage construction (#4437)
The `SettingsPage::onShow` handler that sets up the block
list is only called when the application settings dialog
has already been shown once before. This caused the blocked
user list to appear empty until the second time it was opened.

Correct this by explicitly regenerating the block list in the
constructor of `IgnoresPage`.
2023-03-26 11:35:09 +00:00
Daniel Sage 8048dcdd1f
Add Shift+Right Click Shortcut to Reply to a Message (#4424)
Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-03-25 15:00:21 +00:00
pajlada 1ad93b7acc
Fix an issue where the "Enable zero-width emotes" setting was showing the inverse state (#4462) 2023-03-19 11:00:24 +00:00
nerix a777a227d4
Allow each layered image to retain its own flags (#4460)
This fixes an issue where context-menu items for zero-width emotes displayed the wrong provider.
2023-03-19 11:26:30 +01:00
Daniel Sage 0acbc0d2c3
Formalize zero-width emote implementation (#4314)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-03-18 12:30:08 -04:00
nerix 93a9e41d31
Cleanup Theme-related Code (#4450) 2023-03-17 19:53:03 +00:00
James Upjohn 4923549fdf
fix: update emote picker labels to use 7TV naming (#4405) 2023-02-24 09:22:23 -05:00
pajlada c95a65c153
Fix Qt6 building (#4393) 2023-02-19 20:19:18 +01:00
pajlada 6380fb5198
Fix mod, unmod, vip, unvip buttons in User Card (#4387) 2023-02-16 20:43:37 +00:00
pajlada f317d4c99b
Fix User Card moderation actions not using Helix (#4378) 2023-02-14 20:59:23 +00:00
nerix bb0b563a87
Use qintptr in QWidget::nativeEvent on Qt 6 (#4376) 2023-02-13 20:45:58 +00:00
nerix e377c30192
Add Crashpad Support on Windows (#4351)
* feat: crashpad on windows

* feat: inline it

* feat: more crashpad

* chore: remove qBreakpad

* fix: add mention to crashpad

* refactor: version string

* feat: add crashpad module

* refactor: build crashpad from source

* fix: minor adjustments

* chore: add changelog entry

* fix: formatting and include

* fix: format

* build: use flags similar to release profile

* ci: build with crashpad on windows

* ci: recurse submodules

* ci: always include crashpad

* fix: try 7z

for some reason zstd just doesn't run

* fix: wrong path for symbols

* fix: copy

pls don't build

* ci: use new cache key

* fix: missing pragma

* ci: add workflow without crashpad

* docs: elevate changelog entry

* fix: add link to cmake issue

* fix: windows include issue

Someone (crashpad) includes Windows.h before winsock2.h

* fix: working directory

* fix: another working directory
2023-02-12 20:36:58 +01:00
nerix 5179567334
Use QEnterEvent for QWidget::enterEvent on Qt 6 (#4365)
* fix: use concrete QEnterEvent on Qt 6

* chore: add changelog entry
2023-02-11 18:13:29 +01:00
pajlada 4958d08036
Change sound backend from Qt to miniaudio (#4334)
Thanks Greenlandicsmiley, Nerixyz, Yoitsu, and helmak for helping debug & test this

* Remove QMediaPlayer includes

* Prefer local path when generating the sound path

* Update changelog entry number

* Disable pitch & spatialization control
2023-01-29 10:36:25 +01:00
pajlada bf5a5b839c
Fix version checking (#4329)
https://github.com/Neargye/semver

* Use semver library for version downgrade checking

* Add test validating our current version is valid semver
2023-01-26 19:22:48 +01:00
nerix 904749cf62
feat: Add Live Emote Updates for BTTV (#4147)
This feature is enabled by default and can be disabled in settings with the "Enable BTTV live emotes updates" setting.

Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-01-21 14:06:55 +00:00
pajlada 56f7c91a64
Fix the split "Search" menu action not opening the correct search window (#4305)
* Fix split menu "Search" action

It now opens a split-specific search instead of a global one

* Add changelog entry
2023-01-21 10:51:29 +00:00
pajlada f933d9cdf2
Change the highlight order to prioritize Message highlights over User highlights (#4303) 2023-01-15 13:21:42 +00:00
askepticaldreamer 4c782ce90c
Add feature to select channels to log (#4302)
* Add checkbox for custom logging and table with channels to log on Logs page

* Add checkbox to enable and disable logging per channel

* Return from addMessage before logging if custom logging enabled and channel does not have logging enabled

* Use clang-format to fix formatting

* Add CHANGELOG.md entry

* Resolve PR comments

* Remove toggle for channels so any channel listed will be logged

* Move Only log channels listed below checkbox to just above table

* Fix formatting

* Re-order changelog

* ChannelLog constructor: Copy & move instead of const ref & copy

* ChannelLog::createEmpty: Curly brace initialize instead of repeating
name

* ChannelLog toString & createEmpty: nodiscard

* Use COUNT paradigm in model column

* Remove ChanneLoggingModel source file comments

* Use Column::Channel in getRowFromItem

* Rename `getItemFromRow` parameter and mark it as unused

* Curly brace initialize ChannelLog

* private & friend class the model

* Filter out channels to log using a set instead of iterating over a vector every time a message comes in

* Rename `ChannelLog::channel` member to `ChannelLog::channelName`

Also made it private

* mini comment on ChannelLog

Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-01-15 11:47:22 +00:00
pajlada 5ad8ca791c
Fix various small warnings (#4296)
* Fix `inconsistent-missing-override` warnings

* Fix `final-dtor-non-final-class` warnings

* Fix `ambiguous-reversed-operator` warnings
2023-01-08 14:32:52 +01:00
pajlada 18cb4bd6e5
Massage includes some more (#4294)
* Add `<functional>` include to QStringHash.hpp

This ensures the base `std::hash` template is declared before this
specialization

* Add missing includes to `src/providers/twitch/TwitchAccountManager.hpp`

* Move explicit HelixChatters constructor to the source file

* Remove unused includes & add used includes to NicknamesModel.hpp

* NicknamesModel.hpp: Remove `virtual` when `override` is used

* Add missing QStringHash include to TwitchEmotes.cpp

* Add missing includes to various files

* Print Qt version in cmake step

Technically unrelated, but I'm sneaking it in

* Add changelog entry
2023-01-08 12:07:06 +00:00
Daniel Sage e19cd1911b
Fix scrollbar highlight colors when changing message history limit (#4288)
* Use correct messagesLimit for Scrollbar

* Update CHANGELOG.md

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-01-07 11:41:52 +00:00
nerix 95b1f82620
Remove Deprecated QDesktopWidget (#4287)
* fix: remove deprecated `QDesktopWidget`

* chore: add changelog entry
2023-01-07 11:41:39 +01:00
nerix 1043f9f803
Remove Unnecessary Includes in Headers (#4275)
* refactor: remove unnecessary includes in headers

* fix: formatting

* chore: changelog

* fix: scrollbar

* fix: suggestions and old appbase remains

* fix: suggestion

* fix: missing Qt forward declarations

* fix: another qt include

* fix: includes for precompiled-headers=off

* Add missing `<memory>` includes

* Add missing `#pragma once`

* Fix tests

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2022-12-31 14:41:01 +00:00
pajlada 293aa370c5
Fix crash that could occur when closing down splits (#4277)
* Fix crash that could occur when closing down splits

Specifically, if a split was closed after the request for a thumbnail
had been made, but before the request had finished, we'd run into a
use-after-free issue

* Add changelog entry
2022-12-31 12:39:28 +00:00
pajlada 5fc170ba4b
Refactor SplitHeader class (#4276)
* Flatten static functions in anonymous namespace

* SplitHeader ctor: Rename param

* Header: Remove unnecessary `virtual`s

* auto ptr where possible

* Add curly braces

* Comment twitch room modes

* Treat roomModes->slowMode as an integer

* Remove unused `this` from lambdas

* Add `unsigned int` overload for localizeNumbers

* Move thumbnail max age to a constexpr static & set explicit types

* Explicitly use `QObject::connect`

* Use `empty()` instead of `size()`

* Name unused parameters

* Move moderation action refreshing logic from SplitHeader to Split
2022-12-31 12:56:47 +01:00
pajlada 90046f380f
Fix crash that would occur when performing certain actions after removing all tabs (#4271)
* Ensure we can deselect notebooks

* Add changelog entry

* Use dynamic_cast instead of raw cast
2022-12-29 19:15:32 +01:00
kornes 11fdd7ed74
ref: merge TooltipPreviewImage and TooltipWidget (#4268)
* merge TooltipPreviewImage and TooltipWidget

* changelog

* add empty line before return

* fix signalholder include

* add changelog for bugfix

* fix custom scaling issue

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2022-12-29 16:07:46 +01:00
nerix 757c7c781e
fix: Remove Unused Include Directives (#4266)
* fix: remove unused includes

* fix: bad includes

* fix: top include

* fix: streamer mode includes

* fix: missing include

* fix: remove `#else`

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2022-12-27 20:26:32 +00:00
Douglas b2a8327696
Fix text cursor in open channel dialog (#4263)
* Fix text cursor not blinking in open channel dialog

* Update CHANGELOG.md

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2022-12-27 17:27:11 +00:00
pajlada a9a985bde1
Only try to extract images if the image uploader is enabled (#4246)
* Only try to extract images if the image uploader is enabled

* Add changelog entry
2022-12-25 12:14:23 +00:00
pajlada fdb0a1582c
SplitContainer refactor (#4261)
* Remove unused include util/Helpers.hpp

* SplitContainer::setTag fix parameter naming

* autofy/constify where possible

* More const auto ptr magicifying

* Make SplitNode::Type an enum class

* Move QuickSwitcherPopup includes from header to source file

* Remove unused DropRegion code

* use empty() instead of size() == 0

* Add curly braces everywhere

* Remove useless reinterpret_cast

It was casting Node* to Node*

* Clarify that the connect is QObject::connect

* SplitContainer::setSelected fix parameter naming

* Rename function variables to remove unneccesary underscore

Also move addSpacing parameter out of the layout function

* emplace_back where possible

* Name parameters

* Remove ineffective const from return type

* Make node getters const

* Flatten Node::releaseSplit

* Rename in-function variable to match code style

* [ACTUAL CODE CHANGE/MOVE] Move clamp logic to its own function

* name params

* applyFromDescriptorRecursively: rename node param to baseNode

* [ACTUAL CODE CHANGE/MOVE] Remove the many overloads for append/insertSplit

This utilizes the C++20 designed initializers aggregate initialization feature

* Remove unused includes

* [ACTUAL CODE CHANGE] Clean up dragging logic

There's no need to keep a pointer around to which split is being
dragged, it's already stored in the QDropEvent source()

* UNRELATED .clang-tidy: Only suggest UPPER_CASE for constant global variables

* Remove unused SplitContainer::getSplitCount function

* Use std::max in Node's clamp function

* Remove test code

* DraggedSplit.hpp: remove unused include

* Split `setDraggingSplit` into two functions, `startDraggingSplit` and `stopDraggingSplit`
2022-12-25 11:09:25 +00:00
nerix 86e71c8bd9
Migrate to C++ 20 & switch to websocketpp develop branch (#4252)
* feat: c++ 20

* fix: c++ 20 deprecations

* fix(msvc): warnings

* chore: add changelog entry

* fix: formatting

* Update websocketpp to the `develop` branch

* Specify other template type in FlagsEnum != operator

* Remove the user of simple template ids in our websocketpp template class

Also standardizes the file a bit by using nested namespaces, using
pragma once

* fix: turn `MAGIC_MESSAGE_SUFFIX` into a `QString`

* hacky unhacky hacky const char hack

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2022-12-24 11:56:11 +00:00
pajlada b9308d7325
Add Thread Guard for debugging simple threading issues (#4254)
* Add ThreadGuard class

* Use ThreadGuard when accessing a ChannelView's messageSnapshot
2022-12-24 11:32:08 +01:00
kornes bc5a03af26
Fix tab direction change crash (#4248)
* Fix tab direction change crash

* changelog

* Update CHANGELOG.md

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2022-12-19 18:19:09 +01:00
pajlada a715b1ffff
Clean up TwitchAccount emote stuff (#4243)
* Remove unused TwitchAccount FollowResult enum

* Remove unused TwitchEmoteSetResolverResponse struct

* Remove unused and unimplemented `getEmoteSetBatches` function definition

* Remove unused `loadEmoteSetData` and `staticEmoteSets` from
TwitchAccount

* Remove forward declaration of TwitchAccount in TwitchAccountManager

* Clean up IgnorePhrase includes

* add missing newline in pubsubmanager.cpp
2022-12-18 14:36:39 +00:00
pajlada 8830b0e01c
Clean up/refactor InputCompletionPopup (#4242)
Mainly flattening anon namespaces & respecting clang-tidy
2022-12-18 13:25:11 +00:00
Felanbird 0e72cd62e3
Add even more tooltips when hovering settings (#4230)
* Add unshortenLinks tooltip `NEEDS LINK EXAMPLE`

* Add `linksDoubleClickOnly` tooltip

* Add `highlightInlineWhispers` tooltip

* Add `removeSpacesBetweenEmotes` tooltip

* Add a TODO comment for 7TV unlisted emote tooltip

* Add shortened link example

* Add `usernameDisplayModes` tooltip

* Add `highlightMentions` tooltip

* Add `attachExtensionToAnyProcess` tooltip

* Fix true/false-ing

* Add `showTabCloseButton` tooltip

* Add `showReplyButton` tooltip

* Use a different unicode for `showTabCloseButton`

* Don't use a unicode because it upsets the formatter

* Add `showTabLive` tooltip

* minor fixes

* unicode freakout distracted me from testing this setting

* Add `alternateMessages` tooltip

* Add `showLastMessageIndicator` tooltip

* Add `seperateMessages` tooltip

* Add `hideModerated` tooltip

* Add `hideDeletionActions` tooltip

* Don't mention a default line color for `showLastMessageIndicator`

* Better explain and display localized in `usernameDisplayMode`

* Respect keybind for `showTabCloseButton`

* Remove extra brackets

* nitpick

* Invert `hideModerated` setting

* Rename and update `showTabLive`
2022-12-18 12:30:21 +01:00
pajlada b074a8f7eb
Refactor the EmotePopup file (#4239)
Flatten the anonymous namespace
Make the `loadEmojis` functions static
Make the `filterEmoteMap` function static
Return an EmoteMap from `filterEmoteMap` instead of an EmoteMap*
Other misc cool changes :-)
2022-12-17 18:33:17 +01:00
Felanbird bad32a7511
Fix accidental change of stripReplyMention setting (#4225) 2022-12-07 22:46:41 +00:00
nerix ff54b4c8d2
feat: Add Setting to Hide Reply Context (#4224) 2022-12-07 21:02:54 +00:00
pajlada 4fdcac8ec5
Make LimitedQueueSnapshot usages in ChannelView const (#4223) 2022-12-07 19:40:15 +00:00
kornes a16d148dfd
Fix selection clearing not working in Reply window (#4218)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2022-12-07 18:21:04 +00:00
kornes 36c8fffee2
feat: Automatically select newly added table rows (#4216)
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2022-12-06 22:52:58 +00:00
Felanbird 783b05c103
Add docs link for streamlink --args (#4217) 2022-12-06 23:27:27 +01:00
kornes b7888749fe
feat: Allow negation of search predicates (#4207)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
closes https://github.com/Chatterino/chatterino2/issues/3998
2022-12-04 11:34:13 +00:00
kornes 4fa214a38a
Prepopulate search window input with current text selection (#4178)
Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
2022-12-03 18:14:15 +00:00
nerix 2aa8af47e7
Clear up Highlight sound settings (#4194)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
Closes https://github.com/Chatterino/chatterino2/issues/1540
2022-12-03 17:01:49 +01:00
nerix 8d4ee72478
fix: Copy Shortcut Not Working In Reply Thread Popup (#4209) 2022-12-03 13:02:39 +00:00
Felanbird 6ee7ef8cab
Add more tooltips when hovering settings (#4213)
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2022-12-03 11:42:43 +00:00
kornes db12693a27
Fix red text color persisting from message overflow highlight (#4204)
Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2022-12-03 11:10:11 +00:00
kornes 188782ddca
fix: prevent unnecessary layout saves (#4201)
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2022-12-03 10:50:22 +00:00
kornes edd4789bf7
perf: ignore WM_SHOWWINDOW hide event (#4198)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2022-12-03 11:20:31 +01:00