diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2018-12-29 17:19:47 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2019-01-16 07:48:19 +0100 |
commit | a36b1129f21760513e5ab4f0f3f984b820132979 (patch) | |
tree | 813902eb300ca7f4661b2bc4cfa79144e1ef9082 /compat/check-visible.cpp | |
parent | 54d738ae4762298f0a8b8926da33b0eb4c37ea5b (diff) |
compat/check-visible: add generic impl
Diffstat (limited to 'compat/check-visible.cpp')
-rw-r--r-- | compat/check-visible.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/compat/check-visible.cpp b/compat/check-visible.cpp index 0a759a3e..2772c9ae 100644 --- a/compat/check-visible.cpp +++ b/compat/check-visible.cpp @@ -1,27 +1,35 @@ #include "check-visible.hpp" -#include "macros.hpp" -#include "timer.hpp" -#include "spinlock.hpp" - #include <QWidget> #include <QDebug> -constexpr int visible_timeout = 1000; -constexpr int invisible_timeout = 250; +#include "spinlock.hpp" -static Timer timer; static std::atomic_flag lock = ATOMIC_FLAG_INIT; static bool visible = true; #if defined _WIN32 +#include "timer.hpp" +#include "macros.hpp" + +static Timer timer; + +constexpr int visible_timeout = 1000; +constexpr int invisible_timeout = 250; + #include <windows.h> void set_is_visible(const QWidget& w, bool force) { spinlock_guard l(lock); + if (w.isHidden() || w.windowState() & Qt::WindowMinimized) + { + visible = false; + return; + } + HWND hwnd = (HWND)w.winId(); if (!force && timer.elapsed_ms() < (visible ? visible_timeout : invisible_timeout)) @@ -60,12 +68,10 @@ void set_is_visible(const QWidget& w, bool force) #else -void set_is_visible(const QWidget&, bool) -{ -} - -void check_is_visible(bool) +void set_is_visible(const QWidget& w, bool) { + spinlock_guard l(lock); + visible = !(w.isHidden() || w.windowState() & Qt::WindowMinimized); } #endif @@ -81,4 +87,3 @@ void force_is_visible(bool value) spinlock_guard l(lock); visible = value; } - |