0.6.90
This commit is contained in:
parent
cfab1181de
commit
9a2ac7c602
@ -1,576 +0,0 @@
|
||||
diff --git a/common/common.pro b/common/common.pro
|
||||
index c244613..99bb9e3 100644
|
||||
--- a/common/common.pro
|
||||
+++ b/common/common.pro
|
||||
@@ -8,7 +8,6 @@ CONFIG += c++11 \
|
||||
QT += core \
|
||||
dbus \
|
||||
theme_support-private \
|
||||
- x11extras \
|
||||
widgets
|
||||
|
||||
PKGCONFIG += gtk+-3.0 \
|
||||
diff --git a/common/gnomehintssettings.cpp b/common/gnomehintssettings.cpp
|
||||
index 4cc19b2..8a3b980 100644
|
||||
--- a/common/gnomehintssettings.cpp
|
||||
+++ b/common/gnomehintssettings.cpp
|
||||
@@ -36,8 +36,6 @@
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusMessage>
|
||||
|
||||
-#include <QX11Info>
|
||||
-
|
||||
Q_LOGGING_CATEGORY(QGnomePlatform, "qt.qpa.qgnomeplatform")
|
||||
|
||||
const QDBusArgument &operator>>(const QDBusArgument &argument, QMap<QString, QVariantMap> &map)
|
||||
@@ -135,7 +133,7 @@ GnomeHintsSettings::GnomeHintsSettings()
|
||||
QStringLiteral("SettingChanged"), this, SLOT(portalSettingChanged(QString,QString,QDBusVariant)));
|
||||
}
|
||||
|
||||
- if (!QX11Info::isPlatformX11())
|
||||
+ if (QGuiApplication::platformName() != QStringLiteral("xcb"))
|
||||
cursorSizeChanged();
|
||||
|
||||
loadFonts();
|
||||
@@ -172,7 +170,7 @@ void GnomeHintsSettings::gsettingPropertyChanged(GSettings *settings, gchar *key
|
||||
} else if (changedProperty == QStringLiteral("monospace-font-name")) {
|
||||
gnomeHintsSettings->fontChanged();
|
||||
} else if (changedProperty == QStringLiteral("cursor-size")) {
|
||||
- if (!QX11Info::isPlatformX11())
|
||||
+ if (QGuiApplication::platformName() != QStringLiteral("xcb"))
|
||||
gnomeHintsSettings->cursorSizeChanged();
|
||||
// Org.gnome.wm.preferences
|
||||
} else if (changedProperty == QStringLiteral("titlebar-font")) {
|
||||
@@ -359,7 +357,7 @@ void GnomeHintsSettings::loadFonts()
|
||||
bool bold = false;
|
||||
int fontSize;
|
||||
QString name;
|
||||
- QRegExp re("(.+)[ \t]+([0-9]+)");
|
||||
+ QRegExp re("^([^,]+)[, \t]+([0-9]+)$");
|
||||
if (re.indexIn(fontName) == 0) {
|
||||
fontSize = re.cap(2).toInt();
|
||||
name = re.cap(1);
|
||||
diff --git a/common/gnomehintssettings.h b/common/gnomehintssettings.h
|
||||
index 46580ff..2bce415 100644
|
||||
--- a/common/gnomehintssettings.h
|
||||
+++ b/common/gnomehintssettings.h
|
||||
@@ -24,8 +24,10 @@
|
||||
#include <QFont>
|
||||
#include <QFlags>
|
||||
#include <QObject>
|
||||
+#include <QPalette>
|
||||
#include <QVariant>
|
||||
|
||||
+#include <cmath>
|
||||
#include <memory>
|
||||
|
||||
#undef signals
|
||||
@@ -36,7 +38,6 @@
|
||||
|
||||
#include <qpa/qplatformtheme.h>
|
||||
|
||||
-
|
||||
class GnomeHintsSettings : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -56,6 +57,73 @@ public:
|
||||
explicit GnomeHintsSettings();
|
||||
virtual ~GnomeHintsSettings();
|
||||
|
||||
+ // Borrowed from the KColorUtils code
|
||||
+ static QColor mix(const QColor &c1, const QColor &c2, qreal bias = 0.5)
|
||||
+ {
|
||||
+ auto mixQreal = [](qreal a, qreal b, qreal bias) {
|
||||
+ return a + (b - a) * bias;
|
||||
+ };
|
||||
+
|
||||
+ if (bias <= 0.0)
|
||||
+ return c1;
|
||||
+ if (bias >= 1.0)
|
||||
+ return c2;
|
||||
+ if (std::isnan(bias))
|
||||
+ return c1;
|
||||
+
|
||||
+ qreal r = mixQreal(c1.redF(), c2.redF(), bias);
|
||||
+ qreal g = mixQreal(c1.greenF(), c2.greenF(), bias);
|
||||
+ qreal b = mixQreal(c1.blueF(), c2.blueF(), bias);
|
||||
+ qreal a = mixQreal(c1.alphaF(), c2.alphaF(), bias);
|
||||
+
|
||||
+ return QColor::fromRgbF(r, g, b, a);
|
||||
+ }
|
||||
+
|
||||
+ static QColor lighten(const QColor &color, qreal amount = 0.1)
|
||||
+ {
|
||||
+ qreal h, s, l, a;
|
||||
+ color.getHslF(&h, &s, &l, &a);
|
||||
+
|
||||
+ qreal lightness = l + amount;
|
||||
+ if (lightness > 1)
|
||||
+ lightness = 1;
|
||||
+ return QColor::fromHslF(h, s, lightness, a);
|
||||
+ }
|
||||
+
|
||||
+ static QColor darken(const QColor &color, qreal amount = 0.1)
|
||||
+ {
|
||||
+ qreal h, s, l, a;
|
||||
+ color.getHslF(&h, &s, &l, &a);
|
||||
+
|
||||
+ qreal lightness = l - amount;
|
||||
+ if (lightness < 0)
|
||||
+ lightness = 0;
|
||||
+
|
||||
+ return QColor::fromHslF(h, s, lightness, a);
|
||||
+ }
|
||||
+
|
||||
+ static QColor desaturate(const QColor &color, qreal amount = 0.1)
|
||||
+ {
|
||||
+ qreal h, s, l, a;
|
||||
+ color.getHslF(&h, &s, &l, &a);
|
||||
+
|
||||
+ qreal saturation = s - amount;
|
||||
+ if (saturation < 0)
|
||||
+ saturation = 0;
|
||||
+ return QColor::fromHslF(h, saturation, l, a);
|
||||
+ }
|
||||
+
|
||||
+ static QColor transparentize(const QColor &color, qreal amount = 0.1)
|
||||
+ {
|
||||
+ qreal h, s, l, a;
|
||||
+ color.getHslF(&h, &s, &l, &a);
|
||||
+
|
||||
+ qreal alpha = a - amount;
|
||||
+ if (alpha < 0)
|
||||
+ alpha = 0;
|
||||
+ return QColor::fromHslF(h, s, l, alpha);
|
||||
+ }
|
||||
+
|
||||
inline QFont * font(QPlatformTheme::Font type) const
|
||||
{
|
||||
if (m_fonts.contains(type)) {
|
||||
@@ -68,6 +136,198 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
+ inline QPalette * palette() const
|
||||
+ {
|
||||
+ QPalette *palette = new QPalette;
|
||||
+
|
||||
+ if (m_gtkThemeDarkVariant) {
|
||||
+ // Colors defined in GTK adwaita style in _colors.scss
|
||||
+ QColor base_color = lighten(desaturate(QColor("#241f31"), 1.0), 0.02);
|
||||
+ QColor text_color = QColor("white");
|
||||
+ QColor bg_color = darken(desaturate(QColor("#3d3846"), 1.0), 0.04);
|
||||
+ QColor fg_color = QColor("#eeeeec");
|
||||
+ QColor selected_bg_color = darken(QColor("#3584e4"), 0.2);
|
||||
+ QColor selected_fg_color = QColor("white");
|
||||
+ QColor osd_text_color = QColor("white");
|
||||
+ QColor osd_bg_color = QColor("black");
|
||||
+ QColor shadow = transparentize(QColor("black"), 0.9);
|
||||
+
|
||||
+ QColor backdrop_fg_color = mix(fg_color, bg_color);
|
||||
+ QColor backdrop_base_color = lighten(base_color, 0.01);
|
||||
+ QColor backdrop_selected_fg_color = mix(text_color, backdrop_base_color, 0.2);
|
||||
+
|
||||
+ // This is the color we use as initial color for the gradient in normal state
|
||||
+ // Defined in _drawing.scss button(normal)
|
||||
+ QColor button_base_color = darken(bg_color, 0.01);
|
||||
+
|
||||
+ QColor link_color = lighten(selected_bg_color, 0.2);
|
||||
+ QColor link_visited_color = lighten(selected_bg_color, 0.1);
|
||||
+
|
||||
+ palette->setColor(QPalette::All, QPalette::Window, bg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::WindowText, fg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::Base, base_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::AlternateBase, base_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::ToolTipBase, osd_bg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::ToolTipText, osd_text_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::Text, fg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::Button, button_base_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::ButtonText, fg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::BrightText, text_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::All, QPalette::Light, lighten(button_base_color));
|
||||
+ palette->setColor(QPalette::All, QPalette::Midlight, mix(lighten(button_base_color), button_base_color));
|
||||
+ palette->setColor(QPalette::All, QPalette::Mid, mix(darken(button_base_color), button_base_color));
|
||||
+ palette->setColor(QPalette::All, QPalette::Dark, darken(button_base_color));
|
||||
+ palette->setColor(QPalette::All, QPalette::Shadow, shadow);
|
||||
+
|
||||
+ palette->setColor(QPalette::All, QPalette::Highlight, selected_bg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::HighlightedText, selected_fg_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::All, QPalette::Link, link_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::LinkVisited, link_visited_color);
|
||||
+
|
||||
+
|
||||
+ QColor insensitive_fg_color = mix(fg_color, bg_color);
|
||||
+ QColor insensitive_bg_color = mix(bg_color, base_color, 0.4);
|
||||
+
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Window, insensitive_bg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::WindowText, insensitive_fg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Base, base_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::AlternateBase, base_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Text, insensitive_fg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Button, insensitive_bg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::ButtonText, insensitive_fg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::BrightText, text_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Light, lighten(insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Midlight, mix(lighten(insensitive_bg_color), insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Mid, mix(darken(insensitive_bg_color), insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Dark, darken(insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Shadow, shadow);
|
||||
+
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Highlight, selected_bg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::HighlightedText, selected_fg_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Link, link_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::LinkVisited, link_visited_color);
|
||||
+
|
||||
+
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Window, bg_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::WindowText, backdrop_fg_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Base, backdrop_base_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::AlternateBase, backdrop_base_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Text, backdrop_fg_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Button, button_base_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::ButtonText, backdrop_fg_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::BrightText, text_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Light, lighten(insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Midlight, mix(lighten(insensitive_bg_color), insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Mid, mix(darken(insensitive_bg_color), insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Dark, darken(insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Shadow, shadow);
|
||||
+
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Highlight, selected_bg_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::HighlightedText, backdrop_selected_fg_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Link, link_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::LinkVisited, link_visited_color);
|
||||
+ } else {
|
||||
+ // Colors defined in GTK adwaita style in _colors.scss
|
||||
+ QColor base_color = QColor("white");
|
||||
+ QColor text_color = QColor("black");
|
||||
+ QColor bg_color = QColor("#f6f5f4");
|
||||
+ QColor fg_color = QColor("#2e3436");
|
||||
+ QColor selected_bg_color = QColor("#3584e4");
|
||||
+ QColor selected_fg_color = QColor("white");
|
||||
+ QColor osd_text_color = QColor("white");
|
||||
+ QColor osd_bg_color = QColor("black");
|
||||
+ QColor shadow = transparentize(QColor("black"), 0.9);
|
||||
+
|
||||
+ QColor backdrop_fg_color = mix(fg_color, bg_color);
|
||||
+ QColor backdrop_base_color = darken(base_color, 0.01);
|
||||
+ QColor backdrop_selected_fg_color = backdrop_base_color;
|
||||
+
|
||||
+ // This is the color we use as initial color for the gradient in normal state
|
||||
+ // Defined in _drawing.scss button(normal)
|
||||
+ QColor button_base_color = darken(bg_color, 0.04);
|
||||
+
|
||||
+ QColor link_color = darken(selected_bg_color, 0.1);
|
||||
+ QColor link_visited_color = darken(selected_bg_color, 0.2);
|
||||
+
|
||||
+ palette->setColor(QPalette::All, QPalette::Window, bg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::WindowText, fg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::Base, base_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::AlternateBase, base_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::ToolTipBase, osd_bg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::ToolTipText, osd_text_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::Text, fg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::Button, button_base_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::ButtonText, fg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::BrightText, text_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::All, QPalette::Light, lighten(button_base_color));
|
||||
+ palette->setColor(QPalette::All, QPalette::Midlight, mix(lighten(button_base_color), button_base_color));
|
||||
+ palette->setColor(QPalette::All, QPalette::Mid, mix(darken(button_base_color), button_base_color));
|
||||
+ palette->setColor(QPalette::All, QPalette::Dark, darken(button_base_color));
|
||||
+ palette->setColor(QPalette::All, QPalette::Shadow, shadow);
|
||||
+
|
||||
+ palette->setColor(QPalette::All, QPalette::Highlight, selected_bg_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::HighlightedText, selected_fg_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::All, QPalette::Link, link_color);
|
||||
+ palette->setColor(QPalette::All, QPalette::LinkVisited, link_visited_color);
|
||||
+
|
||||
+ QColor insensitive_fg_color = mix(fg_color, bg_color);
|
||||
+ QColor insensitive_bg_color = mix(bg_color, base_color, 0.4);
|
||||
+
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Window, insensitive_bg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::WindowText, insensitive_fg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Base, base_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::AlternateBase, base_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Text, insensitive_fg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Button, insensitive_bg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::ButtonText, insensitive_fg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::BrightText, text_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Light, lighten(insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Midlight, mix(lighten(insensitive_bg_color), insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Mid, mix(darken(insensitive_bg_color), insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Dark, darken(insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Shadow, shadow);
|
||||
+
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Highlight, selected_bg_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::HighlightedText, selected_fg_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::Link, link_color);
|
||||
+ palette->setColor(QPalette::Disabled, QPalette::LinkVisited, link_visited_color);
|
||||
+
|
||||
+
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Window, bg_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::WindowText, backdrop_fg_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Base, backdrop_base_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::AlternateBase, backdrop_base_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Text, backdrop_fg_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Button, button_base_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::ButtonText, backdrop_fg_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::BrightText, text_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Light, lighten(insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Midlight, mix(lighten(insensitive_bg_color), insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Mid, mix(darken(insensitive_bg_color), insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Dark, darken(insensitive_bg_color));
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Shadow, shadow);
|
||||
+
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Highlight, selected_bg_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::HighlightedText, backdrop_selected_fg_color);
|
||||
+
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::Link, link_color);
|
||||
+ palette->setColor(QPalette::Inactive, QPalette::LinkVisited, link_visited_color);
|
||||
+ }
|
||||
+
|
||||
+ return palette;
|
||||
+ }
|
||||
+
|
||||
inline bool gtkThemeDarkVariant() const
|
||||
{
|
||||
return m_gtkThemeDarkVariant;
|
||||
diff --git a/common/qgtk3dialoghelpers.cpp b/common/qgtk3dialoghelpers.cpp
|
||||
index f4bf372..a33d0d1 100644
|
||||
--- a/common/qgtk3dialoghelpers.cpp
|
||||
+++ b/common/qgtk3dialoghelpers.cpp
|
||||
@@ -87,24 +87,18 @@ Q_SIGNALS:
|
||||
|
||||
protected:
|
||||
static void onResponse(QGtk3Dialog *dialog, int response);
|
||||
- static void onUpdatePreview(QGtk3Dialog *dialog);
|
||||
|
||||
private slots:
|
||||
void onParentWindowDestroyed();
|
||||
|
||||
private:
|
||||
GtkWidget *gtkWidget;
|
||||
- GtkWidget *previewWidget;
|
||||
};
|
||||
|
||||
QGtk3Dialog::QGtk3Dialog(GtkWidget *gtkWidget) : gtkWidget(gtkWidget)
|
||||
{
|
||||
g_signal_connect_swapped(G_OBJECT(gtkWidget), "response", G_CALLBACK(onResponse), this);
|
||||
g_signal_connect(G_OBJECT(gtkWidget), "delete-event", G_CALLBACK(gtk_widget_hide_on_delete), NULL);
|
||||
-
|
||||
- previewWidget = gtk_image_new();
|
||||
- g_signal_connect_swapped(G_OBJECT(gtkWidget), "update-preview", G_CALLBACK(onUpdatePreview), this);
|
||||
- gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(gtkWidget), previewWidget);
|
||||
}
|
||||
|
||||
QGtk3Dialog::~QGtk3Dialog()
|
||||
@@ -180,32 +174,6 @@ void QGtk3Dialog::onResponse(QGtk3Dialog *dialog, int response)
|
||||
emit dialog->reject();
|
||||
}
|
||||
|
||||
-void QGtk3Dialog::onUpdatePreview(QGtk3Dialog *dialog) {
|
||||
- gchar *filename = gtk_file_chooser_get_preview_filename(GTK_FILE_CHOOSER(dialog->gtkWidget));
|
||||
- if (!filename) {
|
||||
- gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(dialog->gtkWidget), false);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- // Don't attempt to open anything which isn't a regular file. If a named pipe,
|
||||
- // this may hang. See https://crbug.com/534754.
|
||||
- QFileInfo fileinfo(filename);
|
||||
- if (!fileinfo.exists() || !fileinfo.isFile()) {
|
||||
- g_free(filename);
|
||||
- gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(dialog->gtkWidget), false);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- // This will preserve the image's aspect ratio.
|
||||
- GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(filename, PREVIEW_WIDTH, PREVIEW_HEIGHT, 0);
|
||||
- g_free(filename);
|
||||
- if (pixbuf) {
|
||||
- gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->previewWidget), pixbuf);
|
||||
- g_object_unref(pixbuf);
|
||||
- }
|
||||
- gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(dialog->gtkWidget), pixbuf ? true : false);
|
||||
-}
|
||||
-
|
||||
void QGtk3Dialog::onParentWindowDestroyed()
|
||||
{
|
||||
// The QGtk3*DialogHelper classes own this object. Make sure the parent doesn't delete it.
|
||||
@@ -293,12 +261,21 @@ QGtk3FileDialogHelper::QGtk3FileDialogHelper()
|
||||
|
||||
g_signal_connect(GTK_FILE_CHOOSER(d->gtkDialog()), "selection-changed", G_CALLBACK(onSelectionChanged), this);
|
||||
g_signal_connect_swapped(GTK_FILE_CHOOSER(d->gtkDialog()), "current-folder-changed", G_CALLBACK(onCurrentFolderChanged), this);
|
||||
+
|
||||
+ previewWidget = gtk_image_new();
|
||||
+ g_signal_connect(G_OBJECT(d->gtkDialog()), "update-preview", G_CALLBACK(onUpdatePreview), this);
|
||||
+ gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(d->gtkDialog()), previewWidget);
|
||||
}
|
||||
|
||||
QGtk3FileDialogHelper::~QGtk3FileDialogHelper()
|
||||
{
|
||||
}
|
||||
|
||||
+GtkImage *QGtk3FileDialogHelper::previewImage() const
|
||||
+{
|
||||
+ return GTK_IMAGE(previewWidget);
|
||||
+}
|
||||
+
|
||||
bool QGtk3FileDialogHelper::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent)
|
||||
{
|
||||
_dir.clear();
|
||||
@@ -435,6 +412,33 @@ void QGtk3FileDialogHelper::onCurrentFolderChanged(QGtk3FileDialogHelper *dialog
|
||||
emit dialog->directoryEntered(dialog->directory());
|
||||
}
|
||||
|
||||
+void QGtk3FileDialogHelper::onUpdatePreview(GtkDialog *gtkDialog, QGtk3FileDialogHelper *helper)
|
||||
+{
|
||||
+ gchar *filename = gtk_file_chooser_get_preview_filename(GTK_FILE_CHOOSER(gtkDialog));
|
||||
+ if (!filename) {
|
||||
+ gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(gtkDialog), false);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // Don't attempt to open anything which isn't a regular file. If a named pipe,
|
||||
+ // this may hang. See https://crbug.com/534754.
|
||||
+ QFileInfo fileinfo(filename);
|
||||
+ if (!fileinfo.exists() || !fileinfo.isFile()) {
|
||||
+ g_free(filename);
|
||||
+ gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(gtkDialog), false);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // This will preserve the image's aspect ratio.
|
||||
+ GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(filename, PREVIEW_WIDTH, PREVIEW_HEIGHT, 0);
|
||||
+ g_free(filename);
|
||||
+ if (pixbuf) {
|
||||
+ gtk_image_set_from_pixbuf(helper->previewImage(), pixbuf);
|
||||
+ g_object_unref(pixbuf);
|
||||
+ }
|
||||
+ gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(gtkDialog), pixbuf ? true : false);
|
||||
+}
|
||||
+
|
||||
static GtkFileChooserAction gtkFileChooserAction(const QSharedPointer<QFileDialogOptions> &options)
|
||||
{
|
||||
switch (options->fileMode()) {
|
||||
diff --git a/common/qgtk3dialoghelpers.h b/common/qgtk3dialoghelpers.h
|
||||
index c852fd0..d483a64 100644
|
||||
--- a/common/qgtk3dialoghelpers.h
|
||||
+++ b/common/qgtk3dialoghelpers.h
|
||||
@@ -47,6 +47,8 @@
|
||||
#include <QtCore/qstring.h>
|
||||
#include <qpa/qplatformdialoghelper.h>
|
||||
|
||||
+typedef struct _GtkWidget GtkWidget;
|
||||
+typedef struct _GtkImage GtkImage;
|
||||
typedef struct _GtkDialog GtkDialog;
|
||||
typedef struct _GtkFileFilter GtkFileFilter;
|
||||
|
||||
@@ -88,6 +90,8 @@ public:
|
||||
QGtk3FileDialogHelper();
|
||||
~QGtk3FileDialogHelper();
|
||||
|
||||
+ GtkImage *previewImage() const;
|
||||
+
|
||||
bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) Q_DECL_OVERRIDE;
|
||||
void exec() Q_DECL_OVERRIDE;
|
||||
void hide() Q_DECL_OVERRIDE;
|
||||
@@ -107,6 +111,7 @@ private Q_SLOTS:
|
||||
private:
|
||||
static void onSelectionChanged(GtkDialog *dialog, QGtk3FileDialogHelper *helper);
|
||||
static void onCurrentFolderChanged(QGtk3FileDialogHelper *helper);
|
||||
+ static void onUpdatePreview(GtkDialog *dialog, QGtk3FileDialogHelper *helper);
|
||||
void applyOptions();
|
||||
void setNameFilters(const QStringList &filters);
|
||||
|
||||
@@ -115,6 +120,7 @@ private:
|
||||
QHash<QString, GtkFileFilter*> _filters;
|
||||
QHash<GtkFileFilter*, QString> _filterNames;
|
||||
QScopedPointer<QGtk3Dialog> d;
|
||||
+ GtkWidget *previewWidget;
|
||||
};
|
||||
|
||||
class QGtk3FontDialogHelper : public QPlatformFontDialogHelper
|
||||
diff --git a/decoration/decoration.pro b/decoration/decoration.pro
|
||||
index 8f7f039..6c3bb05 100644
|
||||
--- a/decoration/decoration.pro
|
||||
+++ b/decoration/decoration.pro
|
||||
@@ -12,8 +12,7 @@ CONFIG += plugin \
|
||||
QT += core \
|
||||
gui \
|
||||
waylandclient-private \
|
||||
- widgets \
|
||||
- x11extras
|
||||
+ widgets
|
||||
|
||||
LIBS += -lcommon
|
||||
|
||||
diff --git a/decoration/qgnomeplatformdecoration.cpp b/decoration/qgnomeplatformdecoration.cpp
|
||||
index 61c2af9..c8b381c 100644
|
||||
--- a/decoration/qgnomeplatformdecoration.cpp
|
||||
+++ b/decoration/qgnomeplatformdecoration.cpp
|
||||
@@ -46,6 +46,7 @@
|
||||
#include <QtGui/QCursor>
|
||||
#include <QtGui/QLinearGradient>
|
||||
#include <QtGui/QPainter>
|
||||
+#include <QtGui/QPainterPath>
|
||||
#include <QtGui/QPalette>
|
||||
#include <QtGui/QPixmap>
|
||||
|
||||
diff --git a/theme/qgnomeplatformtheme.cpp b/theme/qgnomeplatformtheme.cpp
|
||||
index 70dbf65..3394b3d 100644
|
||||
--- a/theme/qgnomeplatformtheme.cpp
|
||||
+++ b/theme/qgnomeplatformtheme.cpp
|
||||
@@ -23,8 +23,8 @@
|
||||
#include "qgtk3dialoghelpers.h"
|
||||
|
||||
#include <QApplication>
|
||||
+#include <QGuiApplication>
|
||||
#include <QStyleFactory>
|
||||
-#include <QX11Info>
|
||||
|
||||
#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON)
|
||||
#include <private/qdbustrayicon_p.h>
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
QGnomePlatformTheme::QGnomePlatformTheme()
|
||||
{
|
||||
- if (!QX11Info::isPlatformX11()) {
|
||||
+ if (QGuiApplication::platformName() != QStringLiteral("xcb")) {
|
||||
if (!qEnvironmentVariableIsSet("QT_WAYLAND_DECORATION"))
|
||||
qputenv("QT_WAYLAND_DECORATION", "gnome");
|
||||
}
|
||||
@@ -68,7 +68,9 @@ const QFont *QGnomePlatformTheme::font(Font type) const
|
||||
|
||||
const QPalette *QGnomePlatformTheme::palette(Palette type) const
|
||||
{
|
||||
- return QPlatformTheme::palette(type);
|
||||
+ Q_UNUSED(type);
|
||||
+
|
||||
+ return m_hints->palette();
|
||||
}
|
||||
|
||||
bool QGnomePlatformTheme::usePlatformNativeDialog(QPlatformTheme::DialogType type) const
|
||||
diff --git a/theme/theme.pro b/theme/theme.pro
|
||||
index a33d3af..8a1cba7 100644
|
||||
--- a/theme/theme.pro
|
||||
+++ b/theme/theme.pro
|
||||
@@ -13,7 +13,6 @@ QT += core-private \
|
||||
dbus \
|
||||
gui-private \
|
||||
theme_support-private \
|
||||
- x11extras \
|
||||
widgets
|
||||
|
||||
LIBS += -lcommon
|
||||
@ -1,7 +1,7 @@
|
||||
|
||||
Name: qgnomeplatform
|
||||
Version: 0.6.1
|
||||
Release: 3%{?dist}
|
||||
Version: 0.6.90
|
||||
Release: 1%{?dist}
|
||||
Summary: Qt Platform Theme aimed to accommodate Gnome settings
|
||||
|
||||
License: LGPLv2+
|
||||
@ -9,7 +9,6 @@ URL: https://github.com/MartinBriza/QGnomePlatform
|
||||
Source0: https://github.com/MartinBriza/QGnomePlatform/archive/%{version}/QGnomePlatform-%{version}.tar.gz
|
||||
|
||||
# Upstream patches
|
||||
Patch0: qgnomeplatform-upstream-fixes.patch
|
||||
|
||||
BuildRequires: pkgconfig(gio-2.0)
|
||||
BuildRequires: pkgconfig(udev)
|
||||
@ -17,13 +16,11 @@ BuildRequires: pkgconfig(xkbcommon)
|
||||
BuildRequires: gtk3-devel
|
||||
BuildRequires: libinput-devel
|
||||
BuildRequires: libXrender-devel
|
||||
# please document if/why this is needed, FTBFS against qt-5.7.0 in rawhide obviously -- rex
|
||||
#BuildRequires: qt5-qtbase-devel >= 5.6.0 qt5-qtbase-devel <= 5.6.100
|
||||
BuildRequires: qt5-qtbase-devel
|
||||
BuildRequires: qt5-qtbase-static
|
||||
BuildRequires: qt5-qtwayland-devel
|
||||
BuildRequires: qt5-qtx11extras-devel
|
||||
BuildRequires: qt5-qtbase-devel >= 5.12.0
|
||||
BuildRequires: qt5-qtbase-static >= 5.12.0
|
||||
BuildRequires: qt5-qtwayland-devel >= 5.12.0
|
||||
|
||||
BuildRequires: libadwaita-qt5-devel >= 1.1.90
|
||||
Requires: adwaita-qt5%{?_isa}
|
||||
|
||||
BuildRequires: qt5-qtbase-private-devel
|
||||
@ -58,6 +55,9 @@ make install INSTALL_ROOT=%{buildroot} -C %{_target_platform}
|
||||
%{_qt5_libdir}/qt5/plugins/wayland-decoration-client/libqgnomeplatformdecoration.so
|
||||
|
||||
%changelog
|
||||
* Wed Sep 30 2020 Jan Grulich <jgrulich@redhat.com> - 0.6.90-1
|
||||
- 0.6.90
|
||||
|
||||
* Fri Sep 11 2020 Jan Grulich <jgrulich@redhat.com> - 0.6.1-3
|
||||
- rebuild (qt5)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user