forked from github_mirror/framelesshelper
linux: minor improvements
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
parent
45ebbee471
commit
bb42c69d36
|
@ -26,7 +26,7 @@
|
|||
|
||||
#include "framelesshelperwidgets_global.h"
|
||||
#include <QtCore/qobject.h>
|
||||
#include <QtGui/qwindowdefs.h>
|
||||
#include <QtGui/qwindow.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QLabel;
|
||||
|
|
|
@ -22,6 +22,11 @@
|
|||
SOFTWARE.
|
||||
]]
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
find_package(GTK3 REQUIRED)
|
||||
find_package(X11 REQUIRED)
|
||||
endif()
|
||||
|
||||
set(SUB_PROJ_NAME FramelessHelperCore)
|
||||
|
||||
set(INCLUDE_PREFIX ../../include/FramelessHelper/Core)
|
||||
|
@ -102,6 +107,19 @@ else()
|
|||
)
|
||||
endif()
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
GDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_6
|
||||
)
|
||||
target_link_libraries(${SUB_PROJ_NAME} PRIVATE
|
||||
PkgConfig::GTK3
|
||||
X11::X11
|
||||
)
|
||||
target_include_directories(${SUB_PROJ_NAME} PRIVATE
|
||||
"/usr/include/harfbuzz" # GCC complains about can't find "hb.h". Why do we need this?
|
||||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(${SUB_PROJ_NAME} PRIVATE
|
||||
Qt${QT_VERSION_MAJOR}::CorePrivate
|
||||
Qt${QT_VERSION_MAJOR}::GuiPrivate
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#if ((QT_VERSION >= QT_VERSION_CHECK(5, 9, 1)) && (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)))
|
||||
# include <QtPlatformHeaders/qxcbscreenfunctions.h>
|
||||
#endif
|
||||
//#include <gtk/gtk.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
@ -52,11 +52,16 @@ static constexpr const auto _NET_WM_MOVERESIZE_SIZE_LEFT = 7;
|
|||
static constexpr const auto _NET_WM_MOVERESIZE_MOVE = 8;
|
||||
#endif
|
||||
|
||||
static constexpr const char GTK_THEME_NAME_ENV_VAR[] = "GTK_THEME";
|
||||
static constexpr const char GTK_THEME_NAME_PROP[] = "gtk-theme-name";
|
||||
static constexpr const char GTK_THEME_PREFER_DARK_PROP[] = "gtk-application-prefer-dark-theme";
|
||||
|
||||
FRAMELESSHELPER_BYTEARRAY_CONSTANT(display)
|
||||
FRAMELESSHELPER_BYTEARRAY_CONSTANT(x11screen)
|
||||
FRAMELESSHELPER_BYTEARRAY_CONSTANT(rootwindow)
|
||||
|
||||
#if 0
|
||||
FRAMELESSHELPER_STRING_CONSTANT2(GTK_THEME_DARK_REGEX, "[:-]dark")
|
||||
|
||||
template<typename T>
|
||||
[[nodiscard]] static inline T gtkSetting(const gchar *propertyName)
|
||||
{
|
||||
|
@ -80,12 +85,11 @@ template<typename T>
|
|||
if (!propertyName) {
|
||||
return {};
|
||||
}
|
||||
const auto value = gtkSetting<gchararray>(propertyName);
|
||||
const QString result = QString::fromUtf8(value);
|
||||
g_free(value);
|
||||
const auto propertyValue = gtkSetting<gchararray>(propertyName);
|
||||
const QString result = QString::fromUtf8(propertyValue);
|
||||
g_free(propertyValue);
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 0))
|
||||
[[nodiscard]] static inline Qt::WindowFrameSection qtEdgesToQtWindowFrameSection(const Qt::Edges edges)
|
||||
|
@ -123,7 +127,6 @@ template<typename T>
|
|||
|
||||
[[nodiscard]] bool shouldAppsUseDarkMode_linux()
|
||||
{
|
||||
#if 0
|
||||
/*
|
||||
https://docs.gtk.org/gtk3/running.html
|
||||
|
||||
|
@ -137,10 +140,10 @@ template<typename T>
|
|||
it's mainly used for easy debugging, so it should be possible to use it
|
||||
to override any other settings.
|
||||
*/
|
||||
QString themeName = qEnvironmentVariable("GTK_THEME");
|
||||
const QRegularExpression darkRegex(QStringLiteral("[:-]dark"), QRegularExpression::CaseInsensitiveOption);
|
||||
if (!themeName.isEmpty()) {
|
||||
return darkRegex.match(themeName).hasMatch();
|
||||
static const QRegularExpression darkRegex(kGTK_THEME_DARK_REGEX, QRegularExpression::CaseInsensitiveOption);
|
||||
const QString envThemeName = qEnvironmentVariable(GTK_THEME_NAME_ENV_VAR);
|
||||
if (!envThemeName.isEmpty()) {
|
||||
return darkRegex.match(envThemeName).hasMatch();
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -150,7 +153,7 @@ template<typename T>
|
|||
gtk-theme-name provides both light and dark variants. We can save a
|
||||
regex check by testing this property first.
|
||||
*/
|
||||
const auto preferDark = gtkSetting<bool>("gtk-application-prefer-dark-theme");
|
||||
const auto preferDark = gtkSetting<bool>(GTK_THEME_PREFER_DARK_PROP);
|
||||
if (preferDark) {
|
||||
return true;
|
||||
}
|
||||
|
@ -158,15 +161,12 @@ template<typename T>
|
|||
/*
|
||||
https://docs.gtk.org/gtk3/property.Settings.gtk-theme-name.html
|
||||
*/
|
||||
themeName = gtkSetting("gtk-theme-name");
|
||||
if (!themeName.isEmpty()) {
|
||||
return darkRegex.match(themeName).hasMatch();
|
||||
const QString curThemeName = gtkSetting(GTK_THEME_NAME_PROP);
|
||||
if (!curThemeName.isEmpty()) {
|
||||
return darkRegex.match(curThemeName).hasMatch();
|
||||
}
|
||||
|
||||
return false;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 0))
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
#include <QtQuick/private/qquickimage_p.h>
|
||||
#include <QtQuick/private/qquickrectangle_p.h>
|
||||
#include <QtQuick/private/qquickanchors_p.h>
|
||||
#include <QtQuickTemplates2/private/qquicktooltip_p.h>
|
||||
|
||||
static inline void initResource()
|
||||
{
|
||||
|
|
|
@ -24,13 +24,13 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <QtQuickTemplates2/private/qquickbutton_p.h>
|
||||
#include "framelesshelperquick_global.h"
|
||||
#include <QtQuickTemplates2/private/qquicktooltip_p.h>
|
||||
#include <QtQuickTemplates2/private/qquickbutton_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QQuickImage;
|
||||
class QQuickRectangle;
|
||||
class QQuickToolTipAttached;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
#include <QtQuick/private/qquickimage_p.h>
|
||||
#include <QtQuick/private/qquickrectangle_p.h>
|
||||
#include <QtQuick/private/qquickanchors_p.h>
|
||||
#include <QtQuickTemplates2/private/qquicktooltip_p.h>
|
||||
|
||||
static inline void initResource()
|
||||
{
|
||||
|
|
|
@ -24,13 +24,13 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <QtQuickTemplates2/private/qquickbutton_p.h>
|
||||
#include "framelesshelperquick_global.h"
|
||||
#include <QtQuickTemplates2/private/qquickbutton_p.h>
|
||||
#include <QtQuickTemplates2/private/qquicktooltip_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QQuickImage;
|
||||
class QQuickRectangle;
|
||||
class QQuickToolTipAttached;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
#include <QtQuick/private/qquickimage_p.h>
|
||||
#include <QtQuick/private/qquickrectangle_p.h>
|
||||
#include <QtQuick/private/qquickanchors_p.h>
|
||||
#include <QtQuickTemplates2/private/qquicktooltip_p.h>
|
||||
|
||||
static inline void initResource()
|
||||
{
|
||||
|
|
|
@ -24,13 +24,13 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <QtQuickTemplates2/private/qquickbutton_p.h>
|
||||
#include "framelesshelperquick_global.h"
|
||||
#include <QtQuickTemplates2/private/qquickbutton_p.h>
|
||||
#include <QtQuickTemplates2/private/qquicktooltip_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QQuickImage;
|
||||
class QQuickRectangle;
|
||||
class QQuickToolTipAttached;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
#include <QtCore/qdebug.h>
|
||||
#include <QtGui/qpainter.h>
|
||||
#include <QtGui/qevent.h>
|
||||
#include <QtGui/qwindow.h>
|
||||
#include <QtWidgets/qboxlayout.h>
|
||||
#include <QtWidgets/qlabel.h>
|
||||
#include <framelesswindowsmanager.h>
|
||||
|
|
Loading…
Reference in New Issue