RibbonWindow: Improve blur behind window in Windows.
This commit is contained in:
parent
863c61325a
commit
063e2d5bae
|
@ -10,7 +10,6 @@ RibbonWindow {
|
||||||
title: qsTr("RibbonUI APP")
|
title: qsTr("RibbonUI APP")
|
||||||
comfirmed_quit: true
|
comfirmed_quit: true
|
||||||
property bool modern_style: RibbonTheme.modern_style
|
property bool modern_style: RibbonTheme.modern_style
|
||||||
|
|
||||||
RibbonTabBar {
|
RibbonTabBar {
|
||||||
id: tab_bar
|
id: tab_bar
|
||||||
modern_style: root.modern_style
|
modern_style: root.modern_style
|
||||||
|
|
|
@ -21,9 +21,6 @@ if(APPLE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (RIBBONUI_BUILD_QWINDOWKIT)
|
if (RIBBONUI_BUILD_QWINDOWKIT)
|
||||||
if(WIN32)
|
|
||||||
set(QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS OFF)
|
|
||||||
endif()
|
|
||||||
set(QWINDOWKIT_BUILD_STATIC ON)
|
set(QWINDOWKIT_BUILD_STATIC ON)
|
||||||
set(QWINDOWKIT_BUILD_EXAMPLES OFF)
|
set(QWINDOWKIT_BUILD_EXAMPLES OFF)
|
||||||
set(QWINDOWKIT_BUILD_QUICK ON)
|
set(QWINDOWKIT_BUILD_QUICK ON)
|
||||||
|
|
|
@ -17,10 +17,11 @@ Window {
|
||||||
property alias popup: pop
|
property alias popup: pop
|
||||||
property bool comfirmed_quit: false
|
property bool comfirmed_quit: false
|
||||||
property bool blurBehindWindow: true
|
property bool blurBehindWindow: true
|
||||||
|
property int windows_top_fix: Qt.platform.os === 'windows' ? 1 : 0 // a trick to fix Qt or QWindowKit's bug
|
||||||
visible: false
|
visible: false
|
||||||
color: {
|
color: {
|
||||||
if (blurBehindWindow) {
|
if (blurBehindWindow) {
|
||||||
return "transparent";
|
return "transparent"
|
||||||
}
|
}
|
||||||
if (RibbonTheme.dark_mode) {
|
if (RibbonTheme.dark_mode) {
|
||||||
return '#2C2B29'
|
return '#2C2B29'
|
||||||
|
@ -29,7 +30,7 @@ Window {
|
||||||
}
|
}
|
||||||
onBlurBehindWindowChanged: {
|
onBlurBehindWindowChanged: {
|
||||||
if (Qt.platform.os === 'windows')
|
if (Qt.platform.os === 'windows')
|
||||||
windowAgent.setWindowAttribute("mica", blurBehindWindow)
|
windowAgent.setWindowAttribute("dwm-blur", blurBehindWindow)
|
||||||
else if (Qt.platform.os === 'osx')
|
else if (Qt.platform.os === 'osx')
|
||||||
windowAgent.setWindowAttribute("blur-effect", blurBehindWindow ? RibbonTheme.dark_mode ? "dark" : "light" : "none")
|
windowAgent.setWindowAttribute("blur-effect", blurBehindWindow ? RibbonTheme.dark_mode ? "dark" : "light" : "none")
|
||||||
}
|
}
|
||||||
|
@ -38,13 +39,14 @@ Window {
|
||||||
windowAgent.setup(window)
|
windowAgent.setup(window)
|
||||||
if (Qt.platform.os === 'windows')
|
if (Qt.platform.os === 'windows')
|
||||||
{
|
{
|
||||||
windowAgent.setWindowAttribute("mica", blurBehindWindow)
|
windowAgent.setWindowAttribute("dwm-blur", blurBehindWindow)
|
||||||
windowAgent.setSystemButton(WindowAgent.Minimize, titleBar.minimizeBtn);
|
windowAgent.setSystemButton(WindowAgent.Minimize, titleBar.minimizeBtn);
|
||||||
windowAgent.setSystemButton(WindowAgent.Maximize, titleBar.maximizeBtn);
|
windowAgent.setSystemButton(WindowAgent.Maximize, titleBar.maximizeBtn);
|
||||||
windowAgent.setSystemButton(WindowAgent.Close, titleBar.closeBtn);
|
windowAgent.setSystemButton(WindowAgent.Close, titleBar.closeBtn);
|
||||||
}
|
}
|
||||||
if(Qt.platform.os === "osx")
|
if(Qt.platform.os === "osx")
|
||||||
{
|
{
|
||||||
|
windowAgent.setWindowAttribute("dark-mode", RibbonTheme.dark_mode)
|
||||||
windowAgent.setWindowAttribute("blur-effect", blurBehindWindow ? RibbonTheme.dark_mode ? "dark" : "light" : "none")
|
windowAgent.setWindowAttribute("blur-effect", blurBehindWindow ? RibbonTheme.dark_mode ? "dark" : "light" : "none")
|
||||||
PlatformSupport.showSystemTitleBtns(window, true)
|
PlatformSupport.showSystemTitleBtns(window, true)
|
||||||
}
|
}
|
||||||
|
@ -52,29 +54,27 @@ Window {
|
||||||
windowAgent.setHitTestVisible(titleBar.right_container)
|
windowAgent.setHitTestVisible(titleBar.right_container)
|
||||||
windowAgent.setTitleBar(titleBar)
|
windowAgent.setTitleBar(titleBar)
|
||||||
windowAgent.centralize()
|
windowAgent.centralize()
|
||||||
window.flags ^= Qt.WA_AlwaysShowToolTips // It's a trick for Windows
|
|
||||||
window.visible = true
|
window.visible = true
|
||||||
window.flags ^= Qt.WA_AlwaysShowToolTips // It's a trick for Windows
|
|
||||||
}
|
}
|
||||||
Item{
|
Item{
|
||||||
id: window_items
|
id: window_items
|
||||||
anchors.fill: parent
|
anchors{
|
||||||
|
fill: parent
|
||||||
|
topMargin: border_rect.border.width + windows_top_fix
|
||||||
|
leftMargin: border_rect.border.width
|
||||||
|
rightMargin: border_rect.border.width
|
||||||
|
bottomMargin: border_rect.border.width
|
||||||
|
}
|
||||||
RibbonTitleBar {
|
RibbonTitleBar {
|
||||||
id: titleBar
|
id: titleBar
|
||||||
anchors.topMargin: border_rect.border.width
|
|
||||||
anchors.leftMargin: border_rect.border.width
|
|
||||||
anchors.rightMargin: border_rect.border.width
|
|
||||||
}
|
}
|
||||||
Item{
|
Item{
|
||||||
id:container
|
id:container
|
||||||
anchors{
|
anchors{
|
||||||
top: titleBar.bottom
|
top: titleBar.bottom
|
||||||
left: parent.left
|
left: parent.left
|
||||||
leftMargin: border_rect.border.width
|
|
||||||
right: parent.right
|
right: parent.right
|
||||||
rightMargin: border_rect.border.width
|
|
||||||
bottom: parent.bottom
|
bottom: parent.bottom
|
||||||
bottomMargin: border_rect.border.width
|
|
||||||
}
|
}
|
||||||
clip: true
|
clip: true
|
||||||
}
|
}
|
||||||
|
@ -95,12 +95,23 @@ Window {
|
||||||
}
|
}
|
||||||
Rectangle{
|
Rectangle{
|
||||||
id: border_rect
|
id: border_rect
|
||||||
|
z: -1
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: 'transparent'
|
anchors.topMargin: windows_top_fix
|
||||||
|
color: {
|
||||||
|
if (Qt.platform.os === 'windows')
|
||||||
|
{
|
||||||
|
if (RibbonTheme.dark_mode) {
|
||||||
|
return Qt.alpha('#2C2B29', 0.8)
|
||||||
|
}
|
||||||
|
return Qt.alpha('#FFFFFF',0.8)
|
||||||
|
}
|
||||||
|
return 'transparent'
|
||||||
|
}
|
||||||
border.color: RibbonTheme.dark_mode ? "#7A7A7A" : "#2C59B7"
|
border.color: RibbonTheme.dark_mode ? "#7A7A7A" : "#2C59B7"
|
||||||
border.width: RibbonTheme.modern_style ? 1 : 0
|
border.width: RibbonTheme.modern_style ? 1 : 0
|
||||||
radius: Qt.platform.os === 'windows' ? 7 : 10
|
radius: Qt.platform.os === 'windows' ? 7 : 10
|
||||||
visible: RibbonTheme.modern_style
|
visible: RibbonTheme.modern_style || blurBehindWindow
|
||||||
}
|
}
|
||||||
RibbonPopup{
|
RibbonPopup{
|
||||||
id: pop
|
id: pop
|
||||||
|
|
Loading…
Reference in New Issue