diff --git a/resources/qml/ForwardCompleter.qml b/resources/qml/ForwardCompleter.qml index 6dbd8926..c544378b 100644 --- a/resources/qml/ForwardCompleter.qml +++ b/resources/qml/ForwardCompleter.qml @@ -25,7 +25,10 @@ Popup { height: implicitHeight + completerPopup.height + padding * 2 leftPadding: 10 rightPadding: 10 - background: null + background: Rectangle { + color: colors.window + } + onOpened: { completerPopup.open(); roomTextInput.forceActiveFocus(); @@ -108,7 +111,7 @@ Popup { } Overlay.modal: Rectangle { - color: Qt.rgba(colors.window.r, colors.window.g, colors.window.b, 0.75) + color: Qt.rgba(colors.window.r, colors.window.g, colors.window.b, 0.7) } } diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp index 518ccaf1..9d12825f 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp @@ -18,6 +18,7 @@ #include "CompletionProxyModel.h" #include "DelegateChooser.h" #include "DeviceVerificationFlow.h" +#include "EventAccessors.h" #include "Logging.h" #include "MainWindow.h" #include "MatrixClient.h" @@ -36,6 +37,54 @@ Q_DECLARE_METATYPE(std::vector) namespace msgs = mtx::events::msg; +namespace { +template class Op, class... Args> +using is_detected = typename nheko::detail::detector::value_t; + +template +using file_t = decltype(Content::file); + +template +using url_t = decltype(Content::url); + +template +using body_t = decltype(Content::body); + +template +using formatted_body_t = decltype(Content::formatted_body); + +template +static constexpr bool +messageWithFileAndUrl(const mtx::events::Event &) +{ + return is_detected::value && is_detected::value; +} + +template +static constexpr void +removeReplyFallback(mtx::events::Event &e) +{ + if constexpr (is_detected::value) { + if constexpr (std::is_same_v, + std::remove_cv_t>) { + if (e.content.body) { + e.content.body = utils::stripReplyFromBody(e.content.body); + } + } else if constexpr (std::is_same_v>) { + e.content.body = utils::stripReplyFromBody(e.content.body); + } + } + + if constexpr (is_detected::value) { + if (e.content.format == "org.matrix.custom.html") { + e.content.formatted_body = + utils::stripReplyFromFormattedBody(e.content.formatted_body); + } + } +} +} + void TimelineViewManager::updateEncryptedDescriptions() { @@ -694,4 +743,4 @@ TimelineViewManager::forwardMessageToRoom(mtx::events::collections::TimelineEven } }, *e); -} \ No newline at end of file +} diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h index 809b286e..9703ee56 100644 --- a/src/timeline/TimelineViewManager.h +++ b/src/timeline/TimelineViewManager.h @@ -16,7 +16,6 @@ #include "Cache.h" #include "CallManager.h" -#include "EventAccessors.h" #include "Logging.h" #include "TimelineModel.h" #include "Utils.h" @@ -152,53 +151,6 @@ public slots: private slots: void openImageOverlayInternal(QString eventId, QImage img); -private: - template class Op, class... Args> - using is_detected = - typename nheko::detail::detector::value_t; - - template - using file_t = decltype(Content::file); - - template - using url_t = decltype(Content::url); - - template - using body_t = decltype(Content::body); - - template - using formatted_body_t = decltype(Content::formatted_body); - - template - static constexpr bool messageWithFileAndUrl(const mtx::events::Event &) - { - return is_detected::value && is_detected::value; - } - - template - static constexpr void removeReplyFallback(mtx::events::Event &e) - { - if constexpr (is_detected::value) { - if constexpr (std::is_same_v, - std::remove_cv_t>) { - if (e.content.body) { - e.content.body = utils::stripReplyFromBody(e.content.body); - } - } else if constexpr (std::is_same_v< - std::string, - std::remove_cv_t>) { - e.content.body = utils::stripReplyFromBody(e.content.body); - } - } - - if constexpr (is_detected::value) { - if (e.content.format == "org.matrix.custom.html") { - e.content.formatted_body = - utils::stripReplyFromFormattedBody(e.content.formatted_body); - } - } - } - private: #ifdef USE_QUICK_VIEW QQuickView *view;