[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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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()