Commit graph

62 commits

Author SHA1 Message Date
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
fourtf 602a66f5bc Fixes #963 Highlights move while paused 2019-09-16 10:55:54 +02:00
fourtf 63126899ec added pause while key is down 2019-09-16 10:43:20 +02:00
fourtf 7697ec01b4 removed old NetworkRequest api 2019-08-20 22:16:17 +02:00
rexim 3838157d82 Extract TooltipWidget updating into a separate class 2019-06-12 01:03:04 +07:00
rexim 3f4d3ce14a (#976) Make currentPreviewImage shareable between ChannelView-s 2019-06-12 00:22:26 +07:00
rexim 0fb16d150b Preview images instead of emotes 2019-06-11 23:20:04 +07:00
rexim a84716547b Animate gifs in the tooltip preview 2019-06-11 23:20:04 +07:00
hemirt 1a1d0f305c make whispers not disabled on clear 2019-03-20 20:53:24 +01:00
fourtf 96328a5e25 fixed pausing while 1k messages are in the channel 2018-12-04 08:56:07 +01:00
fourtf 0d4d301aa0 added pausable property to ChannelView 2018-12-02 18:37:51 +01:00
fourtf 2e68852768 made some things scale 2018-12-02 18:26:21 +01:00
fourtf 0e242202a4 minor improvements 2018-12-02 17:49:15 +01:00
fourtf d8fcc1a3ed small refactor 2018-11-14 17:27:08 +01:00
fourtf 6416bf3927 alternate color for historic messages 2018-11-03 21:40:48 +01:00
fourtf 5453c65f0f implemented pausing on hover 2018-11-03 21:26:57 +01:00
Rasmus Karlsson 49449379da Added a Live status indicator to tabs 2018-10-13 14:20:06 +02:00
Cranken 49398300d6 Triple-clicking now also checks for distance between clicks to prevent unwanted selection. 2018-10-06 16:33:18 +00:00
Cranken 4c4d1d2042 Fixed double click selection. 2018-10-06 16:33:18 +00:00
Cranken c8326d73e7 Added triple-clicking next to message to select whole message. 2018-10-06 16:33:18 +00:00
Cranken 5c2cdce516 Added triple clicking to select the whole message. 2018-10-06 16:33:18 +00:00
23rd 9f5da50bce Moved creating UserInfoPopup in one place. (#761)
* Moved creating UserInfoPopup in one place.

* Added forgotten 'this'.

Fixes #759
2018-10-06 10:13:14 +00:00
23rd 9a6650b56c Added button in menu to join to channel. (#724) 2018-09-21 20:35:14 +02:00
fourtf 44f5a15da3 turning a lot of includes into forward declares 2018-08-11 22:23:06 +02:00
fourtf 94813fe3df added subfunctions for ChannelView() 2018-08-08 20:06:20 +02:00