[VCM] fix ToolbarHide behavior (#21348)

This commit is contained in:
Andrey Nekrasov
2022-10-26 00:25:53 +03:00
committed by GitHub
parent e171264dc2
commit a3042b8435
4 changed files with 91 additions and 47 deletions

View File

@@ -62,6 +62,7 @@ APIENTRY
APIIs
APPBARDATA
appdata
APPEXECLINK
APPICON
appid
appium
@@ -75,6 +76,7 @@ apps
appwindow
appwiz
appx
appxpackage
APSTUDIO
AQS
Aqtobe
@@ -265,6 +267,7 @@ cnt
Cocklebiddy
coclass
codebase
codecvt
CODENAME
codeofconduct
codereview
@@ -296,6 +299,7 @@ comsuppw
comsuppwd
comutil
Concat
concrt
configs
Configurator
CONFLICTINGMODIFIERKEY
@@ -314,6 +318,7 @@ CONTROLPARENT
Controlz
coord
copiedcolorrepresentation
corewebview
cortana
cotaskmem
COULDNOT
@@ -350,6 +355,7 @@ CSY
CTAB
CTest
ctime
Ctl
ctor
CTRLALTDEL
Ctrls
@@ -385,6 +391,7 @@ DARKPURPLE
DARKTEAL
DARKYELLOW
datareader
datatemplate
Datavalue
DATAW
davidegiacometti
@@ -546,6 +553,7 @@ ENTERSIZEMOVE
entrypoint
ENU
enum
enumerationoptions
EOAC
EOL
epicgames
@@ -566,6 +574,7 @@ etl
etw
Eucla
EUQ
eurochange
eventlog
everytime
evt
@@ -610,6 +619,7 @@ fileapi
FILEEXPLORER
FILEFLAGS
FILEFLAGSMASK
fileio
FILEOP
FILEOS
filepath
@@ -624,7 +634,7 @@ Filterkeyboard
Filterx
finalizer
findfast
Firefox
firefox
FIXEDFILEINFO
flt
flyout
@@ -641,6 +651,7 @@ franky
frankychen
Froml
FROMTOUCH
FSCTL
fstream
FTYPE
func
@@ -662,7 +673,8 @@ gcode
gdi
gdiplus
GDISCALED
generatesqlfromuserquery
getancestor
getasynckeystate
GETDESKWALLPAPER
GETDLGCODE
GETDPISCALEDSIZE
@@ -675,7 +687,9 @@ GETTEXTLENGTH
GHND
github
githubusercontent
globalassemblycache
globals
Globbing
GMEM
GNumber
google
@@ -690,10 +704,12 @@ GValue
gwl
GWLP
HACCEL
handlerroutine
hangeul
hanselman
hardcoded
Hardlines
hardlinks
HARDWAREINPUT
hashcode
Hashset
@@ -835,6 +851,7 @@ IDrive
idx
IDXGI
IEasing
IElevation
IEnum
IEnumerable
IEnumerator
@@ -860,6 +877,7 @@ IFormatter
ifstream
IGraph
IGraphics
ihost
iid
IImage
Iindex
@@ -907,6 +925,7 @@ INotify
inout
INPC
inproc
inputdev
INPUTHARDWARE
INPUTKEYBOARD
INPUTLANGCHANGED
@@ -951,6 +970,7 @@ IPin
IPlugin
IPower
ipreview
ipreviewhandler
ipreviewhandlertranslateaccelerator
ipreviewhandlervisualssetfont
IPrincipal
@@ -975,6 +995,7 @@ isetting
isfinite
IShell
ISingle
ISite
ISmart
isocpp
iss
@@ -983,6 +1004,7 @@ istreambuf
istringstream
iswpunct
iswspace
ISynchronize
ITab
ITask
ITemplate
@@ -1002,6 +1024,7 @@ IValue
IVector
IView
IVirtual
ivirtualdesktopmanager
IWbem
IWIC
iwindow
@@ -1011,8 +1034,6 @@ IYUV
IZone
IZoom
JArray
jarro
Jarryd
jefflord
jfif
jgeosdfsdsgmkedfgdfgdfgbkmhcgcflmi
@@ -1219,6 +1240,7 @@ memcpy
memset
MENUITEMINFO
MENUITEMINFOW
menurc
Metadatas
metafile
mfapi
@@ -1251,6 +1273,7 @@ mjpg
mkd
mkdn
mlcfg
MMdd
MMDDYYYY
mmdeviceapi
mmi
@@ -1287,8 +1310,9 @@ msclr
mscoree
mscorlib
msdata
MSDN
msdn
msedge
MSFT
MSGFLT
MSIFASTINSTALL
MSIHANDLE
@@ -1302,6 +1326,7 @@ msp
msrc
mst
msvc
msvcp
MTND
Mul
multiline
@@ -1312,7 +1337,8 @@ multizone
Mundrabilla
mutex
mutexes
MVVM
muxc
mvvm
myfile
MYICON
MYTZ
@@ -1320,6 +1346,7 @@ NAMECHANGE
nameof
namespace
Navassa
navigatetostring
NCACTIVATE
ncc
NCCALCSIZE
@@ -1359,7 +1386,7 @@ newdev
newitem
newpath
newrow
Newtonsoft
newtonsoft
nia
niels
nielslaute
@@ -1386,6 +1413,7 @@ nonclient
NONCONVERT
NONELEVATED
NONINFRINGEMENT
nonpackaged
nonstd
NOOWNERZORDER
NOPARENTNOTIFY
@@ -1437,6 +1465,7 @@ OBJID
objidl
oblitum
ocr
Ocrsettings
odbc
odbccp
Oem
@@ -1450,7 +1479,9 @@ oldpath
oldtheme
oleaut
OLECHAR
OLEDB
oledb
oledbcommand
oledbconnection
OLIVEGREEN
onebranch
onenote
@@ -1561,7 +1592,6 @@ POWERRENAMECONTEXTMENU
powerrenameinput
POWERRENAMETEST
powertoy
powertoysinterop
powertoyssetup
Powrprof
ppidl
@@ -1584,7 +1614,7 @@ preload
PREMULTIPLIED
prevhost
previewer
PREVIEWHANDLERFRAMEINFO
previewhandlerframeinfo
previewpane
previouscamera
PREVIOUSINSTALLFOLDER
@@ -1642,6 +1672,7 @@ qps
quateur
Queryable
QUERYENDSESSION
queryfocus
QUERYOPEN
QUEUESYNC
Quickime
@@ -1688,9 +1719,11 @@ REFIID
REGCLS
regedit
regex
regfile
REGFILTER
REGFILTERPINS
REGISTERCLASSFAILED
registerhotkey
registrypath
regkey
REGPINTYPES
@@ -1707,7 +1740,7 @@ Removelnk
renamable
RENAMEONCOLLISION
Renamer
Reparse
reparse
requery
requerying
rescap
@@ -1717,6 +1750,7 @@ Resizable
resizers
resmimetype
RESOURCEID
resourcemanager
RESTORETOMAXIMIZED
restrictedcapabilities
restrictederrorinfo
@@ -1760,6 +1794,7 @@ Rstrtmgr
RTB
RTLREADING
RTSS
ruleset
runas
rundll
rungameid
@@ -1783,6 +1818,7 @@ SAVEFAILED
scalability
scancode
scanled
Schd
schedtasks
Scip
scipbe
@@ -1797,11 +1833,14 @@ SDKDDK
sdns
searchterm
Secur
securityoverview
seekg
Segoe
segoe
Sekan
SENDCHANGE
sendinput
sendvirtualinput
Seperate
serializer
serverside
SETCONTEXT
@@ -1837,6 +1876,7 @@ SHGFI
Shl
shldisp
shlobj
Shlw
shlwapi
shmem
shobjidl
@@ -1851,6 +1891,7 @@ Shortcuttool
shortdate
SHORTPATH
shortsplit
should't
showcolorname
SHOWDEFAULT
SHOWELEVATIONPROMPT
@@ -1860,7 +1901,7 @@ SHOWMINNOACTIVE
SHOWNA
SHOWNOACTIVATE
SHOWNORMAL
SHOWWINDOW
showwindow
shtypes
SICHINT
sid
@@ -1888,6 +1929,7 @@ sku
SLGP
sln
SMALLICON
smartphone
SMTO
snd
snickler
@@ -1937,7 +1979,7 @@ STARTUPINFO
STARTUPINFOEX
STARTUPINFOW
startupscreen
STATFLAG
statflag
STATICEDGE
STATSTG
stdafx
@@ -1954,7 +1996,7 @@ STDMETHODIMP
stdout
stefan
Stereolithography
STGM
stgm
STGMEDIUM
sticpl
stl
@@ -2005,7 +2047,6 @@ swprintf
SWRESTORE
swscanf
SYMED
symlink
SYMOPT
SYNCMFT
SYNCPAINT
@@ -2015,9 +2056,10 @@ SYSCOMMAND
SYSDEADCHAR
sysdm
SYSICONINDEX
sysinfo
SYSKEY
syskeydown
SYSKEYUP
syskeyup
syslog
SYSMENU
SYSTEMAPPS
@@ -2083,6 +2125,7 @@ Toolset
toolwindow
TOPDOWNDIB
toplevel
tostring
TOUCHEVENTF
TOUCHINPUT
touchpad
@@ -2105,7 +2148,7 @@ TStr
Tuva
TValue
TWF
TYMED
tymed
typedef
TYPEKEY
TYPEKEYBOARD
@@ -2118,6 +2161,7 @@ TYPESHORTCUT
UAC
UAL
uap
uapmanifestschema
ubuntu
udit
Udk
@@ -2126,6 +2170,7 @@ Udp
uefi
UHash
UIA
uiauto
uid
UIEx
uint
@@ -2198,12 +2243,15 @@ vabdq
validmodulename
Vanara
vcamp
vccorlib
vcdl
vcgtq
VCINSTALLDIR
vcm
vcomp
Vcpkg
VCRT
vcruntime
vcvars
VDesktop
vdi
@@ -2229,6 +2277,7 @@ viewmodel
vih
virtualization
Virtualizing
virtualkey
visiblecolorformats
Visibletrue
visualbrush
@@ -2295,6 +2344,7 @@ wikipedia
wildcards
winapi
winappdriver
winauto
wincodec
Wincodecsdk
wincolor
@@ -2328,7 +2378,8 @@ winkey
WINL
winmd
winmm
WINNT
winmsg
winnt
winres
winrt
winsdk
@@ -2337,6 +2388,7 @@ winspool
WINTHRESHOLD
winui
winuiex
winuser
winxamlmanager
wistd
withinrafael
@@ -2349,6 +2401,7 @@ WKSG
Wlkr
wmain
Wman
wmentha
wmi
WMICIM
WMKEYDOWN
@@ -2392,6 +2445,7 @@ wtoi
WTS
wtsapi
WTSAT
wtypes
Wubi
wuceffectsi
WVC
@@ -2429,6 +2483,7 @@ YUYV
YVIRTUALSCREEN
YVU
YVYU
yyyy
Zabaykalsky
ZEROINIT
ZIndex

View File

@@ -152,38 +152,27 @@ LRESULT Toolbar::WindowProcessMessages(HWND hwnd, UINT msg, WPARAM wparam, LPARA
const bool showOverlayTimeout = nowMillis - toolbar->lastTimeCamOrMicMuteStateChanged > OVERLAY_SHOW_TIME;
static bool previousShow = false;
bool show = false;
bool show = toolbar->ToolbarHide == L"Never";
if (toolbar->ToolbarHide == L"Never")
const bool cameraJustStoppedInUse = toolbar->previouscameraInUse && !toolbar->cameraInUse;
bool shouldUnmuteAll = cameraJustStoppedInUse;
if (toolbar->ToolbarHide == L"When both camera and microphone are muted")
{
show = true;
}
else if (toolbar->ToolbarHide == L"When both camera and microphone are muted")
{
if(!toolbar->previouscameraInUse && toolbar->cameraInUse && !toolbar->moduleSettingsUpdateScheduled)
{
VideoConferenceModule::muteAll();
}
show = !(toolbar->microphoneMuted && (toolbar->cameraMuted || !toolbar->cameraInUse));
// We shouldn't unmute devices, since we'd like to only show the toolbar only
// when something is unmuted -> the use case is to keep everything muted by default and track it
shouldUnmuteAll = false;
show = (!toolbar->cameraMuted && toolbar->cameraInUse) || !toolbar->microphoneMuted;
}
else if (toolbar->ToolbarHide == L"When both camera and microphone are unmuted")
{
if(!toolbar->previouscameraInUse && toolbar->cameraInUse && !toolbar->moduleSettingsUpdateScheduled)
{
VideoConferenceModule::unmuteAll();
}
show = toolbar->microphoneMuted || toolbar->cameraMuted;
}
show = (toolbar->cameraMuted && toolbar->cameraInUse) || toolbar->microphoneMuted;
if (shouldUnmuteAll && !toolbar->moduleSettingsUpdateScheduled)
VideoConferenceModule::unmuteAll();
show = show || !showOverlayTimeout;
if (show)
{
ShowWindow(hwnd, SW_SHOW);
}
else
{
ShowWindow(hwnd, SW_HIDE);
}
ShowWindow(hwnd, show ? SW_SHOW : SW_HIDE);
if (previousShow != show)
{
previousShow = show;

View File

@@ -54,7 +54,7 @@ private:
std::wstring theme = L"system";
std::wstring ToolbarHide = L"Never";
std::wstring ToolbarHide = L"When both camera and microphone are unmuted";
uint64_t lastTimeCamOrMicMuteStateChanged{};

View File

@@ -73,7 +73,7 @@ namespace Microsoft.PowerToys.Settings.UI.Library
public StringProperty Theme { get; set; }
[JsonPropertyName("toolbar_hide")]
public StringProperty ToolbarHide { get; set; } = "Never";
public StringProperty ToolbarHide { get; set; } = "When both camera and microphone are unmuted";
// converts the current to a json string.
public string ToJsonString()