Commit Graph

86 Commits

Author SHA1 Message Date
hemirt db8047ea7b highlight tabs only on unviewed messages (#5649) 2024-11-02 13:21:56 +00:00
nerix 5f76f5b755 fix: take indices to messages as a hint (#5683) 2024-11-02 12:11:59 +00:00
nerix afa8067a20 Add transparent overlay window (#4746) 2024-10-06 12:54:24 +02:00
nerix 61b04dbe7b feat(emote-popup): automatically reload Twitch emotes (#5580) 2024-09-01 13:44:36 +02:00
pajlada cc8bd538b9 refactor: Move MessageFlag(s) to its own file (#5549) 2024-08-18 12:25:01 +02:00
cmp 5fc4309e0e Handle panning touch gestures (#5524) 2024-07-28 12:02:20 +02:00
nerix 47c46b64ea fix(channel-view): use underlyingChannel_ over channel_ (#5248) 2024-03-16 12:03:57 +00:00
nerix e130c48f76 refactor: Turn link-info into its own element and class (#5178) 2024-02-18 12:34:00 +00:00
nerix 7604d7ea4a perf: add signal to invalidate buffers without doing layout (#5123) 2024-01-24 18:13:31 +01:00
nerix 9612eac966 perf: Only update regions with animated elements (#5043) 2023-12-27 01:12:14 +01:00
nerix 1006bf955a perf: skip update from GIF timer if no animated elements are shown (#5042) 2023-12-25 19:04:46 +00:00
nerix d105a68dba Allow ChannelViews without a Split (#4747) 2023-12-17 21:49:37 +01:00
smc fec8f8c49f Fix missing parent of tooltips for Wayland (#4998)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-12-09 11:28:33 +00:00
pajlada 7efe58cca9 refactor: ChannelView (#4926)
Co-authored-by: nerix <nerixdev@outlook.de>
2023-10-31 14:54:14 +01: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
pajlada fec45889a8 Replace boost::optional with std::optional (#4877) 2023-10-08 16:50:48 +00:00
nerix 283ede86ad Only layout visible ChannelViews (#4811) 2023-09-10 17:08:13 +02: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 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
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 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
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 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
pajlada 4fdcac8ec5 Make LimitedQueueSnapshot usages in ChannelView const (#4223) 2022-12-07 19:40:15 +00:00
nerix 8d4ee72478 fix: Copy Shortcut Not Working In Reply Thread Popup (#4209) 2022-12-03 13:02:39 +00:00
pajlada 032f290767 Sort and force grouping of includes (#4172)
This change enforces strict include grouping using IncludeCategories

In addition to adding this to the .clang-format file and applying it in the tests/src and src directories, I also did the following small changes:

    In ChatterSet.hpp, I changed lrucache to a <>include
    In Irc2.hpp, I change common/SignalVector.hpp to a "project-include"
    In AttachedWindow.cpp, NativeMessaging.cpp, WindowsHelper.hpp, BaseWindow.cpp, and StreamerMode.cpp, I disabled clang-format for the windows-includes
    In WindowDescriptors.hpp, I added the missing vector include. It was previously not needed because the include was handled by another file that was previously included first.
    clang-format minimum version has been bumped, so Ubuntu version used in the check-formatting job has been bumped to 22.04 (which is the latest LTS)
2022-11-27 19:32:53 +01:00
pajlada 011facc13a Fix crashes that can occur when selecting/copying text (#4153) 2022-11-15 23:32:15 +00:00
Patrick Geneva 3ed7489e0f Add settings to increase split and usercard scrollback (#3811)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2022-11-12 15:53:42 +00:00
pajlada e3e1845262 Fix uninitialized read in ChannelView's highlightedMessage_ (#4109) 2022-11-04 18:59:03 +00:00
pajlada 03051bf0bd Bump MessageFlag underlying type to be 64-bit (#4042) 2022-10-03 14:55:46 -04:00
nerix be72d73c3d feat: add Go to message action in various places (#3953)
* feat: add `Go to message` action in search popup

* chore: add changelog entry

* fix: only scroll if the scrollbar is shown

* fix: go to message when view isn't focused

* feat: animate highlighted message

* fix: missing includes

* fix: order of initialization

* fix: add `ChannelView::mayContainMessage` to filter messages

* feat: add `Go to message` action in `/mentions`

* fix: ignore any mentions channel when searching for split

* feat: add `Go to message` action in reply-threads

* fix: remove redundant `source` parameter

* feat: add `Go to message` action in user-cards

* feat: add link to deleted message

* fix: set current time to 0 when starting animation

* chore: update changelog

* fix: add default case (unreachable)

* chore: removed unused variable

* fix: search in mentions

* fix: always attempt to focus split

* fix: rename `Link::MessageId` to `Link::JumpToMessage`

* fix: rename `selectAndScrollToMessage` to `scrollToMessage`

* fix: rename internal `scrollToMessage` to `scrollToMessageLayout`

* fix: deleted message link in search popup

* chore: reword explanation

* fix: use for-loop instead of `std::find_if`

* refactor: define highlight colors in `BaseTheme`

* core: replace `iff` with `if`

* fix: only return if the message found

* Reword/phrase/dot changelog entries

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2022-09-11 16:37:13 +02:00
Daniel Sage 46f43f3ce8 Automatically load recent messages on reconnect (#3878)
* Add working reconnect recent messages

* Rename method to messagesUpdated

* Use audo declarations

* Add docs to new LimitedQueue methods

* Add more documentation, try atomic loading flag

* Update CHANGELOG.md

* Remove unused include

* Rename 'reconnected' signal to 'connected'

* Reserve before filtering on arbitrary update

* Extract recent messages fetching to own class

* Use std::atomic_flag instead of std::atomic_bool

* Add PostToThread include

* Add chatterino.recentmessages logging

* Remove unneeded parameters, lambda move capture

* Remove TwitchChannel::buildRecentMessages

* Add documentation, use more clear method name

* Reword changelog entry

I think it sounds better like this :)

* Rework how filling in missing messages is handled

This should hopefully prevent issues with filtered channels with old messages
that no longer exist in the underlying channel

* Check existing messages when looking for reply

* Clean up string distribution in file

* Try to improve documentation

* Use std::function for RecentMessagesApi

* Only trigger filledInMessages if we inserted

* Remove old unused lines

* Use make_shared<MessageLayout> instead of new MessageLayout

* Alphabetize QLogging categories

* Reorder CHANGELOG.md
2022-08-06 18:18:34 +02:00
Daniel Sage 20c974fdab Added support for Twitch's Chat Replies (#3722)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2022-07-31 10:45:25 +00:00
Daniel Sage 81caf1aae0 Rewrite & optimize LimitedQueue (#3798)
* Use circular buffer for LimitedQueue

* Reduce copying of snapshot

* Small optimizations

* Remove unneeded lock statements

* Add LimitedQueue tests

* Fix includes for limited queue benchmark

* Update CHANGELOG.md

* Use correct boost version iterators

* Use a shared_mutex to clarify reads and writes

* Update `find`/`rfind` to return the result as a boost::optional

* Use `[[nodiscard]]` where applicable

* Update comments

* Add a couple more doc comments

* Replace size with get

get is a safe (locked & checked) version of at

* Use std::vector in LimitedQueueSnapshot

* Update LimitedQueue benchmarks

* Add mutex guard to buffer accessors

We do not know whether T is an atomic type or not
so we can't safely say that we can copy the value
at a certain address of the buffer.

See https://stackoverflow.com/a/2252478

* Update doc comments, add first/last getters

* Make limit_ const

* Omit `else` if the if-case always returns

* Title case category comments

* Remove `at`

* Fix `get` comment

* Privatize/comment/lock property accessors

 - `limit` is now private
 - `space` is now private
 - `full` has been removed
 - `empty` now locks

* Remove `front` function

* Remove `back` method

* Add comment to `first`

* Add comment to `last`

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2022-06-18 10:44:48 +00:00
James Upjohn 57783c7478 feat: add global channel search support (#3694)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2022-05-23 00:47:16 +00:00
xel86 4239666934 Feature: execute commands on chat messages using the context menu (#3738) 2022-05-22 14:45:54 +00:00
James Upjohn 04c355f7e9 feat: use message's original channel name when usercard popout is opened (#3623)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2022-04-09 11:27:21 +00:00
Infinitay 5978ed8b1f Show context menu anywhere in MessageLayout when applicable (#3566)
Co-authored-by: James Upjohn <jammehcow@jammehcow.co.nz>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2022-02-13 00:46:39 +00:00
Infinitay 1d272c399b Added ability to copy message ID with Shift + Right Click (#3481)
Co-authored-by: Paweł <zneix@zneix.eu>
Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2022-01-16 13:35:00 +00:00
pajlada 51ece94f58 Update Settings and Signals version (#3398)
Co-authored-by: zneix <zneix@zneix.eu>
2021-12-19 14:57:56 +00:00
SLCH faafbdaad4 Added "Open in: new tab, browser player, streamlink" in twitch link context menu. (#2988)
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2021-07-11 11:54:19 +00:00
pajlada 9cdddfc65d Fix various warnings (#2147) 2020-11-01 15:23:58 +01:00
Mm2PL 3ee08b9ffd Add support FrankerFaceZ badges. (#2101)
On startup, we poll https://api.frankerfacez.com/v1/badges/ids and store the mappings of user IDs to badges for the remainder of the applications lifetime.
2020-10-25 10:36:00 +01:00
dnsge 4199a01b96 Advanced channel filters (#1748)
Adds custom channel filters complete with their own mini-language. Filters can be created in settings, and applied by clicking the three dots to open the Split menu and selecting "Set filters".
2020-10-18 15:18:20 +02:00
pajlada cdf85c5084 Message menu now holds a shared pointer to a layout (#1787)
This ensures that the layout will survive for the lifetime of the menu,
     so any of the menu actions can with confidence do things with the
     layout, not having to worry whether it's dead or not.

This means that the user, while having the message menu open, could have
one extra MessageLayout alive. I have ensured that when the menu dies
the reference to the shared pointer dies with it.
2020-07-05 13:52:24 +02:00
0xRainy 0e564065ba Added recent messages to UserInfoPopup (#1729)
There's a Refresh button added to the popup to refresh the users messages in the popup. Not automatic now while we figure out how fast/slow it would be.

Co-authored-by: dnsge <sagedanielr@gmail.com>
2020-06-21 14:15:14 +02:00
Leon Richardt b4a2ced180 Scroll Using Click-and-Drag with Middle Mouse Button (#1559)
* ChannelView: Rename mouse event related members

This is more in line with the naming of the other members as well as
future members.

* ChannelView: Add ability to scroll with middle mouse button

* Add scrolling resources

* Use custom icons for scroll cursor

* Slightly refactor scrolling logic

* Respect screen scaling when calculating scroll offset

* Nicer scrolling UX

This change allows scrolling to be feel smoother when close to the
starting point.

* Add scrolling with keeping middle mouse pressed

This mimics the behavior of browsers as well.

* Refactor ChannelView::enableScrolling

* Disable drag-scrolling on left or right click
2020-04-18 11:09:22 +02:00
fourtf 26d3078def removed unused variables 2020-02-29 13:58:26 +01:00
fourtf 848d5c8789 Fixes #1336 Pause on hover breaks moves selection 2019-09-25 23:49:30 +02:00