From 6e2f8eb9a7aac76532547615d007268bbc3f610d Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 26 Jul 2021 06:59:25 +0300 Subject: [PATCH] Moved text selection utils to td_ui. --- .../history/history_inner_widget.cpp | 1 + .../history/view/history_view_element.cpp | 2 +- .../history/view/history_view_list_widget.cpp | 2 +- .../history/view/history_view_message.cpp | 2 +- .../history/view/media/history_view_call.cpp | 2 +- .../view/media/history_view_contact.cpp | 2 +- .../view/media/history_view_document.cpp | 2 +- .../history/view/media/history_view_game.cpp | 2 +- .../history/view/media/history_view_gif.cpp | 2 +- .../view/media/history_view_invoice.cpp | 2 +- .../view/media/history_view_location.cpp | 2 +- .../view/media/history_view_media_grouped.cpp | 2 +- .../media/history_view_media_unwrapped.cpp | 2 +- .../history/view/media/history_view_photo.cpp | 2 +- .../history/view/media/history_view_poll.cpp | 2 +- .../media/history_view_theme_document.cpp | 2 +- .../view/media/history_view_web_page.cpp | 2 +- .../info/media/info_media_list_widget.cpp | 1 + Telegram/SourceFiles/layout.h | 36 ---------------- .../SourceFiles/layout/layout_selection.cpp | 42 +++++++++++++++++++ .../SourceFiles/layout/layout_selection.h | 26 ++++++++++++ .../SourceFiles/overview/overview_layout.cpp | 1 + Telegram/cmake/td_ui.cmake | 2 + 23 files changed, 89 insertions(+), 52 deletions(-) create mode 100644 Telegram/SourceFiles/layout/layout_selection.cpp create mode 100644 Telegram/SourceFiles/layout/layout_selection.h diff --git a/Telegram/SourceFiles/history/history_inner_widget.cpp b/Telegram/SourceFiles/history/history_inner_widget.cpp index f2e1511ac..f2cde1c2f 100644 --- a/Telegram/SourceFiles/history/history_inner_widget.cpp +++ b/Telegram/SourceFiles/history/history_inner_widget.cpp @@ -47,6 +47,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "mainwindow.h" #include "mainwidget.h" #include "layout.h" +#include "layout/layout_selection.h" #include "main/main_session.h" #include "main/main_session_settings.h" #include "core/application.h" diff --git a/Telegram/SourceFiles/history/view/history_view_element.cpp b/Telegram/SourceFiles/history/view/history_view_element.cpp index 0b1614e6d..f3d2328fd 100644 --- a/Telegram/SourceFiles/history/view/history_view_element.cpp +++ b/Telegram/SourceFiles/history/view/history_view_element.cpp @@ -29,7 +29,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_groups.h" #include "data/data_media_types.h" #include "lang/lang_keys.h" -#include "layout.h" +#include "layout/layout_selection.h" #include "app.h" #include "styles/style_chat.h" diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp index 8d02dab71..4fbe4b005 100644 --- a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp @@ -23,7 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "mainwidget.h" #include "core/click_handler_types.h" #include "apiwrap.h" -#include "layout.h" +#include "layout/layout_selection.h" #include "window/window_adaptive.h" #include "window/window_session_controller.h" #include "window/window_peer_menu.h" diff --git a/Telegram/SourceFiles/history/view/history_view_message.cpp b/Telegram/SourceFiles/history/view/history_view_message.cpp index e9e3990ee..942d0a138 100644 --- a/Telegram/SourceFiles/history/view/history_view_message.cpp +++ b/Telegram/SourceFiles/history/view/history_view_message.cpp @@ -29,7 +29,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "main/main_session.h" #include "window/window_session_controller.h" #include "apiwrap.h" -#include "layout.h" +#include "layout/layout_selection.h" #include "facades.h" #include "styles/style_widgets.h" #include "styles/style_chat.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_call.cpp b/Telegram/SourceFiles/history/view/media/history_view_call.cpp index 6ce9be5f6..6b632bdf2 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_call.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_call.cpp @@ -9,7 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "ui/text/format_values.h" -#include "layout.h" // FullSelection +#include "layout/layout_selection.h" // FullSelection #include "history/history.h" #include "history/history_item.h" #include "history/view/history_view_element.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_contact.cpp b/Telegram/SourceFiles/history/view/media/history_view_contact.cpp index dc2ee677a..881702af8 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_contact.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_contact.cpp @@ -8,7 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/media/history_view_contact.h" #include "lang/lang_keys.h" -#include "layout.h" +#include "layout/layout_selection.h" #include "mainwindow.h" #include "boxes/add_contact_box.h" #include "history/history_item_components.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_document.cpp b/Telegram/SourceFiles/history/view/media/history_view_document.cpp index 3c8595354..5244dc954 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_document.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_document.cpp @@ -21,7 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/format_song_document_name.h" #include "ui/cached_round_corners.h" #include "ui/ui_utility.h" -#include "layout.h" // FullSelection +#include "layout/layout_selection.h" // FullSelection #include "data/data_session.h" #include "data/data_document.h" #include "data/data_document_media.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_game.cpp b/Telegram/SourceFiles/history/view/media/history_view_game.cpp index e881ca698..84cdfc312 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_game.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_game.cpp @@ -8,7 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/media/history_view_game.h" #include "lang/lang_keys.h" -#include "layout.h" +#include "layout/layout_selection.h" #include "history/history_item_components.h" #include "history/history.h" #include "history/view/history_view_element.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_gif.cpp b/Telegram/SourceFiles/history/view/media/history_view_gif.cpp index 24d519a57..94d756f17 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_gif.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_gif.cpp @@ -36,7 +36,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_file_click_handler.h" #include "data/data_file_origin.h" #include "data/data_document_media.h" -#include "layout.h" // FullSelection +#include "layout/layout_selection.h" // FullSelection #include "styles/style_chat.h" namespace HistoryView { diff --git a/Telegram/SourceFiles/history/view/media/history_view_invoice.cpp b/Telegram/SourceFiles/history/view/media/history_view_invoice.cpp index 45261fe6e..f01458629 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_invoice.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_invoice.cpp @@ -8,7 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/media/history_view_invoice.h" #include "lang/lang_keys.h" -#include "layout.h" +#include "layout/layout_selection.h" #include "history/view/history_view_element.h" #include "history/view/history_view_cursor_state.h" #include "history/view/media/history_view_photo.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_location.cpp b/Telegram/SourceFiles/history/view/media/history_view_location.cpp index f539dddcb..07ad7741e 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_location.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_location.cpp @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "history/view/media/history_view_location.h" -#include "layout.h" +#include "layout/layout_selection.h" #include "history/history.h" #include "history/history_item_components.h" #include "history/history_item.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp b/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp index 304fad1a2..cae044ace 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_media_grouped.cpp @@ -18,7 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "ui/grouped_layout.h" #include "ui/text/text_options.h" -#include "layout.h" +#include "layout/layout_selection.h" #include "styles/style_chat.h" namespace HistoryView { diff --git a/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp b/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp index 6fc3f4727..393165fa7 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_media_unwrapped.cpp @@ -14,7 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/history_item_components.h" #include "lottie/lottie_single_player.h" #include "ui/cached_round_corners.h" -#include "layout.h" +#include "layout/layout_selection.h" #include "styles/style_chat.h" namespace HistoryView { diff --git a/Telegram/SourceFiles/history/view/media/history_view_photo.cpp b/Telegram/SourceFiles/history/view/media/history_view_photo.cpp index 3047e1cfb..ca71ec062 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_photo.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_photo.cpp @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "history/view/media/history_view_photo.h" -#include "layout.h" +#include "layout/layout_selection.h" #include "history/history_item_components.h" #include "history/history_item.h" #include "history/history.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_poll.cpp b/Telegram/SourceFiles/history/view/media/history_view_poll.cpp index ac1ff6a9b..61192fc30 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_poll.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_poll.cpp @@ -28,7 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/unixtime.h" #include "base/timer.h" #include "main/main_session.h" -#include "layout.h" // FullSelection +#include "layout/layout_selection.h" // FullSelection #include "apiwrap.h" #include "styles/style_chat.h" #include "styles/style_widgets.h" diff --git a/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp b/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp index 2f19bf157..f670d25ac 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_theme_document.cpp @@ -21,7 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/format_values.h" #include "ui/cached_round_corners.h" #include "ui/ui_utility.h" -#include "layout.h" // FullSelection +#include "layout/layout_selection.h" // FullSelection #include "styles/style_chat.h" namespace HistoryView { diff --git a/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp b/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp index b369c1980..3ef407a2e 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_web_page.cpp @@ -20,7 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" #include "ui/text/format_values.h" #include "ui/cached_round_corners.h" -#include "layout.h" // FullSelection +#include "layout/layout_selection.h" // FullSelection #include "data/data_session.h" #include "data/data_media_types.h" #include "data/data_web_page.h" diff --git a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp index c202cb4dd..8ddde7a70 100644 --- a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp +++ b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "info/info_controller.h" #include "overview/overview_layout.h" #include "layout/layout_mosaic.h" +#include "layout/layout_selection.h" #include "data/data_media_types.h" #include "data/data_photo.h" #include "data/data_document.h" diff --git a/Telegram/SourceFiles/layout.h b/Telegram/SourceFiles/layout.h index 5800b4d4e..dc2a41585 100644 --- a/Telegram/SourceFiles/layout.h +++ b/Telegram/SourceFiles/layout.h @@ -18,42 +18,6 @@ namespace Ui { enum CachedRoundCorners : int; } // namespace Ui -constexpr auto FullSelection = TextSelection { 0xFFFF, 0xFFFF }; - -inline bool IsSubGroupSelection(TextSelection selection) { - return (selection.from == 0xFFFF) && (selection.to != 0xFFFF); -} - -inline bool IsGroupItemSelection( - TextSelection selection, - int index) { - Expects(index >= 0 && index < 0x0F); - - return IsSubGroupSelection(selection) && (selection.to & (1 << index)); -} - -[[nodiscard]] inline TextSelection AddGroupItemSelection( - TextSelection selection, - int index) { - Expects(index >= 0 && index < 0x0F); - - const auto bit = uint16(1U << index); - return TextSelection( - 0xFFFF, - IsSubGroupSelection(selection) ? (selection.to | bit) : bit); -} - -[[nodiscard]] inline TextSelection RemoveGroupItemSelection( - TextSelection selection, - int index) { - Expects(index >= 0 && index < 0x0F); - - const auto bit = uint16(1U << index); - return IsSubGroupSelection(selection) - ? TextSelection(0xFFFF, selection.to & ~bit) - : selection; -} - int32 documentColorIndex(DocumentData *document, QString &ext); style::color documentColor(int colorIndex); style::color documentDarkColor(int colorIndex); diff --git a/Telegram/SourceFiles/layout/layout_selection.cpp b/Telegram/SourceFiles/layout/layout_selection.cpp new file mode 100644 index 000000000..32f48b20f --- /dev/null +++ b/Telegram/SourceFiles/layout/layout_selection.cpp @@ -0,0 +1,42 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#include "layout/layout_selection.h" + +bool IsSubGroupSelection(TextSelection selection) { + return (selection.from == 0xFFFF) && (selection.to != 0xFFFF); +} + +bool IsGroupItemSelection( + TextSelection selection, + int index) { + Expects(index >= 0 && index < 0x0F); + + return IsSubGroupSelection(selection) && (selection.to & (1 << index)); +} + +TextSelection AddGroupItemSelection( + TextSelection selection, + int index) { + Expects(index >= 0 && index < 0x0F); + + const auto bit = uint16(1U << index); + return TextSelection( + 0xFFFF, + IsSubGroupSelection(selection) ? (selection.to | bit) : bit); +} + +TextSelection RemoveGroupItemSelection( + TextSelection selection, + int index) { + Expects(index >= 0 && index < 0x0F); + + const auto bit = uint16(1U << index); + return IsSubGroupSelection(selection) + ? TextSelection(0xFFFF, selection.to & ~bit) + : selection; +} diff --git a/Telegram/SourceFiles/layout/layout_selection.h b/Telegram/SourceFiles/layout/layout_selection.h new file mode 100644 index 000000000..726fc19c5 --- /dev/null +++ b/Telegram/SourceFiles/layout/layout_selection.h @@ -0,0 +1,26 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#pragma once + +#include "ui/text/text.h" + +constexpr auto FullSelection = TextSelection { 0xFFFF, 0xFFFF }; + +[[nodiscard]] bool IsSubGroupSelection(TextSelection selection); + +[[nodiscard]] bool IsGroupItemSelection( + TextSelection selection, + int index); + +[[nodiscard]] TextSelection AddGroupItemSelection( + TextSelection selection, + int index); + +[[nodiscard]] TextSelection RemoveGroupItemSelection( + TextSelection selection, + int index); diff --git a/Telegram/SourceFiles/overview/overview_layout.cpp b/Telegram/SourceFiles/overview/overview_layout.cpp index b92f1a9f4..75532bda9 100644 --- a/Telegram/SourceFiles/overview/overview_layout.cpp +++ b/Telegram/SourceFiles/overview/overview_layout.cpp @@ -24,6 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "boxes/add_contact_box.h" #include "boxes/confirm_box.h" #include "lang/lang_keys.h" +#include "layout/layout_selection.h" #include "mainwidget.h" #include "storage/file_upload.h" #include "mainwindow.h" diff --git a/Telegram/cmake/td_ui.cmake b/Telegram/cmake/td_ui.cmake index 8828a34a4..0f0f2e10f 100644 --- a/Telegram/cmake/td_ui.cmake +++ b/Telegram/cmake/td_ui.cmake @@ -66,6 +66,8 @@ PRIVATE layout/layout_mosaic.h layout/layout_position.cpp layout/layout_position.h + layout/layout_selection.cpp + layout/layout_selection.h media/clip/media_clip_check_streaming.cpp media/clip/media_clip_check_streaming.h