diff --git a/CMakeLists.txt b/CMakeLists.txt
index ed89e80..c4970a7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -34,7 +34,6 @@ PRIVATE
ui/colors.palette
emoji_suggestions/emoji_autocomplete.json
- qt_conf/mac.qrc
qt_conf/win.qrc
ui/effects/animation_value.cpp
@@ -245,8 +244,6 @@ PRIVATE
if (DESKTOP_APP_USE_PACKAGED)
nice_target_sources(lib_ui ${src_loc} PRIVATE ui/text/qtextitemint.cpp)
-else()
- nice_target_sources(lib_ui ${src_loc} PRIVATE qt_conf/linux.qrc)
endif()
if (NOT DESKTOP_APP_USE_PACKAGED_FONTS)
diff --git a/qt_conf/linux.qrc b/qt_conf/linux.qrc
deleted file mode 100644
index b84b2cc..0000000
--- a/qt_conf/linux.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- qt_linux.conf
-
-
diff --git a/qt_conf/mac.qrc b/qt_conf/mac.qrc
deleted file mode 100644
index 03585ec..0000000
--- a/qt_conf/mac.qrc
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/qt_conf/qt_linux.conf b/qt_conf/qt_linux.conf
deleted file mode 100644
index 6d80862..0000000
--- a/qt_conf/qt_linux.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-[Paths]
-Libraries=:/gui/art
diff --git a/ui/basic_click_handlers.cpp b/ui/basic_click_handlers.cpp
index 8c3e008..88e8cef 100644
--- a/ui/basic_click_handlers.cpp
+++ b/ui/basic_click_handlers.cpp
@@ -19,7 +19,11 @@
QString TextClickHandler::readable() const {
const auto result = url();
- return result.startsWith(qstr("internal:")) ? QString() : result;
+ return !result.startsWith(qstr("internal:"))
+ ? result
+ : result.startsWith(qstr("internal:url:"))
+ ? result.mid(qstr("internal:url:").size())
+ : QString();
}
UrlClickHandler::UrlClickHandler(const QString &url, bool fullDisplayed)
@@ -33,6 +37,13 @@ UrlClickHandler::UrlClickHandler(const QString &url, bool fullDisplayed)
? original.toEncoded()
: QString());
_readable = good.isValid() ? good.toDisplayString() : _originalUrl;
+ } else if (_originalUrl.startsWith(qstr("internal:url:"))) {
+ const auto external = _originalUrl.mid(qstr("internal:url:").size());
+ const auto original = QUrl(external);
+ const auto good = QUrl(original.isValid()
+ ? original.toEncoded()
+ : QString());
+ _readable = good.isValid() ? good.toDisplayString() : external;
}
}
diff --git a/ui/click_handler.cpp b/ui/click_handler.cpp
index c96abe9..f5129cb 100644
--- a/ui/click_handler.cpp
+++ b/ui/click_handler.cpp
@@ -154,6 +154,16 @@ auto ClickHandler::getTextEntity() const -> TextEntity {
return { EntityType::Invalid };
}
+void ClickHandler::setProperty(int id, QVariant value) {
+ _properties[id] = std::move(value);
+}
+
+const QVariant &ClickHandler::property(int id) const {
+ static const QVariant kEmpty;
+ const auto i = _properties.find(id);
+ return (i != end(_properties)) ? i->second : kEmpty;
+}
+
void ActivateClickHandler(
not_null guard,
ClickHandlerPtr handler,
diff --git a/ui/click_handler.h b/ui/click_handler.h
index 4c13c47..9e1b0b9 100644
--- a/ui/click_handler.h
+++ b/ui/click_handler.h
@@ -7,6 +7,7 @@
#pragma once
#include "base/basic_types.h"
+#include "base/flat_map.h"
#include
@@ -62,6 +63,9 @@ public:
};
virtual TextEntity getTextEntity() const;
+ void setProperty(int id, QVariant value);
+ [[nodiscard]] const QVariant &property(int id) const;
+
// This method should be called on mouse over a click handler.
// It returns true if the active handler was changed or false otherwise.
static bool setActive(const ClickHandlerPtr &p, ClickHandlerHost *host = nullptr);
@@ -88,6 +92,8 @@ private:
static ClickHandlerHost *_activeHost;
static ClickHandlerHost *_pressedHost;
+ base::flat_map _properties;
+
};
class LeftButtonClickHandler : public ClickHandler {
diff --git a/ui/colors.palette b/ui/colors.palette
index ad4fa73..f204881 100644
--- a/ui/colors.palette
+++ b/ui/colors.palette
@@ -137,6 +137,9 @@ boxTitleAdditionalFg: #808080; // box title additional text (like in create grou
boxTitleCloseFg: cancelIconFg; // settings close icon and box search cancel icon (like in contacts box)
boxTitleCloseFgOver: cancelIconFgOver; // settings close icon and box search cancel icon (like in contacts box) with mouse over
+boxDividerBg: windowBgOver; // gray divider in boxes and layers
+boxDividerFg: windowShadowFg; // gray divider shadow in boxes and layers
+
paymentsTipActive: #01ad0f; // tip button text in payments checkout form
membersAboutLimitFg: windowSubTextFgOver; // text in channel members box about the limit (max 200 last members are shown)
diff --git a/ui/layers/box_content.h b/ui/layers/box_content.h
index ec4740e..d2c6938 100644
--- a/ui/layers/box_content.h
+++ b/ui/layers/box_content.h
@@ -160,6 +160,15 @@ public:
std::move(clickCallback),
st);
}
+ QPointer addLeftButton(
+ rpl::producer text,
+ Fn clickCallback,
+ const style::RoundButton& st) {
+ return getDelegate()->addLeftButton(
+ std::move(text),
+ std::move(clickCallback),
+ st);
+ }
void showLoading(bool show) {
getDelegate()->showLoading(show);
}
diff --git a/ui/layers/layers.style b/ui/layers/layers.style
index 10046f9..fcdb708 100644
--- a/ui/layers/layers.style
+++ b/ui/layers/layers.style
@@ -154,8 +154,6 @@ boxLoadingAnimation: InfiniteRadialAnimation(defaultInfiniteRadialAnimation) {
}
boxLoadingSize: 20px;
-boxDividerBg: windowBgOver;
-boxDividerFg: windowShadowFg;
boxDividerTop: icon {{ "box_divider_top", boxDividerFg }};
boxDividerBottom: icon {{ "box_divider_bottom", boxDividerFg }};
boxDividerHeight: 10px;
diff --git a/ui/style/style_core_font.cpp b/ui/style/style_core_font.cpp
index 6c6b2ba..aec2dd9 100644
--- a/ui/style/style_core_font.cpp
+++ b/ui/style/style_core_font.cpp
@@ -30,9 +30,7 @@ void style_InitFontsResource() {
#endif // !DESKTOP_APP_USE_PACKAGED_FONTS
#ifdef Q_OS_WIN
Q_INIT_RESOURCE(win);
-#elif defined Q_OS_UNIX && !defined DESKTOP_APP_USE_PACKAGED // Q_OS_WIN
- Q_INIT_RESOURCE(linux);
-#endif // Q_OS_WIN || (Q_OS_UNIX && !DESKTOP_APP_USE_PACKAGED)
+#endif // Q_OS_WIN
#endif // Q_OS_MAC
}
@@ -341,8 +339,6 @@ FontData::FontData(int size, uint32 flags, int family, Font *other)
, _family(family) {
if (other) {
memcpy(modified, other, sizeof(modified));
- } else {
- memset(modified, 0, sizeof(modified));
}
modified[_flags] = Font(this);
diff --git a/ui/style/style_core_font.h b/ui/style/style_core_font.h
index 0642610..3706aca 100644
--- a/ui/style/style_core_font.h
+++ b/ui/style/style_core_font.h
@@ -25,7 +25,7 @@ int registerFontFamily(const QString &family);
class FontData;
class Font {
public:
- Font(Qt::Initialization = Qt::Uninitialized) : ptr(0) {
+ Font(Qt::Initialization = Qt::Uninitialized) {
}
Font(int size, uint32 flags, const QString &family);
Font(int size, uint32 flags, int family);
@@ -44,7 +44,7 @@ public:
operator const QFont &() const;
private:
- FontData *ptr;
+ FontData *ptr = nullptr;
void init(int size, uint32 flags, int family, Font *modified);
friend void startManager();
diff --git a/ui/widgets/box_content_divider.cpp b/ui/widgets/box_content_divider.cpp
index bdcf20f..60e03dc 100644
--- a/ui/widgets/box_content_divider.cpp
+++ b/ui/widgets/box_content_divider.cpp
@@ -7,6 +7,7 @@
#include "ui/widgets/box_content_divider.h"
#include "styles/style_layers.h"
+#include "styles/palette.h"
#include
#include
diff --git a/ui/widgets/menu/menu_action.cpp b/ui/widgets/menu/menu_action.cpp
index 20af513..db4a610 100644
--- a/ui/widgets/menu/menu_action.cpp
+++ b/ui/widgets/menu/menu_action.cpp
@@ -192,4 +192,12 @@ void Action::handleKeyPress(not_null e) {
}
}
+void Action::setIcon(
+ const style::icon *icon,
+ const style::icon *iconOver) {
+ _icon = icon;
+ _iconOver = iconOver ? iconOver : icon;
+ update();
+}
+
} // namespace Ui::Menu
diff --git a/ui/widgets/menu/menu_action.h b/ui/widgets/menu/menu_action.h
index 2600788..3149434 100644
--- a/ui/widgets/menu/menu_action.h
+++ b/ui/widgets/menu/menu_action.h
@@ -28,6 +28,10 @@ public:
void handleKeyPress(not_null e) override;
+ void setIcon(
+ const style::icon *icon,
+ const style::icon *iconOver = nullptr);
+
protected:
QPoint prepareRippleStartPosition() const override;
QImage prepareRippleMask() const override;