You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(10) |
Sep
|
Oct
|
Nov
|
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(1) |
Feb
(2) |
Mar
(3) |
Apr
(2) |
May
(10) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2008 |
Jan
(6) |
Feb
(4) |
Mar
(5) |
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
(4) |
Aug
(6) |
Sep
(2) |
Oct
(9) |
Nov
(1) |
Dec
(4) |
2009 |
Jan
(9) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(6) |
Jun
(18) |
Jul
(33) |
Aug
(39) |
Sep
(33) |
Oct
(24) |
Nov
(23) |
Dec
(22) |
2010 |
Jan
(29) |
Feb
(32) |
Mar
(51) |
Apr
(17) |
May
(31) |
Jun
(21) |
Jul
(32) |
Aug
(28) |
Sep
(35) |
Oct
(27) |
Nov
(11) |
Dec
(13) |
2011 |
Jan
(14) |
Feb
(13) |
Mar
(27) |
Apr
(27) |
May
(28) |
Jun
(20) |
Jul
(43) |
Aug
(52) |
Sep
(66) |
Oct
(61) |
Nov
(11) |
Dec
(8) |
2012 |
Jan
(20) |
Feb
(30) |
Mar
(38) |
Apr
(21) |
May
(33) |
Jun
(21) |
Jul
(25) |
Aug
(9) |
Sep
(24) |
Oct
(42) |
Nov
(27) |
Dec
(41) |
2013 |
Jan
(20) |
Feb
(35) |
Mar
(156) |
Apr
(298) |
May
(258) |
Jun
(201) |
Jul
(105) |
Aug
(60) |
Sep
(193) |
Oct
(245) |
Nov
(280) |
Dec
(194) |
2014 |
Jan
(63) |
Feb
(202) |
Mar
(200) |
Apr
(23) |
May
(53) |
Jun
(105) |
Jul
(18) |
Aug
(26) |
Sep
(110) |
Oct
(187) |
Nov
(97) |
Dec
(74) |
2015 |
Jan
(45) |
Feb
(55) |
Mar
(116) |
Apr
(116) |
May
(193) |
Jun
(164) |
Jul
(50) |
Aug
(111) |
Sep
(98) |
Oct
(71) |
Nov
(103) |
Dec
(63) |
2016 |
Jan
(33) |
Feb
(101) |
Mar
(182) |
Apr
(139) |
May
(140) |
Jun
(103) |
Jul
(165) |
Aug
(286) |
Sep
(208) |
Oct
(127) |
Nov
(97) |
Dec
(54) |
2017 |
Jan
(64) |
Feb
(335) |
Mar
(202) |
Apr
(212) |
May
(139) |
Jun
(127) |
Jul
(294) |
Aug
(154) |
Sep
(170) |
Oct
(152) |
Nov
(156) |
Dec
(62) |
2018 |
Jan
(168) |
Feb
(237) |
Mar
(196) |
Apr
(174) |
May
(174) |
Jun
(161) |
Jul
(127) |
Aug
(88) |
Sep
(149) |
Oct
(66) |
Nov
(52) |
Dec
(135) |
2019 |
Jan
(146) |
Feb
(126) |
Mar
(104) |
Apr
(58) |
May
(60) |
Jun
(28) |
Jul
(197) |
Aug
(129) |
Sep
(141) |
Oct
(148) |
Nov
(63) |
Dec
(100) |
2020 |
Jan
(74) |
Feb
(37) |
Mar
(59) |
Apr
(154) |
May
(194) |
Jun
(133) |
Jul
(313) |
Aug
(197) |
Sep
(49) |
Oct
(162) |
Nov
(143) |
Dec
(57) |
2021 |
Jan
(120) |
Feb
(107) |
Mar
(314) |
Apr
(157) |
May
(524) |
Jun
(169) |
Jul
(72) |
Aug
(133) |
Sep
(135) |
Oct
(146) |
Nov
(198) |
Dec
(325) |
2022 |
Jan
(409) |
Feb
(249) |
Mar
(138) |
Apr
(95) |
May
(102) |
Jun
(221) |
Jul
(66) |
Aug
(120) |
Sep
(192) |
Oct
(131) |
Nov
(53) |
Dec
(171) |
2023 |
Jan
(357) |
Feb
(82) |
Mar
(168) |
Apr
(218) |
May
(196) |
Jun
(86) |
Jul
(115) |
Aug
(49) |
Sep
(190) |
Oct
(102) |
Nov
(45) |
Dec
(76) |
2024 |
Jan
(86) |
Feb
(50) |
Mar
(324) |
Apr
(209) |
May
(197) |
Jun
(232) |
Jul
(194) |
Aug
(247) |
Sep
(219) |
Oct
(266) |
Nov
(328) |
Dec
(304) |
2025 |
Jan
(191) |
Feb
(115) |
Mar
(137) |
Apr
(32) |
May
(126) |
Jun
(403) |
Jul
(202) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@op...> - 2024-11-25 18:30:05
|
Author: manx Date: Mon Nov 25 19:29:56 2024 New Revision: 22305 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22305 Log: [Ref] build: Makefile: DJGPP: Small cleanup. Modified: trunk/OpenMPT/build/make/config-djgpp.mk Modified: trunk/OpenMPT/build/make/config-djgpp.mk ============================================================================== --- trunk/OpenMPT/build/make/config-djgpp.mk Mon Nov 25 18:57:41 2024 (r22304) +++ trunk/OpenMPT/build/make/config-djgpp.mk Mon Nov 25 19:29:56 2024 (r22305) @@ -119,7 +119,7 @@ OPT_UARCH_CISC_64 := -Os # non-pipelined, scalar, in-order, optimize for size OPT_UARCH_PIPE_64 := -Os # pipelined, scalar, in-order, optimize for size OPT_UARCH_SCAL_64 := -O2 # pipelined, super-scalar, in-order, optimize for speed pentium-mmx -OPT_UARCH_OOOE_64 := -O2 # pipelined, super-scalar, out-of-order, optimize for speed pentium2 k6-2 m2 +OPT_UARCH_OOOE_64 := -O2 # pipelined, super-scalar, out-of-order, optimize for speed pentium2 k6 m2 OPT_UARCH_COMP_64 := -O2 # recompiler # vectorize for SSE (128bit wide) @@ -282,12 +282,6 @@ amd/am486dxe := $(XX_) -march=i486 $(FPU_387) -mtune=i486 $(OPT_UARCH_PIPE) --param l1-cache-size=12 --param l2-cache-size=$(CACHE_486) amd/am5x86 := $(___) -march=i486 $(FPU_387) -mtune=i486 $(OPT_UARCH_PIPE) --param l1-cache-size=12 --param l2-cache-size=$(CACHE_486) amd/k5 := $(X__) -march=i586 $(FPU_387) -mtune=i586 $(OPT_UARCH_OOOE) --param l1-cache-size=8 --param l2-cache-size=$(CACHE_S7) -# amd/k5-i586 := $(X__) -march=i586 $(FPU_387) -mtune=i586 $(OPT_UARCH_OOOE) --param l1-cache-size=8 --param l2-cache-size=$(CACHE_S7) -# amd/k5-pentium := $(X__) -march=i586 $(FPU_387) -mtune=pentium $(OPT_UARCH_OOOE) --param l1-cache-size=8 --param l2-cache-size=$(CACHE_S7) -# amd/k5-pentiummmx := $(X__) -march=i586 $(FPU_387) -mtune=pentium-mmx $(OPT_UARCH_OOOE) --param l1-cache-size=8 --param l2-cache-size=$(CACHE_S7) -# amd/k5-pentiumpro := $(X__) -march=i586 $(FPU_387) -mtune=pentiumpro $(OPT_UARCH_OOOE) --param l1-cache-size=8 --param l2-cache-size=$(CACHE_S7) -# amd/k5-pentium2 := $(X__) -march=i586 $(FPU_387) -mtune=pentium2 $(OPT_UARCH_OOOE) --param l1-cache-size=8 --param l2-cache-size=$(CACHE_S7) -# amd/k5-k6 := $(X__) -march=i586 $(FPU_387) -mtune=k6 $(OPT_UARCH_OOOE) --param l1-cache-size=8 --param l2-cache-size=$(CACHE_S7) amd/k6 := $(XX_) -march=k6 $(FPU_MMX) -mtune=k6 $(OPT_UARCH_OOOE_64) --param l1-cache-size=32 --param l2-cache-size=$(CACHE_S7) amd/k6-2 := $(XXX) -march=k6-2 $(FPU_3DNOW) -mtune=k6-2 $(OPT_UARCH_OOOE_64) --param l1-cache-size=32 --param l2-cache-size=$(CACHE_SS7) amd/k6-3 := $(___) -march=k6-3 $(FPU_3DNOW) -mtune=k6-3 $(OPT_UARCH_OOOE_64) --param l1-cache-size=32 --param l2-cache-size=256 |
Author: sagamusix Date: Mon Nov 25 18:57:41 2024 New Revision: 22304 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22304 Log: [Ref] Move default key binding definitions to separate file. Added: trunk/OpenMPT/mptrack/DefaultKeyBindings.h - copied, changed from r22303, trunk/OpenMPT/mptrack/CommandSet.cpp Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj.filters trunk/OpenMPT/mptrack/CommandSet.cpp Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -816,6 +816,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -411,6 +411,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -816,6 +816,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -411,6 +411,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -816,6 +816,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -411,6 +411,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -816,6 +816,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -411,6 +411,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -816,6 +816,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -411,6 +411,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -816,6 +816,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -411,6 +411,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -835,6 +835,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -835,6 +835,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -835,6 +835,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -2037,6 +2037,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -2037,6 +2037,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -2037,6 +2037,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -1605,6 +1605,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -411,6 +411,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -1605,6 +1605,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -411,6 +411,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -1605,6 +1605,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -411,6 +411,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -855,6 +855,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -855,6 +855,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -855,6 +855,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -1243,6 +1243,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -1243,6 +1243,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -1243,6 +1243,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -1243,6 +1243,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -1243,6 +1243,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj Mon Nov 25 18:57:41 2024 (r22304) @@ -1243,6 +1243,7 @@ <ClInclude Include="..\..\mptrack\Ctrl_ins.h" /> <ClInclude Include="..\..\mptrack\Ctrl_pat.h" /> <ClInclude Include="..\..\mptrack\Ctrl_smp.h" /> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h" /> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h" /> <ClInclude Include="..\..\mptrack\DialogBase.h" /> <ClInclude Include="..\..\mptrack\EffectInfo.h" /> Modified: trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj.filters Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj.filters Mon Nov 25 18:57:41 2024 (r22304) @@ -453,6 +453,9 @@ <ClInclude Include="..\..\mptrack\Ctrl_smp.h"> <Filter>mptrack</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\DefaultKeyBindings.h"> + <Filter>mptrack</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\DefaultVstEditor.h"> <Filter>mptrack</Filter> </ClInclude> Modified: trunk/OpenMPT/mptrack/CommandSet.cpp ============================================================================== --- trunk/OpenMPT/mptrack/CommandSet.cpp Mon Nov 25 18:50:54 2024 (r22303) +++ trunk/OpenMPT/mptrack/CommandSet.cpp Mon Nov 25 18:57:41 2024 (r22304) @@ -10,6 +10,7 @@ #include "stdafx.h" #include "CommandSet.h" +#include "DefaultKeyBindings.h" #include "resource.h" #include "Mptrack.h" // For ErrorBox #include "../soundlib/mod_specifications.h" @@ -44,637 +45,6 @@ {kcCommentsStartNotes, kcCommentsStartNoteStops}, }; -struct DefaultKeybinding -{ - CommandID cmd; - uint16 key; // Virtual key code, or scan code if high bit is set - FlagSet<Modifiers> modifiers; - FlagSet<KeyEventType> events; - Version addedInVersion; -}; - -constexpr DefaultKeybinding DefaultKeybindings[] = -// clang-format off -{ - {kcFileNew, 'N', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcFileOpen, 'O', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcFileClose, 'W', ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcFileCloseAll, 'W', ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcFileSave, 'S', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcFileSaveAs, 'S', ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcPrevDocument, VK_BROWSER_BACK, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcNextDocument, VK_BROWSER_FORWARD, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcPlayPauseSong, VK_F5, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcPauseSong, VK_F8, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcStopSong, VK_ESCAPE, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcPlaySongFromStart, VK_F6, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcPlaySongFromCursor, VK_F6, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcPlayPatternFromStart, VK_F7, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcPlayPatternFromCursor, VK_F7, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcMidiRecord, VK_F9, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcEditUndo, 'Z', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEditRedo, 'Y', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEditRedo, 'Z', ModShift | ModCtrl, kKeyEventDown, MPT_V("1.32.00.25")}, - {kcEditCut, 'X', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEditCopy, 'C', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEditPaste, 'V', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEditPaste, VK_INSERT, ModShift, kKeyEventDown, MPT_V("1.31")}, - {kcEditMixPaste, 'V', ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEditPasteFlood, 'V', ModShift, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcEditPushForwardPaste, 'V', ModCtrl | ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcEditSelectAll, '5', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEditFind, 'F', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEditFindNext, VK_F3, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcViewGeneral, 'G', ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcViewPattern, 'P', ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcViewSamples, 'S', ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcViewInstruments, 'N', ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcViewComments, VK_F9, ModShift, kKeyEventDown, MPT_V("1.31")}, - {kcViewComments, 'C', ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcViewTree, VK_F2, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcViewOptions, VK_F1, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcViewMIDImapping, VK_F3, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcSwitchToInstrLibrary, 'I', ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcHelp, VK_F1, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcContextMenu, VK_APPS, ModNone, kKeyEventDown, MPT_V("1.32.00.25")}, - {kcContextMenu, VK_F10, ModShift, kKeyEventDown, MPT_V("1.32.00.25")}, - {kcPrevInstrument, VK_DIVIDE, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPrevInstrument, VK_UP, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNextInstrument, VK_MULTIPLY, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNextInstrument, VK_DOWN, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPrevOctave, VK_DIVIDE, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcNextOctave, VK_MULTIPLY, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcPrevOrder, VK_LEFT, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNextOrder, VK_RIGHT, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPatternJumpDownh1, VK_NEXT, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPatternJumpUph1, VK_PRIOR, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPatternJumpDownh2, VK_NEXT, ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPatternJumpUph2, VK_PRIOR, ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPatternSnapDownh2, VK_NEXT, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPatternSnapUph2, VK_PRIOR, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPrevEntryInColumn, VK_UP, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNextEntryInColumn, VK_DOWN, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNavigateDown, VK_DOWN, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNavigateUp, VK_UP, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNavigateDownBySpacing, VK_DOWN, ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNavigateUpBySpacing, VK_UP, ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNavigateLeft, VK_LEFT, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNavigateRight, VK_RIGHT, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNavigateNextChan, VK_TAB, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNavigatePrevChan, VK_TAB, ModShift, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcHomeHorizontal, VK_HOME, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcHomeVertical, VK_HOME, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcHomeAbsolute, VK_HOME, ModCtrl | ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcEndHorizontal, VK_END, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcEndVertical, VK_END, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEndAbsolute, VK_END, ModCtrl | ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcSelect, VK_SHIFT, ModShift, kKeyEventDown, MPT_V("1.31")}, - {kcCopySelect, VK_CONTROL, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcSelectChannel, 'L', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcSelectColumn, 'L', ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcSelectBeat, 'B', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcSelectMeasure, 'B', ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcToggleFollowSong, VK_CANCEL, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcToggleFollowSong, VK_SCROLL, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcToggleFollowSong, VK_F11, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcCursorCopy, VK_RETURN, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcCursorPaste, VK_SPACE, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPatternRecord, VK_SPACE, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcPatternPlayRow, VK_RETURN, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcSetSpacing, VK_MENU, ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcSwitchToOrderList, VK_TAB, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcDuplicatePattern, 'D', ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPatternEditPCNotePlugin, VK_OEM_2, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcTogglePluginEditor, 'P', ModCtrl | ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcShowNoteProperties, VK_APPS, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcShowPatternProperties, 'P', ModShift | ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcShowSplitKeyboardSettings, 'E', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcChangeLoopStatus, VK_F11, ModShift, kKeyEventDown, MPT_V("1.31")}, - {kcTimeAtRow, 'P', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcQuantizeSettings, 'Q', ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcToggleClipboardManager, 'M', ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcClipboardPrev, VK_LEFT, ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcClipboardNext, VK_RIGHT, ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcChannelMute, VK_F10, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcChannelSolo, VK_F10, ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcChannelUnmuteAll, VK_F10, ModCtrl | ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcChannelRecordSelect, '1', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcChannelSplitRecordSelect, '2', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcChannelReset, 'R', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcTransposeUp, 'Q', ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcTransposeDown, 'A', ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcTransposeOctUp, 'Q', ModShift | ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcTransposeOctDown, 'A', ModShift | ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcTransposeCustom, 'T', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcDataEntryUp, VK_ADD, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcDataEntryUp, VK_OEM_PLUS, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcDataEntryDown, VK_SUBTRACT, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcDataEntryDown, VK_OEM_MINUS, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcDataEntryUpCoarse, VK_ADD, ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcDataEntryUpCoarse, VK_OEM_PLUS, ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcDataEntryDownCoarse, VK_SUBTRACT, ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcDataEntryDownCoarse, VK_OEM_MINUS, ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcPatternAmplify, 'M', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcPatternInterpolateVol, 'J', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcPatternInterpolateEffect, 'K', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcPatternVisualizeEffect, 'B', ModAlt, kKeyEventDown, MPT_V("1.31")}, - {kcPatternGoto, 'G', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcPatternSetInstrument, 'I', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcPatternGrowSelection, 'E', ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPatternShrinkSelection, 'D', ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcClearField, VK_DELETE, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcClearFieldITStyle, VK_OEM_PERIOD, ModShift, kKeyEventDown, MPT_V("1.31")}, - {kcClearRowStep, VK_DELETE, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcClearFieldStepITStyle, VK_DELETE, ModShift, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcDeleteRow, VK_BACK, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcDeleteWholeRow, VK_BACK, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcDeleteRowGlobal, VK_BACK, ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcDeleteWholeRowGlobal, VK_BACK, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcInsertRow, VK_INSERT, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcInsertWholeRow, VK_INSERT, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcInsertRowGlobal, VK_INSERT, ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcInsertWholeRowGlobal, VK_INSERT, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPrevPattern, VK_SUBTRACT, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNextPattern, VK_ADD, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPrevSequence, VK_OEM_MINUS, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPrevSequence, VK_SUBTRACT, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNextSequence, VK_OEM_PLUS, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcNextSequence, VK_ADD, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcVPNoteC_0, 16 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteCS0, 17 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteD_0, 18 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteDS0, 19 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteE_0, 20 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteF_0, 21 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteFS0, 22 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteG_0, 23 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteGS0, 24 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteA_1, 25 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteAS1, 26 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteB_1, 27 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteC_1, 30 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteCS1, 31 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteD_1, 32 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteDS1, 33 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteE_1, 34 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteF_1, 35 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteFS1, 36 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteG_1, 37 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteGS1, 38 | 0x8000, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcVPNoteA_2, 39 | 0x8000, ModNone, kKeyEventDown, MPT_... [truncated message content] |
From: <sv...@op...> - 2024-11-25 17:51:07
|
Author: sagamusix Date: Mon Nov 25 18:50:54 2024 New Revision: 22303 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22303 Log: [Mod/Fix] No longer infer a key command's input context from either the key config dialog or from the contents of MKB files. Reassign command input context whenever a command is added to the key map instead. This avoids commands ending up in the wrong key context in case they are read from a malformed MKB file, and avoids bugs like the one fixed in r22257. Modified: trunk/OpenMPT/mptrack/CommandSet.cpp trunk/OpenMPT/mptrack/CommandSet.h trunk/OpenMPT/mptrack/KeyConfigDlg.cpp trunk/OpenMPT/mptrack/MainFrm.cpp Modified: trunk/OpenMPT/mptrack/CommandSet.cpp ============================================================================== --- trunk/OpenMPT/mptrack/CommandSet.cpp Mon Nov 25 18:32:01 2024 (r22302) +++ trunk/OpenMPT/mptrack/CommandSet.cpp Mon Nov 25 18:50:54 2024 (r22303) @@ -33,15 +33,15 @@ kcSelect, kcCopySelect, kcChordModifier, kcSetSpacing }; -constexpr std::tuple<InputTargetContext, CommandID, CommandID> NoteContexts[] = +constexpr std::pair<CommandID, CommandID> NoteRanges[] = { - {kCtxViewPatternsNote, kcVPStartNotes, kcVPStartNoteStops}, - {kCtxViewSamples, kcSampStartNotes, kcSampStartNoteStops}, - {kCtxViewInstruments, kcInstrumentStartNotes, kcInstrumentStartNoteStops}, - {kCtxViewTree, kcTreeViewStartNotes, kcTreeViewStartNoteStops}, - {kCtxInsNoteMap, kcInsNoteMapStartNotes, kcInsNoteMapStartNoteStops}, - {kCtxVSTGUI, kcVSTGUIStartNotes, kcVSTGUIStartNoteStops}, - {kCtxViewComments, kcCommentsStartNotes, kcCommentsStartNoteStops}, + {kcVPStartNotes, kcVPStartNoteStops}, + {kcSampStartNotes, kcSampStartNoteStops}, + {kcInstrumentStartNotes, kcInstrumentStartNoteStops}, + {kcTreeViewStartNotes, kcTreeViewStartNoteStops}, + {kcInsNoteMapStartNotes, kcInsNoteMapStartNoteStops}, + {kcVSTGUIStartNotes, kcVSTGUIStartNoteStops}, + {kcCommentsStartNotes, kcCommentsStartNoteStops}, }; struct DefaultKeybinding @@ -50,629 +50,628 @@ uint16 key; // Virtual key code, or scan code if high bit is set FlagSet<Modifiers> modifiers; FlagSet<KeyEventType> events; - InputTargetContext ctx; Version addedInVersion; }; constexpr DefaultKeybinding DefaultKeybindings[] = // clang-format off { - {kcFileNew, 'N', ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcFileOpen, 'O', ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcFileClose, 'W', ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxAllContexts, MPT_V("1.31")}, - {kcFileCloseAll, 'W', ModShift | ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcFileSave, 'S', ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcFileSaveAs, 'S', ModShift | ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcPrevDocument, VK_BROWSER_BACK, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcNextDocument, VK_BROWSER_FORWARD, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcPlayPauseSong, VK_F5, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcPauseSong, VK_F8, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcStopSong, VK_ESCAPE, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcPlaySongFromStart, VK_F6, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcPlaySongFromCursor, VK_F6, ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcPlayPatternFromStart, VK_F7, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcPlayPatternFromCursor, VK_F7, ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcMidiRecord, VK_F9, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcEditUndo, 'Z', ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcEditRedo, 'Y', ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcEditRedo, 'Z', ModShift | ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.32.00.25")}, - {kcEditCut, 'X', ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcEditCopy, 'C', ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcEditPaste, 'V', ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcEditPaste, VK_INSERT, ModShift, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcEditMixPaste, 'V', ModShift | ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcEditPasteFlood, 'V', ModShift, kKeyEventDown | kKeyEventRepeat, kCtxAllContexts, MPT_V("1.31")}, - {kcEditPushForwardPaste, 'V', ModCtrl | ModAlt, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcEditSelectAll, '5', ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcEditFind, 'F', ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcEditFindNext, VK_F3, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcViewGeneral, 'G', ModAlt, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcViewPattern, 'P', ModAlt, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcViewSamples, 'S', ModAlt, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcViewInstruments, 'N', ModAlt, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcViewComments, VK_F9, ModShift, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcViewComments, 'C', ModAlt, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcViewTree, VK_F2, ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcViewOptions, VK_F1, ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcViewMIDImapping, VK_F3, ModCtrl, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcSwitchToInstrLibrary, 'I', ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxAllContexts, MPT_V("1.31")}, - {kcHelp, VK_F1, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcContextMenu, VK_APPS, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.32.00.25")}, - {kcContextMenu, VK_F10, ModShift, kKeyEventDown, kCtxAllContexts, MPT_V("1.32.00.25")}, - {kcPrevInstrument, VK_DIVIDE, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxAllContexts, MPT_V("1.31")}, - {kcPrevInstrument, VK_UP, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxAllContexts, MPT_V("1.31")}, - {kcNextInstrument, VK_MULTIPLY, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxAllContexts, MPT_V("1.31")}, - {kcNextInstrument, VK_DOWN, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxAllContexts, MPT_V("1.31")}, - {kcPrevOctave, VK_DIVIDE, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcNextOctave, VK_MULTIPLY, ModNone, kKeyEventDown, kCtxAllContexts, MPT_V("1.31")}, - {kcPrevOrder, VK_LEFT, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxAllContexts, MPT_V("1.31")}, - {kcNextOrder, VK_RIGHT, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxAllContexts, MPT_V("1.31")}, - {kcPatternJumpDownh1, VK_NEXT, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternJumpUph1, VK_PRIOR, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternJumpDownh2, VK_NEXT, ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternJumpUph2, VK_PRIOR, ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternSnapDownh2, VK_NEXT, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternSnapUph2, VK_PRIOR, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPrevEntryInColumn, VK_UP, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNextEntryInColumn, VK_DOWN, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNavigateDown, VK_DOWN, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNavigateUp, VK_UP, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNavigateDownBySpacing, VK_DOWN, ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNavigateUpBySpacing, VK_UP, ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNavigateLeft, VK_LEFT, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNavigateRight, VK_RIGHT, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNavigateNextChan, VK_TAB, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNavigatePrevChan, VK_TAB, ModShift, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcHomeHorizontal, VK_HOME, ModNone, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcHomeVertical, VK_HOME, ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcHomeAbsolute, VK_HOME, ModCtrl | ModAlt, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcEndHorizontal, VK_END, ModNone, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcEndVertical, VK_END, ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcEndAbsolute, VK_END, ModCtrl | ModAlt, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcSelect, VK_SHIFT, ModShift, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcCopySelect, VK_CONTROL, ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcSelectChannel, 'L', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcSelectColumn, 'L', ModShift | ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcSelectBeat, 'B', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcSelectMeasure, 'B', ModShift | ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcToggleFollowSong, VK_CANCEL, ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcToggleFollowSong, VK_SCROLL, ModNone, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcToggleFollowSong, VK_F11, ModNone, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcCursorCopy, VK_RETURN, ModNone, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcCursorPaste, VK_SPACE, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternRecord, VK_SPACE, ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternPlayRow, VK_RETURN, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcSetSpacing, VK_MENU, ModAlt, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcSwitchToOrderList, VK_TAB, ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcDuplicatePattern, 'D', ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternEditPCNotePlugin, VK_OEM_2, ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcTogglePluginEditor, 'P', ModCtrl | ModAlt, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcShowNoteProperties, VK_APPS, ModNone, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcShowPatternProperties, 'P', ModShift | ModAlt, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcShowSplitKeyboardSettings, 'E', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcChangeLoopStatus, VK_F11, ModShift, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcTimeAtRow, 'P', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcQuantizeSettings, 'Q', ModAlt, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcToggleClipboardManager, 'M', ModShift | ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcClipboardPrev, VK_LEFT, ModShift | ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcClipboardNext, VK_RIGHT, ModShift | ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcChannelMute, VK_F10, ModNone, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcChannelSolo, VK_F10, ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcChannelUnmuteAll, VK_F10, ModCtrl | ModAlt, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcChannelRecordSelect, '1', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcChannelSplitRecordSelect, '2', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcChannelReset, 'R', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcTransposeUp, 'Q', ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcTransposeDown, 'A', ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcTransposeOctUp, 'Q', ModShift | ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcTransposeOctDown, 'A', ModShift | ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcTransposeCustom, 'T', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcDataEntryUp, VK_ADD, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcDataEntryUp, VK_OEM_PLUS, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcDataEntryDown, VK_SUBTRACT, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcDataEntryDown, VK_OEM_MINUS, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcDataEntryUpCoarse, VK_ADD, ModShift | ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcDataEntryUpCoarse, VK_OEM_PLUS, ModShift | ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcDataEntryDownCoarse, VK_SUBTRACT, ModShift | ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcDataEntryDownCoarse, VK_OEM_MINUS, ModShift | ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternAmplify, 'M', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternInterpolateVol, 'J', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternInterpolateEffect, 'K', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternVisualizeEffect, 'B', ModAlt, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternGoto, 'G', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternSetInstrument, 'I', ModCtrl, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternGrowSelection, 'E', ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPatternShrinkSelection, 'D', ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcClearField, VK_DELETE, ModNone, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcClearFieldITStyle, VK_OEM_PERIOD, ModShift, kKeyEventDown, kCtxViewPatterns, MPT_V("1.31")}, - {kcClearRowStep, VK_DELETE, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcClearFieldStepITStyle, VK_DELETE, ModShift, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcDeleteRow, VK_BACK, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcDeleteWholeRow, VK_BACK, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcDeleteRowGlobal, VK_BACK, ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcDeleteWholeRowGlobal, VK_BACK, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcInsertRow, VK_INSERT, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcInsertWholeRow, VK_INSERT, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcInsertRowGlobal, VK_INSERT, ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcInsertWholeRowGlobal, VK_INSERT, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPrevPattern, VK_SUBTRACT, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNextPattern, VK_ADD, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPrevSequence, VK_OEM_MINUS, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcPrevSequence, VK_SUBTRACT, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNextSequence, VK_OEM_PLUS, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcNextSequence, VK_ADD, ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, kCtxViewPatterns, MPT_V("1.31")}, - {kcVPNoteC_0, 16 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteCS0, 17 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteD_0, 18 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteDS0, 19 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteE_0, 20 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteF_0, 21 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteFS0, 22 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteG_0, 23 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteGS0, 24 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteA_1, 25 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteAS1, 26 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteB_1, 27 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteC_1, 30 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteCS1, 31 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteD_1, 32 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteDS1, 33 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteE_1, 34 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteF_1, 35 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteFS1, 36 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteG_1, 37 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteGS1, 38 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteA_2, 39 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteAS2, 40 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteB_2, 43 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteC_2, 44 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteCS2, 45 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteD_2, 46 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteDS2, 47 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteE_2, 48 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteF_2, 49 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteFS2, 50 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteG_2, 51 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteGS2, 52 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcVPNoteA_3, 53 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave0, '0', ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave0, VK_NUMPAD0, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave1, '1', ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave1, VK_NUMPAD1, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave2, '2', ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave2, VK_NUMPAD2, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave3, '3', ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave3, VK_NUMPAD3, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave4, '4', ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave4, VK_NUMPAD4, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave5, '5', ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave5, VK_NUMPAD5, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave6, '6', ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave6, VK_NUMPAD6, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave7, '7', ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave7, VK_NUMPAD7, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave8, '8', ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave8, VK_NUMPAD8, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave9, '9', ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcSetOctave9, VK_NUMPAD9, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcChordModifier, VK_SHIFT, ModShift, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcNoteCut, VK_OEM_3, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcNoteCut, 41 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31.12.02")}, - {kcNoteOff, VK_OEM_PLUS, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcNoteOff, 13 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31.12.02")}, - {kcNoteFade, VK_OEM_PLUS, ModShift, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcNoteFade, 13 | 0x8000, ModShift, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31.12.02")}, - {kcNotePC, VK_OEM_MINUS, ModShift, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcNotePC, 12 | 0x8000, ModShift, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31.12.02")}, - {kcNotePCS, VK_OEM_MINUS, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31")}, - {kcNotePCS, 12 | 0x8000, ModNone, kKeyEventDown, kCtxViewPatternsNote, MPT_V("1.31.12.02")}, - {kcSetIns0, VK_NUMPAD0, ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns0, '0', ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns1, VK_NUMPAD1, ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns1, '1', ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns2, VK_NUMPAD2, ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns2, '2', ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns3, VK_NUMPAD3, ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns3, '3', ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns4, VK_NUMPAD4, ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns4, '4', ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns5, VK_NUMPAD5, ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns5, '5', ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns6, VK_NUMPAD6, ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns6, '6', ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns7, VK_NUMPAD7, ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns7, '7', ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns8, VK_NUMPAD8, ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns8, '8', ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns9, VK_NUMPAD9, ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetIns9, '9', ModNone, kKeyEventDown, kCtxViewPatternsIns, MPT_V("1.31")}, - {kcSetVolume0, '0', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume0, VK_NUMPAD0, ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume1, '1', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume1, VK_NUMPAD1, ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume2, '2', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume2, VK_NUMPAD2, ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume3, '3', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume3, VK_NUMPAD3, ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume4, '4', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume4, VK_NUMPAD4, ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume5, '5', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume5, VK_NUMPAD5, ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume6, '6', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume6, VK_NUMPAD6, ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume7, '7', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume7, VK_NUMPAD7, ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume8, '8', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume8, VK_NUMPAD8, ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume9, '9', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolume9, VK_NUMPAD9, ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeVol, 'V', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumePan, 'P', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeVolSlideUp, 'C', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeVolSlideDown, 'D', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeFineVolUp, 'A', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeFineVolDown, 'B', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeVibratoSpd, 'U', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeVibrato, 'H', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeXMPanLeft, 'L', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeXMPanRight, 'R', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumePortamento, 'G', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeITPortaUp, 'F', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeITPortaDown, 'E', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetVolumeITOffset, 'O', ModNone, kKeyEventDown, kCtxViewPatternsVol, MPT_V("1.31")}, - {kcSetFXmacroSlide, VK_OEM_5, ModNone, kKeyEventDown, kCtxViewPatternsFX, MPT_V("1.31")}, - {kcSetFXdelaycut, VK_OEM_1, ModShift, kKeyEventDown, kCtxViewPatternsFX, MPT_V("1.31")}, - {kcSetFXdelaycut, VK_OEM_1, ModNone, kKeyEventDown, kCtxViewPatternsFX, MPT_V("1.31")}, - {kcSetFXextension, VK_OEM_2, ModNone, kKeyEventDown, kCtxViewPatternsFX, MPT_V("1.31")}, - {kcSetFXFinetune, VK_OEM_PLUS, ModNone, kKeyEventDown, kCtxViewPatternsFX, MPT_V("1.31")}, - {kcSetFXFinetuneSmooth, VK_OEM_PLUS, ModShift, kKeyEventDown, kCtxViewPatternsFX, MPT_V("1.31")}, - {kcSetFXParam0, '0', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam0, VK_NUMPAD0, ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam1, '1', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam1, VK_NUMPAD1, ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam2, '2', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam2, VK_NUMPAD2, ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam3, '3', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam3, VK_NUMPAD3, ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam4, '4', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam4, VK_NUMPAD4, ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam5, '5', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam5, VK_NUMPAD5, ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam6, '6', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam6, VK_NUMPAD6, ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam7, '7', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam7, VK_NUMPAD7, ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam8, '8', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam8, VK_NUMPAD8, ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam9, '9', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParam9, VK_NUMPAD9, ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParamA, 'A', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParamB, 'B', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParamC, 'C', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParamD, 'D', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParamE, 'E', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSetFXParamF, 'F', ModNone, kKeyEventDown, kCtxViewPatternsFXparam, MPT_V("1.31")}, - {kcSampleLoad, VK_RETURN, ModNone, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleLoadRaw, VK_RETURN, ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleTransposeUp, 'Q', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleTransposeDown, 'A', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleTransposeOctUp, 'Q', ModShift | ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleTransposeOctDown, 'A', ModShift | ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleFinetuneUp, VK_UP, ModShift, kKeyEventDown | kKeyEventRepeat, kCtxViewSamples, MPT_V("1.31.00.26")}, - {kcSampleFinetuneDown, VK_DOWN, ModShift, kKeyEventDown | kKeyEventRepeat, kCtxViewSamples, MPT_V("1.31.00.26")}, - {kcSampleToggleFollowPlayCursor, 'F', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31.00.19")}, - {kcSampleTrim, 'T', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleTrimToLoopEnd, 'T', ModShift | ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleSilence, VK_BACK, ModNone, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleNormalize, 'N', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleAmplify, 'M', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleReverse, 'R', ModShift | ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleDelete, VK_DELETE, ModNone, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleZoomUp, VK_ADD, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleZoomUp, VK_OEM_PLUS, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleZoomDown, VK_SUBTRACT, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleZoomDown, VK_OEM_MINUS, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleZoomSelection, VK_SPACE, ModNone, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleCenterSampleStart, '1', ModNone, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleCenterSampleEnd, '2', ModNone, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleCenterLoopStart, '1', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleCenterLoopEnd, '2', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleCenterSustainStart, '3', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleCenterSustainEnd, '4', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSample8Bit, '8', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleMonoMix, 'M', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleMonoLeft, 'L', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleMonoRight, 'R', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleMonoSplit, 'S', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleStereoSep, 'P', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleUpsample, 'F', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleDownsample, 'G', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleResample, 'R', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleInvert, 'I', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleSignUnsign, 'U', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleRemoveDCOffset, 'E', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleQuickFade, 'D', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcSampleXFade, 'L', ModCtrl, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {CommandID(kcStartSampleCues + 0), '1', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {CommandID(kcStartSampleCues + 1), '2', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {CommandID(kcStartSampleCues + 2), '3', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {CommandID(kcStartSampleCues + 3), '4', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {CommandID(kcStartSampleCues + 4), '5', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {CommandID(kcStartSampleCues + 5), '6', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {CommandID(kcStartSampleCues + 6), '7', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {CommandID(kcStartSampleCues + 7), '8', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {CommandID(kcStartSampleCues + 8), '9', ModShift, kKeyEventDown, kCtxViewSamples, MPT_V("1.31")}, - {kcInstrumentEnvelopeZoomIn, VK_ADD, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeZoomIn, VK_OEM_PLUS, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeZoomOut, VK_SUBTRACT, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeZoomOut, VK_OEM_MINUS, ModCtrl, kKeyEventDown | kKeyEventRepeat, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeScale, 'E', ModCtrl, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeSwitchToVolume, 'M', ModShift, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeSwitchToPanning, 'P', ModShift, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeSwitchToPitch, 'I', ModShift, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeToggleVolume, 'M', ModShift | ModCtrl, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeTogglePanning, 'P', ModShift | ModCtrl, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeTogglePitch, 'I', ModShift | ModCtrl, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeToggleFilter, 'F', ModShift | ModCtrl, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeToggleLoop, 'L', ModShift, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeSelectLoopStart, VK_HOME, ModShift, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeSelectLoopEnd, VK_END, ModShift, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeToggleSustain, 'L', ModShift | ModCtrl, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeSelectSustainStart, VK_HOME, ModShift | ModCtrl, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeSelectSustainEnd, VK_END, ModShift | ModCtrl, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopeToggleCarry, 'C', ModShift | ModCtrl, kKeyEventDown, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopePointPrev, VK_TAB, ModShift, kKeyEventDown | kKeyEventRepeat, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopePointNext, VK_TAB, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewInstruments, MPT_V("1.31")}, - {kcInstrumentEnvelopePointMoveLeft, VK_LEFT, ModNone, kKeyEventDown | kKeyEventRepeat, kCtxViewInstruments, MPT_V("1... [truncated message content] |
From: <sv...@op...> - 2024-11-25 17:32:16
|
Author: sagamusix Date: Mon Nov 25 18:32:01 2024 New Revision: 22302 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22302 Log: [Imp] Quick Start: Allow multi selection in file list. Modified: trunk/OpenMPT/mptrack/QuickStartDialog.cpp trunk/OpenMPT/mptrack/QuickStartDialog.h trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/QuickStartDialog.cpp ============================================================================== --- trunk/OpenMPT/mptrack/QuickStartDialog.cpp Mon Nov 25 00:02:02 2024 (r22301) +++ trunk/OpenMPT/mptrack/QuickStartDialog.cpp Mon Nov 25 18:32:01 2024 (r22302) @@ -33,6 +33,7 @@ ON_NOTIFY(NM_DBLCLK, IDC_LIST1, &QuickStartDlg::OnOpenFile) ON_NOTIFY(NM_RCLICK, IDC_LIST1, &QuickStartDlg::OnRightClickFile) + ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, &QuickStartDlg::OnItemChanged) END_MESSAGE_MAP() @@ -41,7 +42,6 @@ ResizableDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_BUTTON1, m_newButton); DDX_Control(pDX, IDC_BUTTON2, m_openButton); - DDX_Control(pDX, IDCANCEL, m_closeButton); DDX_Control(pDX, IDC_LIST1, m_list); DDX_Control(pDX, IDC_EDIT1, m_find); } @@ -51,7 +51,6 @@ { m_newButton.SetAccessibleText(_T("New Module")); m_openButton.SetAccessibleText(_T("Open Module")); - m_closeButton.SetAccessibleText(_T("Close")); Create(IDD_QUICKSTART, parent); m_groupsEnabled = m_list.EnableGroupView(); @@ -98,11 +97,11 @@ m_paths[groupId] = PathGroups[groupId].first; } UpdateFileList(); - m_list.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED); m_list.SetColumnWidth(0, LVSCW_AUTOSIZE); m_list.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER); m_list.SetRedraw(TRUE); m_list.Invalidate(FALSE); + OnItemChanged(nullptr, nullptr); UpdateHeight(); } @@ -133,10 +132,6 @@ m_list.SetColumnWidth(0, LVSCW_AUTOSIZE); m_list.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER); - m_buttonFont.DeleteObject(); - m_buttonFont.CreateFont(mpt::saturate_round<int>(14 * scaling), 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, _T("Marlett")); - m_closeButton.SetFont(&m_buttonFont); - m_bmpNew.DeleteObject(); m_bmpOpen.DeleteObject(); @@ -158,30 +153,20 @@ } -INT_PTR QuickStartDlg::OnToolHitTest(CPoint point, TOOLINFO *pTI) const -{ - auto result = ResizableDialog::OnToolHitTest(point, pTI); - if(result == IDCANCEL) - { - // MFC will free() the text - mpt::tstring text = _T("Close"); - TCHAR *textP = static_cast<TCHAR *>(calloc(text.size() + 1, sizeof(TCHAR))); - std::copy(text.begin(), text.end(), textP); - pTI->lpszText = textP; - } - return result; -} - - BOOL QuickStartDlg::PreTranslateMessage(MSG *pMsg) { // Use up/down keys to navigate in list, even if search field is focussed. This also skips the group headers during navigation if(pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_UP || pMsg->wParam == VK_DOWN) && GetFocus() == &m_find) { - m_list.ModifyStyle(0, LVS_SHOWSELALWAYS); - int selItem = std::clamp(m_list.GetSelectionMark() + (pMsg->wParam == VK_UP ? -1 : 1), 0, m_list.GetItemCount() - 1); - m_list.SetItemState(selItem, LVIS_SELECTED, LVIS_SELECTED); - m_list.SetSelectionMark(selItem); + const int curSel = m_list.GetSelectionMark(); + const int selItem = std::clamp(curSel + (pMsg->wParam == VK_UP ? -1 : 1), 0, m_list.GetItemCount() - 1); + if(curSel != selItem) + { + if(curSel != -1) + m_list.SetItemState(curSel, 0, LVIS_SELECTED); + m_list.SetItemState(selItem, LVIS_SELECTED, LVIS_SELECTED); + m_list.SetSelectionMark(selItem); + } return TRUE; } @@ -203,7 +188,7 @@ viewRect.bottom += itemRect.Height() * 2; // View height calculation seems to be a bit off and would still cause a vertical scrollbar to appear without this adjustment if(viewRect.bottom > listRect.bottom) windowRect.bottom += viewRect.bottom - listRect.bottom; - const int maxHeight = Util::muldiv(parentRect.bottom, 9, 10); + const int maxHeight = std::max(HighDPISupport::ScalePixels(154, m_hWnd), Util::muldiv(parentRect.bottom, 9, 10)); LimitMax(windowRect.bottom, maxHeight); HighDPISupport::AdjustWindowRectEx(windowRect, GetStyle(), FALSE, GetExStyle(), GetDPI()); SetWindowPos(nullptr, 0, 0, windowRect.Width(), windowRect.Height(), SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOMOVE); @@ -232,22 +217,23 @@ void QuickStartDlg::OnOK() { - if(const CWnd *focus = GetFocus(); focus == &m_list || focus == &m_find) - OnOpenFile(nullptr, nullptr); + OnOpenFile(nullptr, nullptr); } void QuickStartDlg::OnRemoveMRUItem() { - const int index = m_list.GetSelectionMark(); - if(index < 0) - return; - auto &mruFiles= TrackerSettings::Instance().mruFiles; - if(static_cast<size_t>(index) >= mruFiles.size()) - return; - mruFiles.erase(mruFiles.begin() + index); - m_paths[GetItemGroup(index)][GetItemIndex(index)] = {}; - m_list.DeleteItem(index); + auto &mruFiles = TrackerSettings::Instance().mruFiles; + int i = -1; + while((i = m_list.GetNextItem(i, LVNI_SELECTED | LVNI_ALL)) != -1) + { + if(GetItemGroup(i) != 0) + continue; + mruFiles.erase(mruFiles.begin() + i); + m_paths[0][GetItemIndex(i)] = {}; + m_list.DeleteItem(i); + i--; + } CMainFrame::GetMainFrame()->UpdateMRUList(); } @@ -268,15 +254,18 @@ void QuickStartDlg::OnUpdateFilter() { m_list.SetRedraw(FALSE); + LPARAM highlight = LPARAM(-1); + if(int sel = m_list.GetSelectionMark(); sel != -1) + highlight = m_list.GetItemData(sel); m_list.DeleteAllItems(); CString filter; m_find.GetWindowText(filter); - UpdateFileList(filter); + UpdateFileList(highlight, filter); m_list.SetRedraw(TRUE); } -void QuickStartDlg::UpdateFileList(CString filter) +void QuickStartDlg::UpdateFileList(LPARAM highlight, CString filter) { const bool applyFilter = !filter.IsEmpty(); if(applyFilter) @@ -293,6 +282,7 @@ lvi.iImage = TIMAGE_MODULE_FILE; lvi.iIndent = 0; + bool highlightFound = false; int itemId = -1; for(size_t groupId = 0; groupId < m_paths.size(); groupId++) { @@ -307,29 +297,57 @@ lvi.pszText = const_cast<TCHAR *>(filename.c_str()); m_list.InsertItem(&lvi); m_list.SetItemText(itemId, 1, m_paths[groupId][i].GetDirectoryWithDrive().AsNative().c_str()); + if(lvi.lParam == highlight) + { + m_list.SetItemState(itemId, LVIS_SELECTED, LVIS_SELECTED); + m_list.SetSelectionMark(itemId); + highlightFound = true; + } } } + if(!highlightFound) + { + m_list.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED); + m_list.SetSelectionMark(0); + } } void QuickStartDlg::OnOpenFile(NMHDR *, LRESULT *) { - const int i = m_list.GetSelectionMark(); - if(i < 0) - return; - const size_t index = GetItemIndex(i); - const int group = GetItemGroup(i); - const auto &path = m_paths[group][index]; - CDocument *doc = nullptr; - if(group != 1) - doc = theApp.OpenDocumentFile(path.ToCString()); - else - doc = theApp.OpenTemplateFile(path); + struct OpenItem + { + const mpt::PathString path; // Must create copy because dialog will get destroyed after successfully loading the first file + const int item; + const int group; + const size_t index; + }; + std::vector<OpenItem> files; + int i = -1; + while((i = m_list.GetNextItem(i, LVNI_SELECTED | LVNI_ALL)) != -1) + { + const int group = GetItemGroup(i); + const size_t index = GetItemIndex(i); + const auto &path = m_paths[group][index]; + files.push_back({path, i, group, index}); + } + bool success = false; + for(const auto &item : files) + { + if(item.group != 1) + success |= (theApp.OpenDocumentFile(item.path.ToCString()) != nullptr); + else + success |= (theApp.OpenTemplateFile(item.path) != nullptr); + } - if(!doc) + if(!success) { - m_list.DeleteItem(i); - m_paths[group][i] = {}; + // If at least one item managed to load, the dialog will now be destroyed, and there are no items to delete from the list + for(auto it = files.rbegin(); it != files.rend(); it++) + { + m_paths[it->group][it->index] = {}; + m_list.DeleteItem(it->item); + } } } @@ -352,4 +370,10 @@ menu.DestroyMenu(); } + +void QuickStartDlg::OnItemChanged(NMHDR *, LRESULT *) +{ + GetDlgItem(IDOK)->EnableWindow(m_list.GetSelectedCount() != 0 ? TRUE : FALSE); +} + OPENMPT_NAMESPACE_END Modified: trunk/OpenMPT/mptrack/QuickStartDialog.h ============================================================================== --- trunk/OpenMPT/mptrack/QuickStartDialog.h Mon Nov 25 00:02:02 2024 (r22301) +++ trunk/OpenMPT/mptrack/QuickStartDialog.h Mon Nov 25 18:32:01 2024 (r22302) @@ -30,12 +30,11 @@ void DoDataExchange(CDataExchange *pDX) override; BOOL OnInitDialog() override; void OnDPIChanged() override; - INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const override; BOOL PreTranslateMessage(MSG *pMsg) override; void OnOK() override; void OnCancel() override { DestroyWindow(); } - void UpdateFileList(CString filter = {}); + void UpdateFileList(LPARAM highlight = LPARAM(-1), CString filter = {}); size_t GetItemIndex(int index) const { return static_cast<size_t>(m_list.GetItemData(index) & 0x00FF'FFFF); } int GetItemGroup(int index) const { return static_cast<int>(m_list.GetItemData(index) >> 24); } @@ -47,13 +46,13 @@ afx_msg void OnUpdateFilter(); afx_msg void OnOpenFile(NMHDR *, LRESULT *); afx_msg void OnRightClickFile(NMHDR *, LRESULT *); + afx_msg void OnItemChanged(NMHDR *, LRESULT *); DECLARE_MESSAGE_MAP() CListCtrlEx m_list; CEdit m_find; - AccessibleButton m_newButton, m_openButton, m_closeButton; - CFont m_buttonFont; + AccessibleButton m_newButton, m_openButton; CBitmap m_bmpNew, m_bmpOpen; std::array<std::vector<mpt::PathString>, 3> m_paths; CSize m_prevSize; Modified: trunk/OpenMPT/mptrack/mptrack.rc ============================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc Mon Nov 25 00:02:02 2024 (r22301) +++ trunk/OpenMPT/mptrack/mptrack.rc Mon Nov 25 18:32:01 2024 (r22302) @@ -2304,17 +2304,18 @@ LTEXT "Warning: Only samples are affected by these settings! Modifying them will change the balance between samples and plugins in songs with mix levels set to 1.17RC2 or earlier in the Song Properties! ",IDC_STATIC,12,222,252,30 END -IDD_QUICKSTART DIALOGEX 0, 0, 332, 185 +IDD_QUICKSTART DIALOGEX 0, 0, 332, 211 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_CHILD | WS_CLIPSIBLINGS EXSTYLE WS_EX_CONTROLPARENT | WS_EX_NOACTIVATE FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - PUSHBUTTON " &New Module",IDC_BUTTON1,6,6,90,30 - PUSHBUTTON " &Open Module",IDC_BUTTON2,108,6,90,30 - LTEXT "F&ind:",IDC_STATIC,6,45,30,8 - EDITTEXT IDC_EDIT1,36,42,285,14,ES_AUTOHSCROLL - CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,6,60,315,114 - PUSHBUTTON "r",IDCANCEL,308,6,13,12,BS_VCENTER + PUSHBUTTON " &New Module",IDC_BUTTON1,10,9,90,30 + PUSHBUTTON " &Open Module",IDC_BUTTON2,108,9,90,30 + LTEXT "F&ind:",IDC_STATIC,10,48,30,8 + EDITTEXT IDC_EDIT1,36,45,285,14,ES_AUTOHSCROLL + CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,10,65,311,109 + PUSHBUTTON "&Close",IDCANCEL,261,184,60,18,BS_VCENTER + DEFPUSHBUTTON "Open &Selected",IDOK,195,184,60,18 END @@ -2583,10 +2584,10 @@ IDD_QUICKSTART, DIALOG BEGIN - LEFTMARGIN, 6 + LEFTMARGIN, 10 RIGHTMARGIN, 321 - TOPMARGIN, 6 - BOTTOMMARGIN, 174 + TOPMARGIN, 9 + BOTTOMMARGIN, 202 END END #endif // APSTUDIO_INVOKED @@ -2752,7 +2753,8 @@ 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 100, 100, - 100, 0, 0, 0 + 100, 100, 0, 0, + 100, 100, 0, 0 END |
From: <sv...@op...> - 2024-11-24 23:02:09
|
Author: sagamusix Date: Mon Nov 25 00:02:02 2024 New Revision: 22301 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22301 Log: [Fix] Missing file in previous commit. Modified: trunk/OpenMPT/mptrack/PatternFindReplace.cpp Modified: trunk/OpenMPT/mptrack/PatternFindReplace.cpp ============================================================================== --- trunk/OpenMPT/mptrack/PatternFindReplace.cpp Mon Nov 25 00:00:42 2024 (r22300) +++ trunk/OpenMPT/mptrack/PatternFindReplace.cpp Mon Nov 25 00:02:02 2024 (r22301) @@ -353,7 +353,7 @@ if(FindReplace::instance.replaceVolumeAction == FindReplace::ReplaceRelative || FindReplace::instance.replaceVolumeAction == FindReplace::ReplaceMultiply) { if(!hadVolume && m->volcmd == VOLCMD_VOLUME) - vol = GetDefaultVolume(*m, lastInstr[chn]); + vol = GetDefaultVolume(*m, lastInstr[chn]).value_or(64); if(FindReplace::instance.replaceVolumeAction == FindReplace::ReplaceRelative) vol += volReplace; @@ -394,7 +394,7 @@ param &= 0x0F; if(!hadVolume && m->command == CMD_VOLUME) - param = GetDefaultVolume(*m, lastInstr[chn]); + param = GetDefaultVolume(*m, lastInstr[chn]).value_or(64); if(FindReplace::instance.replaceParamAction == FindReplace::ReplaceRelative) param += paramReplace; |
From: <sv...@op...> - 2024-11-24 23:00:54
|
Author: sagamusix Date: Mon Nov 25 00:00:42 2024 New Revision: 22300 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22300 Log: [Fix] Pattern tab: Drawing of default volume for instrument plugins was broken since r22138. Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Draw_pat.cpp Sun Nov 24 23:29:16 2024 (r22299) +++ trunk/OpenMPT/mptrack/Draw_pat.cpp Mon Nov 25 00:00:42 2024 (r22300) @@ -476,7 +476,7 @@ } -void CViewPattern::DrawVolumeCommand(int x, int y, const ModCommand &mc, bool drawDefaultVolume, bool hex) +void CViewPattern::DrawVolumeCommand(int x, int y, const ModCommand &mc, std::optional<int> defaultVolume, bool hex) { const PATTERNFONT *pfnt = PatternFont::currentFont; @@ -497,11 +497,11 @@ ModCommand::VOLCMD volcmd = mc.volcmd; int vol = (mc.vol & 0x7F); - if(drawDefaultVolume) + if(defaultVolume) { // Displaying sample default volume if there is no volume command. volcmd = VOLCMD_VOLUME; - vol = GetDefaultVolume(mc); + vol = *defaultVolume; } if(volcmd != VOLCMD_NONE && volcmd < MAX_VOLCMDS) @@ -989,13 +989,13 @@ const ModCommand *m = pattern.GetpModCommand(row, static_cast<CHANNELINDEX>(col)); // Should empty volume commands be replaced with a volume command showing the default volume? - const bool drawDefaultVolume = (patternSetupFlags & PATTERN_SHOWDEFAULTVOLUME) && DrawDefaultVolume(*m, sndFile); + const auto defaultVolume = (patternSetupFlags & PATTERN_SHOWDEFAULTVOLUME) ? DrawDefaultVolume(*m) : std::nullopt; DWORD dwSpeedUpMask = 0; if(useSpeedUpMask && (m_chnState[col].selectedCols & COLUMN_BITS_SKIP) && (row)) { const ModCommand *mold = m - ncols; - const bool drawOldDefaultVolume = (patternSetupFlags & PATTERN_SHOWDEFAULTVOLUME) && DrawDefaultVolume(*mold, sndFile); + const auto oldDefaultVolume = (patternSetupFlags & PATTERN_SHOWDEFAULTVOLUME) ? DrawDefaultVolume(*mold) : std::nullopt; if(m->note == mold->note || !m_visibleColumns[PatternCursor::noteColumn]) dwSpeedUpMask |= COLUMN_BITS_NOTE; @@ -1013,7 +1013,7 @@ } } else { - if ((m->volcmd == mold->volcmd && (m->volcmd == VOLCMD_NONE || m->vol == mold->vol) && !drawDefaultVolume && !drawOldDefaultVolume) || !m_visibleColumns[PatternCursor::volumeColumn]) + if ((m->volcmd == mold->volcmd && (m->volcmd == VOLCMD_NONE || m->vol == mold->vol) && !defaultVolume && !oldDefaultVolume) || !m_visibleColumns[PatternCursor::volumeColumn]) dwSpeedUpMask |= COLUMN_BITS_VOLUME; if ((m->command == mold->command) || !m_visibleColumns[PatternCursor::effectColumn]) dwSpeedUpMask |= (m->command != CMD_NONE) ? COLUMN_BITS_FXCMD : COLUMN_BITS_FXCMDANDPARAM; @@ -1117,14 +1117,14 @@ if(m->volcmd != VOLCMD_NONE && m->volcmd < MAX_VOLCMDS && fxColor != 0) { tx_col = fxColor; - } else if(drawDefaultVolume) + } else if(defaultVolume) { tx_col = MODCOLOR_DEFAULTVOLUME; } } // Drawing Volume m_Dib.SetTextColor(tx_col, bk_col); - DrawVolumeCommand(xbmp + x, 0, *m, drawDefaultVolume, volumeColumnIsHex); + DrawVolumeCommand(xbmp + x, 0, *m, defaultVolume, volumeColumnIsHex); } x += pfnt->nEltWidths[2]; } @@ -1222,24 +1222,11 @@ } -bool CViewPattern::DrawDefaultVolume(const ModCommand &m, const CSoundFile &sndFile) +std::optional<int> CViewPattern::DrawDefaultVolume(const ModCommand &m) const { if(m.instr == 0 || m.volcmd != VOLCMD_NONE || m.command == CMD_VOLUME || m.command == CMD_VOLUME8) - return false; - // In instrument mode, we'd need to know the played for note-less instrument numbers - const bool hasNote = m.IsNote(); - if(sndFile.GetNumInstruments() && !hasNote) - return false; - const SAMPLEINDEX smp = sndFile.GetSampleIndex(m.note, m.instr); - if(smp != 0) - { - const ModSample &sample = sndFile.GetSample(smp); - if(sample.uFlags[SMP_NODEFAULTVOLUME]) - return false; - if(sndFile.GetType() == MOD_TYPE_S3M && !sample.HasSampleData()) - return false; - } - return smp != 0; + return std::nullopt; + return GetDefaultVolume(m, 0); } Modified: trunk/OpenMPT/mptrack/View_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp Sun Nov 24 23:29:16 2024 (r22299) +++ trunk/OpenMPT/mptrack/View_pat.cpp Mon Nov 25 00:00:42 2024 (r22300) @@ -2606,13 +2606,13 @@ { vcmd = destCmd.volcmd; if(vcmd == VOLCMD_VOLUME && srcCmd.IsNote() && srcCmd.instr) - vsrc = GetDefaultVolume(srcCmd); + vsrc = GetDefaultVolume(srcCmd).value_or(64); else vsrc = vdest; } else if(destCmd.volcmd == VOLCMD_NONE) { if(vcmd == VOLCMD_VOLUME && destCmd.IsNote() && destCmd.instr) - vdest = GetDefaultVolume(srcCmd); + vdest = GetDefaultVolume(srcCmd).value_or(64); else vdest = vsrc; } @@ -2994,7 +2994,7 @@ if(m.volcmd == VOLCMD_NONE && m.IsNote() && m.instr && modSpecs.HasVolCommand(VOLCMD_VOLUME)) { m.volcmd = VOLCMD_VOLUME; - m.vol = static_cast<ModCommand::VOL>(GetDefaultVolume(m)); + m.vol = static_cast<ModCommand::VOL>(GetDefaultVolume(m).value_or(64)); } int vol = m.vol + offset * (coarse ? 10 : 1); ModCommand::VOL minValue = 0, maxValue = 64; @@ -3041,16 +3041,29 @@ // Get the velocity at which a given note would be played -int CViewPattern::GetDefaultVolume(const ModCommand &m, ModCommand::INSTR lastInstr) const +std::optional<int> CViewPattern::GetDefaultVolume(const ModCommand &m, ModCommand::INSTR lastInstr) const { const CSoundFile &sndFile = *GetSoundFile(); - SAMPLEINDEX sample = GetDocument()->GetSampleIndex(m, lastInstr); - if(sample) - return std::min(sndFile.GetSample(sample).nVolume, uint16(256)) / 4u; - else if(m.instr > 0 && m.instr <= sndFile.GetNumInstruments() && sndFile.Instruments[m.instr] != nullptr && sndFile.Instruments[m.instr]->HasValidMIDIChannel()) + // In instrument mode, we'd need to know the last played note for note-less instrument numbers + const bool hasNote = m.IsNote(); + if(sndFile.GetNumInstruments() && !hasNote) + return std::nullopt; + + SAMPLEINDEX smp = GetDocument()->GetSampleIndex(m, lastInstr); + if(smp != 0) + { + const ModSample &sample = sndFile.GetSample(smp); + if(sample.uFlags[SMP_NODEFAULTVOLUME]) + return std::nullopt; + if(sndFile.GetType() == MOD_TYPE_S3M && !sample.HasSampleData()) + return std::nullopt; + else + return std::min(sample.nVolume, uint16(256)) / 4u; + } else if(m.instr > 0 && m.instr <= sndFile.GetNumInstruments() && sndFile.Instruments[m.instr] != nullptr && sndFile.Instruments[m.instr]->HasValidMIDIChannel()) + { return std::min(sndFile.Instruments[m.instr]->nGlobalVol, uint32(64)); // For instrument plugins - else - return 64; + } + return std::nullopt; } @@ -3521,7 +3534,7 @@ else if(m.volcmd == VOLCMD_VOLUME) chvol[chn] = m.vol; else if(m.instr != 0) - chvol[chn] = static_cast<ModCommand::VOL>(GetDefaultVolume(m)); + chvol[chn] = static_cast<ModCommand::VOL>(GetDefaultVolume(m).value_or(64)); }); Fade::Func fadeFunc = GetFadeFunc(settings.fadeLaw); @@ -3540,7 +3553,7 @@ else if(m.volcmd == VOLCMD_VOLUME) chvol[chn] = m.vol; else if(m.instr != 0) - chvol[chn] = static_cast<ModCommand::VOL>(GetDefaultVolume(m)); + chvol[chn] = static_cast<ModCommand::VOL>(GetDefaultVolume(m).value_or(64)); if(settings.fadeIn || settings.fadeOut || (m.IsNote() && m.instr != 0)) { Modified: trunk/OpenMPT/mptrack/View_pat.h ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.h Sun Nov 24 23:29:16 2024 (r22299) +++ trunk/OpenMPT/mptrack/View_pat.h Mon Nov 25 00:00:42 2024 (r22300) @@ -295,13 +295,13 @@ #endif void DrawNote(int x, int y, UINT note, CTuning *pTuning = nullptr); void DrawInstrument(int x, int y, UINT instr); - void DrawVolumeCommand(int x, int y, const ModCommand &mc, bool drawDefaultVolume, bool hex); + void DrawVolumeCommand(int x, int y, const ModCommand &mc, std::optional<int> defaultVolume, bool hex); void DrawChannelVUMeter(HDC hdc, int x, int y, UINT nChn); void UpdateAllVUMeters(Notification *pnotify); void DrawDragSel(HDC hdc); void OnDrawDragSel(); - // True if default volume should be drawn for a given cell. - static bool DrawDefaultVolume(const ModCommand &m, const CSoundFile &sndFile); + // Returns result of GetDefaultVolume if default volume should be drawn, std::nullopt otherwise + std::optional<int> DrawDefaultVolume(const ModCommand &m) const; void CursorJump(int distance, bool snap); @@ -317,7 +317,7 @@ void TempEnterFXparam(int v); void EnterAftertouch(ModCommand::NOTE note, int atValue); - int GetDefaultVolume(const ModCommand &m, ModCommand::INSTR lastInstr = 0) const; + std::optional<int> GetDefaultVolume(const ModCommand &m, ModCommand::INSTR lastInstr = 0) const; int GetBaseNote() const; ModCommand::NOTE GetNoteWithBaseOctave(int note) const; |
From: <sv...@op...> - 2024-11-24 22:29:29
|
Author: sagamusix Date: Sun Nov 24 23:29:16 2024 New Revision: 22299 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22299 Log: [Fix] Pattern tab: Avoid channel header buttons being kept in a pressed state after right-click action. Modified: trunk/OpenMPT/mptrack/View_pat.cpp Modified: trunk/OpenMPT/mptrack/View_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp Sun Nov 24 22:46:01 2024 (r22298) +++ trunk/OpenMPT/mptrack/View_pat.cpp Sun Nov 24 23:29:16 2024 (r22299) @@ -1468,14 +1468,22 @@ modDoc->ToggleChannelRecordGroup(sourceChn, RecordGroup::Group2); InvalidateChannelsHeaders(sourceChn); } - m_Status.reset(psShiftDragging); - return; } break; default: break; } - + if(m_nDragItem.IsValid()) + { + m_nDragItem = {}; + InvalidateRect(&m_rcDragItem, FALSE); + } + if(m_Status[psShiftDragging]) + { + m_Status.reset(psShiftDragging); + return; + } + HMENU hMenu = ::CreatePopupMenu(); if(hMenu == nullptr) return; |
From: <sv...@op...> - 2024-11-24 21:46:16
|
Author: sagamusix Date: Sun Nov 24 22:46:01 2024 New Revision: 22298 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22298 Log: [Mod] Quick Start: Move "Find" mnemonic to Alt+I so that it doesn't clash with the File menu. Modified: trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/mptrack.rc ============================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 24 22:44:37 2024 (r22297) +++ trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 24 22:46:01 2024 (r22298) @@ -2311,7 +2311,7 @@ BEGIN PUSHBUTTON " &New Module",IDC_BUTTON1,6,6,90,30 PUSHBUTTON " &Open Module",IDC_BUTTON2,108,6,90,30 - LTEXT "&Find:",IDC_STATIC,6,45,30,8 + LTEXT "F&ind:",IDC_STATIC,6,45,30,8 EDITTEXT IDC_EDIT1,36,42,285,14,ES_AUTOHSCROLL CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,6,60,315,114 PUSHBUTTON "r",IDCANCEL,308,6,13,12,BS_VCENTER |
From: <sv...@op...> - 2024-11-24 21:44:48
|
Author: sagamusix Date: Sun Nov 24 22:44:37 2024 New Revision: 22297 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22297 Log: Merged revision(s) 22296 from trunk/OpenMPT: [Fix] Don't pretend that moddoc-specific shortcuts were caught when no module is open. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/mptrack/MainFrm.cpp Modified: branches/OpenMPT-1.31/mptrack/MainFrm.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/MainFrm.cpp Sun Nov 24 22:43:46 2024 (r22296) +++ branches/OpenMPT-1.31/mptrack/MainFrm.cpp Sun Nov 24 22:44:37 2024 (r22297) @@ -2514,6 +2514,8 @@ return GetActiveDoc()->OnCustomKeyMsg(wParam, lParam); else if(wParam == kcPlayPauseSong || wParam == kcPlayStopSong|| wParam == kcStopSong) StopPreview(); + else + return kcNull; break; } |
From: <sv...@op...> - 2024-11-24 21:43:53
|
Author: sagamusix Date: Sun Nov 24 22:43:46 2024 New Revision: 22296 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22296 Log: [Fix] Don't pretend that moddoc-specific shortcuts were caught when no module is open. Modified: trunk/OpenMPT/mptrack/MainFrm.cpp Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 24 22:40:53 2024 (r22295) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 24 22:43:46 2024 (r22296) @@ -2704,6 +2704,8 @@ return modDoc->OnCustomKeyMsg(wParam, lParam); else if(wParam == kcPlayPauseSong || wParam == kcPlayStopSong || wParam == kcStopSong) StopPreview(); + else + return kcNull; break; case kcSwitchToInstrLibrary: |
From: <sv...@op...> - 2024-11-24 21:41:08
|
Author: sagamusix Date: Sun Nov 24 22:40:53 2024 New Revision: 22295 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22295 Log: [Fix] The last main VU meter LED was invisible. Modified: trunk/OpenMPT/mptrack/Mainbar.cpp Modified: trunk/OpenMPT/mptrack/Mainbar.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 24 22:37:13 2024 (r22294) +++ trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 24 22:40:53 2024 (r22295) @@ -119,8 +119,8 @@ if(show) { CRect rect; - wnd.GetClientRect(rect); - SetButtonInfo(index, id, TBBS_SEPARATOR, rect.right); + wnd.GetWindowRect(rect); + SetButtonInfo(index, id, TBBS_SEPARATOR, rect.Width()); if(wnd.m_hWnd) { |
From: <sv...@op...> - 2024-11-24 21:37:19
|
Author: sagamusix Date: Sun Nov 24 22:37:13 2024 New Revision: 22294 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22294 Log: [Fix] Global volume readout in the main toolbar was not locked for editing during updates, which could cause the global volume to be messed up during fade events. Modified: trunk/OpenMPT/mptrack/Mainbar.cpp Modified: trunk/OpenMPT/mptrack/Mainbar.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 24 22:07:41 2024 (r22293) +++ trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 24 22:37:13 2024 (r22294) @@ -742,7 +742,7 @@ void CMainToolBar::OnGlobalVolChanged() { - if(CMainFrame *mainFrm = CMainFrame::GetMainFrame()) + if(CMainFrame *mainFrm = CMainFrame::GetMainFrame(); mainFrm && !m_updating) { BOOL ok = FALSE; uint32 newGlobalVol = GetDlgItemInt(IDC_EDIT_GLOBALVOL, &ok, FALSE); |
From: <sv...@op...> - 2024-11-24 21:07:53
|
Author: sagamusix Date: Sun Nov 24 22:07:41 2024 New Revision: 22293 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22293 Log: [Fix] Quick Start: Removing an MRU item caused the wrong path in the Quick Start dialog to be cleared, potentially resulting in an incorrect item to be opened. Modified: trunk/OpenMPT/mptrack/QuickStartDialog.cpp Modified: trunk/OpenMPT/mptrack/QuickStartDialog.cpp ============================================================================== --- trunk/OpenMPT/mptrack/QuickStartDialog.cpp Sun Nov 24 21:31:56 2024 (r22292) +++ trunk/OpenMPT/mptrack/QuickStartDialog.cpp Sun Nov 24 22:07:41 2024 (r22293) @@ -246,8 +246,8 @@ if(static_cast<size_t>(index) >= mruFiles.size()) return; mruFiles.erase(mruFiles.begin() + index); - m_list.DeleteItem(index); m_paths[GetItemGroup(index)][GetItemIndex(index)] = {}; + m_list.DeleteItem(index); CMainFrame::GetMainFrame()->UpdateMRUList(); } |
From: <sv...@op...> - 2024-11-24 20:32:04
|
Author: sagamusix Date: Sun Nov 24 21:31:56 2024 New Revision: 22292 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22292 Log: [Fix] Pattern tab: Right-click record group assignment was kinda broken since r22264. Modified: trunk/OpenMPT/mptrack/View_pat.cpp Modified: trunk/OpenMPT/mptrack/View_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp Sun Nov 24 21:15:34 2024 (r22291) +++ trunk/OpenMPT/mptrack/View_pat.cpp Sun Nov 24 21:31:56 2024 (r22292) @@ -1437,11 +1437,12 @@ } const bool inChannelHeader = (pt.y < m_szHeader.cy); - if(/*(flags & MK_SHIFT) &&*/ inChannelHeader) + if(inChannelHeader) { // Drag-select record channels StartRecordGroupDragging(GetDragItem(pt, m_rcDragItem)); m_Status.set(psShiftDragging, (flags & MK_SHIFT) != 0); + m_bInItemRect = true; } } @@ -1467,6 +1468,8 @@ modDoc->ToggleChannelRecordGroup(sourceChn, RecordGroup::Group2); InvalidateChannelsHeaders(sourceChn); } + m_Status.reset(psShiftDragging); + return; } break; default: @@ -1643,7 +1646,7 @@ InvalidateRect(&m_rcDragItem, FALSE); // Drag-select record channels - if(isDraggingRecordGroup && m_nDropItem.Type() == DragItem::ChannelHeader) + if(isDraggingRecordGroup && m_nDropItem.Type() == DragItem::ChannelHeader && m_Status[psShiftDragging]) { auto modDoc = GetDocument(); auto startChn = static_cast<CHANNELINDEX>(m_nDragItem.Value()); |
From: <sv...@op...> - 2024-11-24 20:15:46
|
Author: sagamusix Date: Sun Nov 24 21:15:34 2024 New Revision: 22291 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22291 Log: [Fix] Quick Start: Use DPI-aware AdjustWindowRectEx if available. Modified: trunk/OpenMPT/mptrack/HighDPISupport.cpp trunk/OpenMPT/mptrack/HighDPISupport.h trunk/OpenMPT/mptrack/QuickStartDialog.cpp Modified: trunk/OpenMPT/mptrack/HighDPISupport.cpp ============================================================================== --- trunk/OpenMPT/mptrack/HighDPISupport.cpp Sun Nov 24 14:05:15 2024 (r22290) +++ trunk/OpenMPT/mptrack/HighDPISupport.cpp Sun Nov 24 21:15:34 2024 (r22291) @@ -25,6 +25,7 @@ m_user32.Bind(m_GetDpiForWindow, "GetDpiForWindow"); m_user32.Bind(m_GetSystemMetricsForDpi, "GetSystemMetricsForDpi"); m_user32.Bind(m_SystemParametersInfoForDpi, "SystemParametersInfoForDpi"); + m_user32.Bind(m_AdjustWindowRectExForDpi, "AdjustWindowRectExForDpi"); } mpt::Library m_user32; @@ -40,6 +41,9 @@ using PSYSTEMPARAMETERSINFOFORPDI = BOOL(WINAPI *)(UINT, UINT, void *, UINT, UINT); PSYSTEMPARAMETERSINFOFORPDI m_SystemParametersInfoForDpi = nullptr; + + using PADJUSTWINDOWRECTEXFORDPI = BOOL(WINAPI *)(LPRECT, DWORD, BOOL, DWORD, UINT); + PADJUSTWINDOWRECTEXFORDPI m_AdjustWindowRectExForDpi = nullptr; }; @@ -154,6 +158,15 @@ } +BOOL HighDPISupport::AdjustWindowRectEx(LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle, uint32 dpi) +{ + if(auto instance = GetHighDPISupportData(); instance->m_AdjustWindowRectExForDpi) + return instance->m_AdjustWindowRectExForDpi(lpRect, dwStyle, bMenu, dwExStyle, dpi); + else + return ::AdjustWindowRectEx(lpRect, dwStyle, bMenu, dwExStyle); +} + + void HighDPISupport::CreateGUIFont(CFont &font, HWND hwnd) { NONCLIENTMETRICS metrics; Modified: trunk/OpenMPT/mptrack/HighDPISupport.h ============================================================================== --- trunk/OpenMPT/mptrack/HighDPISupport.h Sun Nov 24 14:05:15 2024 (r22290) +++ trunk/OpenMPT/mptrack/HighDPISupport.h Sun Nov 24 21:15:34 2024 (r22291) @@ -40,6 +40,7 @@ int GetSystemMetrics(int index, HWND hwnd); BOOL SystemParametersInfo(UINT uiAction, UINT uiParam, void *pvParam, UINT fWinIni, uint32 dpi); BOOL SystemParametersInfo(UINT uiAction, UINT uiParam, void *pvParam, UINT fWinIni, HWND hwnd); + BOOL AdjustWindowRectEx(LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle, uint32 dpi); void CreateGUIFont(CFont &font, HWND hwnd); Modified: trunk/OpenMPT/mptrack/QuickStartDialog.cpp ============================================================================== --- trunk/OpenMPT/mptrack/QuickStartDialog.cpp Sun Nov 24 14:05:15 2024 (r22290) +++ trunk/OpenMPT/mptrack/QuickStartDialog.cpp Sun Nov 24 21:15:34 2024 (r22291) @@ -125,7 +125,7 @@ CRect windowRect{CPoint{}, m_prevSize}; windowRect.right = Util::muldiv(windowRect.right, GetDPI(), m_prevDPI); windowRect.bottom = Util::muldiv(windowRect.bottom, GetDPI(), m_prevDPI); - AdjustWindowRectEx(windowRect, GetStyle(), FALSE, GetExStyle()); + HighDPISupport::AdjustWindowRectEx(windowRect, GetStyle(), FALSE, GetExStyle(), GetDPI()); SetWindowPos(nullptr, 0, 0, windowRect.Width(), windowRect.Height(), SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOMOVE); } @@ -205,7 +205,7 @@ windowRect.bottom += viewRect.bottom - listRect.bottom; const int maxHeight = Util::muldiv(parentRect.bottom, 9, 10); LimitMax(windowRect.bottom, maxHeight); - AdjustWindowRectEx(windowRect, GetStyle(), FALSE, GetExStyle()); + HighDPISupport::AdjustWindowRectEx(windowRect, GetStyle(), FALSE, GetExStyle(), GetDPI()); SetWindowPos(nullptr, 0, 0, windowRect.Width(), windowRect.Height(), SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOMOVE); } |
From: <sv...@op...> - 2024-11-24 13:05:27
|
Author: sagamusix Date: Sun Nov 24 14:05:15 2024 New Revision: 22290 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22290 Log: Merged revision(s) 22251 from trunk/OpenMPT: [Imp] DBM / IMF / MED: When merging pattern commands, allow to move offset to volume column at the expense of a lower offset resolution. Slightly improves playback of ShowMeLove.med (https://www.un4seen.com/forum/?topic=15448.msg144136#msg144136). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_dbm.cpp branches/OpenMPT-1.31/soundlib/Load_imf.cpp branches/OpenMPT-1.31/soundlib/Load_med.cpp branches/OpenMPT-1.31/soundlib/ModSample.cpp branches/OpenMPT-1.31/soundlib/modcommand.cpp branches/OpenMPT-1.31/soundlib/modcommand.h Modified: branches/OpenMPT-1.31/soundlib/Load_dbm.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_dbm.cpp Sun Nov 24 14:03:24 2024 (r22289) +++ branches/OpenMPT-1.31/soundlib/Load_dbm.cpp Sun Nov 24 14:05:15 2024 (r22290) @@ -109,7 +109,7 @@ void ConvertToMPT(ModSample &mptSmp) const { - mptSmp.Initialize(); + mptSmp.Initialize(MOD_TYPE_DBM); mptSmp.nVolume = std::min(static_cast<uint16>(volume), uint16(64)) * 4u; mptSmp.nC5Speed = Util::muldivr(sampleRate, 8303, 8363); @@ -583,7 +583,7 @@ cmd1 = CMD_NONE; } - const auto lostCommand = m.FillInTwoCommands(cmd1, param1, cmd2, param2); + const auto lostCommand = m.FillInTwoCommands(cmd1, param1, cmd2, param2, true); if(ModCommand::IsGlobalCommand(lostCommand.first, lostCommand.second)) lostGlobalCommands.insert(lostGlobalCommands.begin(), lostCommand); // Insert at front so that the last command of same type "wins" Modified: branches/OpenMPT-1.31/soundlib/Load_imf.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_imf.cpp Sun Nov 24 14:03:24 2024 (r22289) +++ branches/OpenMPT-1.31/soundlib/Load_imf.cpp Sun Nov 24 14:05:15 2024 (r22290) @@ -177,7 +177,7 @@ // Convert an IMFSample to OpenMPT's internal sample representation. void ConvertToMPT(ModSample &mptSmp) const { - mptSmp.Initialize(); + mptSmp.Initialize(MOD_TYPE_IMF); mptSmp.filename = mpt::String::ReadBuf(mpt::String::nullTerminated, filename); mptSmp.nLength = length; @@ -556,7 +556,7 @@ const auto [e1c, e1d, e2c, e2d] = patternChunk.ReadArray<uint8, 4>(); // Command 1, Data 1, Command 2, Data 2 const auto [command1, param1] = TranslateIMFEffect(e1c, e1d); const auto [command2, param2] = TranslateIMFEffect(e2c, e2d); - m.FillInTwoCommands(command1, param1, command2, param2); + m.FillInTwoCommands(command1, param1, command2, param2, true); } else if(mask & 0xC0) { // There's one effect, just stick it in the effect column (unless it's a volume command) Modified: branches/OpenMPT-1.31/soundlib/Load_med.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_med.cpp Sun Nov 24 14:03:24 2024 (r22289) +++ branches/OpenMPT-1.31/soundlib/Load_med.cpp Sun Nov 24 14:05:15 2024 (r22290) @@ -641,7 +641,7 @@ if(oldCmd.first != CMD_NONE && m->command != oldCmd.first) { if(!ModCommand::CombineEffects(m->command, m->param, oldCmd.first, oldCmd.second) && m->volcmd == VOLCMD_NONE) - m->FillInTwoCommands(m->command, m->param, oldCmd.first, oldCmd.second); + m->FillInTwoCommands(m->command, m->param, oldCmd.first, oldCmd.second, true); // Reset X-Param to 8-bit value if this cell was overwritten with a "useful" effect if(row > 0 && oldCmd.first == CMD_XPARAM && m->command != CMD_XPARAM) pattern.GetpModCommand(row - 1, chn)->param = Util::MaxValueOfType(m->param); Modified: branches/OpenMPT-1.31/soundlib/ModSample.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/ModSample.cpp Sun Nov 24 14:03:24 2024 (r22289) +++ branches/OpenMPT-1.31/soundlib/ModSample.cpp Sun Nov 24 14:05:15 2024 (r22290) @@ -154,7 +154,16 @@ rootNote = 0; filename = ""; - RemoveAllCuePoints(); + if(type & (MOD_TYPE_DBM | MOD_TYPE_IMF | MOD_TYPE_MED)) + { + for(SmpLength i = 1; i < 10; i++) + { + cues[i - 1] = Util::muldiv_unsigned(i, 255 * 256, 9); + } + } else + { + RemoveAllCuePoints(); + } } Modified: branches/OpenMPT-1.31/soundlib/modcommand.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/modcommand.cpp Sun Nov 24 14:03:24 2024 (r22289) +++ branches/OpenMPT-1.31/soundlib/modcommand.cpp Sun Nov 24 14:05:15 2024 (r22290) @@ -1346,7 +1346,7 @@ } -std::pair<EffectCommand, ModCommand::PARAM> ModCommand::FillInTwoCommands(EffectCommand effect1, uint8 param1, EffectCommand effect2, uint8 param2) +std::pair<EffectCommand, ModCommand::PARAM> ModCommand::FillInTwoCommands(EffectCommand effect1, uint8 param1, EffectCommand effect2, uint8 param2, bool allowLowResOffset) { if(effect1 == effect2) { @@ -1401,6 +1401,12 @@ std::swap(effect1, effect2); std::swap(param1, param2); } + if(effect2 == CMD_OFFSET && (allowLowResOffset || param2 == 0)) + { + SetVolumeCommand(VOLCMD_OFFSET, static_cast<ModCommand::VOL>(param2 ? std::max(param2 * 9 / 255, 1) : 0)); + SetEffectCommand(effect1, param1); + return {CMD_NONE, ModCommand::PARAM(0)}; + } SetVolumeCommand(VOLCMD_NONE, 0); SetEffectCommand(effect2, param2); return {effect1, param1}; Modified: branches/OpenMPT-1.31/soundlib/modcommand.h ============================================================================== --- branches/OpenMPT-1.31/soundlib/modcommand.h Sun Nov 24 14:03:24 2024 (r22289) +++ branches/OpenMPT-1.31/soundlib/modcommand.h Sun Nov 24 14:05:15 2024 (r22290) @@ -230,7 +230,7 @@ // Try to convert a an effect into a volume column effect. Returns converted effect on success. [[nodiscard]] static std::pair<VolumeCommand, VOL> ConvertToVolCommand(const EffectCommand effect, PARAM param, bool force); // Takes two "normal" effect commands and converts them to volume column + effect column commands. Returns the dropped command + param (CMD_NONE if nothing had to be dropped). - std::pair<EffectCommand, PARAM> FillInTwoCommands(EffectCommand effect1, uint8 param1, EffectCommand effect2, uint8 param2); + std::pair<EffectCommand, PARAM> FillInTwoCommands(EffectCommand effect1, uint8 param1, EffectCommand effect2, uint8 param2, bool allowLowResOffset = false); // Try to combine two commands into one. Returns true on success and the combined command is placed in eff1 / param1. static bool CombineEffects(EffectCommand &eff1, uint8 ¶m1, EffectCommand &eff2, uint8 ¶m2); |
From: <sv...@op...> - 2024-11-24 13:03:31
|
Author: sagamusix Date: Sun Nov 24 14:03:24 2024 New Revision: 22289 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22289 Log: Merged revision(s) 22250 from trunk/OpenMPT: [Fix] MED: 7-bit volume doesn't apply to just any file with a BlockInfo. Maybe it's actually the 2nd command level extension that should enable it instead... Fixes ShowMeLove.med (https://www.un4seen.com/forum/?topic=15448.msg144136#msg144136). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_med.cpp Modified: branches/OpenMPT-1.31/soundlib/Load_med.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_med.cpp Sun Nov 24 13:59:47 2024 (r22288) +++ branches/OpenMPT-1.31/soundlib/Load_med.cpp Sun Nov 24 14:03:24 2024 (r22289) @@ -1432,7 +1432,6 @@ numRows = patHeader.numRows + 1; if(patHeader.blockInfoOffset) { - vol7bit = true; auto offset = file.GetPosition(); file.Seek(patHeader.blockInfoOffset); MMDBlockInfo blockInfo; @@ -1457,6 +1456,7 @@ && file.Seek(blockInfo.cmdExtTableOffset) && file.Seek(file.ReadUint32BE())) { + vol7bit = true; cmdExt = file.ReadChunk(numTracks * numRows * (1 + numPages)); } |
From: <sv...@op...> - 2024-11-24 12:59:59
|
Author: sagamusix Date: Sun Nov 24 13:59:47 2024 New Revision: 22288 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22288 Log: Merged revision(s) 22280 from trunk/OpenMPT: [Fix] MED: Do not allow sample swapping with portamento, and don't resume playing a stopped note with portamento. Fixes Homeward_Trek.med by Soundburst (https://www.un4seen.com/forum/?topic=15448.msg144148#msg144148). ........ Modified: branches/OpenMPT-1.29/ (props changed) branches/OpenMPT-1.29/soundlib/Load_med.cpp Modified: branches/OpenMPT-1.29/soundlib/Load_med.cpp ============================================================================== --- branches/OpenMPT-1.29/soundlib/Load_med.cpp Sun Nov 24 13:59:31 2024 (r22287) +++ branches/OpenMPT-1.29/soundlib/Load_med.cpp Sun Nov 24 13:59:47 2024 (r22288) @@ -1188,6 +1188,8 @@ // For MED, this affects both volume and pitch slides m_SongFlags.set(SONG_FASTVOLSLIDES, !(songHeader.flags & MMDSong::FLAG_STSLIDE)); + m_playBehaviour.set(kST3PortaSampleChange); + m_playBehaviour.set(kFT2PortaNoNote); if(expData.songNameOffset && file.Seek(expData.songNameOffset)) { |
From: <sv...@op...> - 2024-11-24 12:59:43
|
Author: sagamusix Date: Sun Nov 24 13:59:31 2024 New Revision: 22287 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22287 Log: Merged revision(s) 22280 from trunk/OpenMPT: [Fix] MED: Do not allow sample swapping with portamento, and don't resume playing a stopped note with portamento. Fixes Homeward_Trek.med by Soundburst (https://www.un4seen.com/forum/?topic=15448.msg144148#msg144148). ........ Modified: branches/OpenMPT-1.30/ (props changed) branches/OpenMPT-1.30/soundlib/Load_med.cpp Modified: branches/OpenMPT-1.30/soundlib/Load_med.cpp ============================================================================== --- branches/OpenMPT-1.30/soundlib/Load_med.cpp Sun Nov 24 13:58:57 2024 (r22286) +++ branches/OpenMPT-1.30/soundlib/Load_med.cpp Sun Nov 24 13:59:31 2024 (r22287) @@ -1193,6 +1193,8 @@ // For MED, this affects both volume and pitch slides m_SongFlags.set(SONG_FASTVOLSLIDES, !(songHeader.flags & MMDSong::FLAG_STSLIDE)); + m_playBehaviour.set(kST3PortaSampleChange); + m_playBehaviour.set(kFT2PortaNoNote); if(expData.songNameOffset && file.Seek(expData.songNameOffset)) { |
From: <sv...@op...> - 2024-11-24 12:59:09
|
Author: sagamusix Date: Sun Nov 24 13:58:57 2024 New Revision: 22286 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22286 Log: Merged revision(s) 22227 from trunk/OpenMPT: [Fix] MMCMP: Avoid undefined shift behaviour when trying to read an arbitrary number of bits. Reject such malformed files like Ancient does. ........ Modified: branches/OpenMPT-1.28/ (props changed) branches/OpenMPT-1.28/soundlib/ContainerMMCMP.cpp Modified: branches/OpenMPT-1.28/soundlib/ContainerMMCMP.cpp ============================================================================== --- branches/OpenMPT-1.28/soundlib/ContainerMMCMP.cpp Sun Nov 24 13:58:39 2024 (r22285) +++ branches/OpenMPT-1.28/soundlib/ContainerMMCMP.cpp Sun Nov 24 13:58:57 2024 (r22286) @@ -264,6 +264,7 @@ if (pblk->flags & MMCMP_ABS16) Log("ABS16 "); Log("\n"); #endif + if(numbits > 15) return false; if(!file.Seek(memPos + blk.tt_entries)) return false; if(!file.CanRead(blk.pk_size - blk.tt_entries)) return false; BitReader bitFile{ file.GetChunk(blk.pk_size - blk.tt_entries) }; @@ -341,6 +342,7 @@ uint32 numbits = blk.num_bits; uint32 oldval = 0; if(blk.tt_entries > sizeof(ptable) + || numbits > 7 || !file.Seek(memPos) || file.ReadRaw(ptable, blk.tt_entries) < blk.tt_entries) return false; |
From: <sv...@op...> - 2024-11-24 12:58:46
|
Author: sagamusix Date: Sun Nov 24 13:58:39 2024 New Revision: 22285 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22285 Log: Merged revision(s) 22227 from trunk/OpenMPT: [Fix] MMCMP: Avoid undefined shift behaviour when trying to read an arbitrary number of bits. Reject such malformed files like Ancient does. ........ Modified: branches/OpenMPT-1.29/ (props changed) branches/OpenMPT-1.29/soundlib/ContainerMMCMP.cpp Modified: branches/OpenMPT-1.29/soundlib/ContainerMMCMP.cpp ============================================================================== --- branches/OpenMPT-1.29/soundlib/ContainerMMCMP.cpp Sun Nov 24 13:58:19 2024 (r22284) +++ branches/OpenMPT-1.29/soundlib/ContainerMMCMP.cpp Sun Nov 24 13:58:39 2024 (r22285) @@ -263,6 +263,7 @@ #ifdef MMCMP_LOG MPT_LOG(LogDebug, "MMCMP", mpt::format(U_(" 16-bit block: pos=%1 size=%2 %3 %4"))(psubblk->unpk_pos, psubblk->unpk_size, (blk.flags & MMCMP_DELTA) ? U_("DELTA ") : U_(""), (blk.flags & MMCMP_ABS16) ? U_("ABS16 ") : U_(""))); #endif + if(numbits > 15) return false; if(!file.Seek(memPos + blk.tt_entries)) return false; if(!file.CanRead(blk.pk_size - blk.tt_entries)) return false; BitReader bitFile{ file.GetChunk(blk.pk_size - blk.tt_entries) }; @@ -340,6 +341,7 @@ uint32 numbits = blk.num_bits; uint32 oldval = 0; if(blk.tt_entries > sizeof(ptable) + || numbits > 7 || !file.Seek(memPos) || file.ReadRaw(ptable, blk.tt_entries) < blk.tt_entries) return false; |
From: <sv...@op...> - 2024-11-24 12:58:34
|
Author: sagamusix Date: Sun Nov 24 13:58:19 2024 New Revision: 22284 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22284 Log: Merged revision(s) 22227 from trunk/OpenMPT: [Fix] MMCMP: Avoid undefined shift behaviour when trying to read an arbitrary number of bits. Reject such malformed files like Ancient does. ........ Modified: branches/OpenMPT-1.30/ (props changed) branches/OpenMPT-1.30/soundlib/ContainerMMCMP.cpp Modified: branches/OpenMPT-1.30/soundlib/ContainerMMCMP.cpp ============================================================================== --- branches/OpenMPT-1.30/soundlib/ContainerMMCMP.cpp Sun Nov 24 13:58:01 2024 (r22283) +++ branches/OpenMPT-1.30/soundlib/ContainerMMCMP.cpp Sun Nov 24 13:58:19 2024 (r22284) @@ -231,6 +231,7 @@ #ifdef MMCMP_LOG MPT_LOG_GLOBAL(LogDebug, "MMCMP", MPT_UFORMAT(" 16-bit block: pos={} size={} {} {}")(psubblk->position, psubblk->size, (blk.flags & MMCMP_DELTA) ? U_("DELTA ") : U_(""), (blk.flags & MMCMP_ABS16) ? U_("ABS16 ") : U_(""))); #endif + if(numbits > 15) return false; if(!file.Seek(memPos + blk.tt_entries)) return false; if(!file.CanRead(blk.pk_size - blk.tt_entries)) return false; BitReader bitFile{ file.GetChunk(blk.pk_size - blk.tt_entries) }; @@ -316,6 +317,7 @@ uint32 numbits = blk.num_bits; uint32 oldval = 0; if(blk.tt_entries > sizeof(ptable) + || numbits > 7 || !file.Seek(memPos) || file.ReadRaw(mpt::span(ptable, blk.tt_entries)).size() < blk.tt_entries) return false; |
From: <sv...@op...> - 2024-11-24 12:58:08
|
Author: sagamusix Date: Sun Nov 24 13:58:01 2024 New Revision: 22283 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22283 Log: Merged revision(s) 22227 from trunk/OpenMPT: [Fix] MMCMP: Avoid undefined shift behaviour when trying to read an arbitrary number of bits. Reject such malformed files like Ancient does. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/ContainerMMCMP.cpp Modified: branches/OpenMPT-1.31/soundlib/ContainerMMCMP.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/ContainerMMCMP.cpp Sun Nov 24 13:53:45 2024 (r22282) +++ branches/OpenMPT-1.31/soundlib/ContainerMMCMP.cpp Sun Nov 24 13:58:01 2024 (r22283) @@ -231,6 +231,7 @@ #ifdef MMCMP_LOG MPT_LOG_GLOBAL(LogDebug, "MMCMP", MPT_UFORMAT(" 16-bit block: pos={} size={} {} {}")(psubblk->position, psubblk->size, (blk.flags & MMCMP_DELTA) ? U_("DELTA ") : U_(""), (blk.flags & MMCMP_ABS16) ? U_("ABS16 ") : U_(""))); #endif + if(numbits > 15) return false; if(!file.Seek(memPos + blk.tt_entries)) return false; if(!file.CanRead(blk.pk_size - blk.tt_entries)) return false; BitReader bitFile{ file.GetChunk(blk.pk_size - blk.tt_entries) }; @@ -316,6 +317,7 @@ uint32 numbits = blk.num_bits; uint32 oldval = 0; if(blk.tt_entries > sizeof(ptable) + || numbits > 7 || !file.Seek(memPos) || file.ReadRaw(mpt::span(ptable, blk.tt_entries)).size() < blk.tt_entries) return false; |
From: <sv...@op...> - 2024-11-24 12:53:52
|
Author: sagamusix Date: Sun Nov 24 13:53:45 2024 New Revision: 22282 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22282 Log: Merged revision(s) 22225 from trunk/OpenMPT: [Fix] When an instrument refers to an invalid sample slot, don't try to address it during playback. The playback routines have no issue with this (due to all possible sample slots being pre-allocated), but some code in the tracker that tries to infer the sample slot from pModSample pointer and assumes that it's always valid could crash due to this (e.g. unused sample scanner). Instead, refer to sample slot 0 when such a note mapping is encountered. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Snd_fx.cpp Modified: branches/OpenMPT-1.31/soundlib/Snd_fx.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Snd_fx.cpp Sun Nov 24 13:42:37 2024 (r22281) +++ branches/OpenMPT-1.31/soundlib/Snd_fx.cpp Sun Nov 24 13:53:45 2024 (r22282) @@ -1391,7 +1391,7 @@ if(pIns->NoteMap[note - NOTE_MIN] > NOTE_MAX) return; uint32 n = pIns->Keyboard[note - NOTE_MIN]; - pSmp = ((n) && (n < MAX_SAMPLES)) ? &Samples[n] : nullptr; + pSmp = (n <= GetNumSamples()) ? &Samples[n] : &Samples[0]; } else if(GetNumInstruments()) { // No valid instrument, or not a valid note. @@ -1751,9 +1751,9 @@ if((pIns) && (note - NOTE_MIN < (int)std::size(pIns->Keyboard))) { uint32 n = pIns->Keyboard[note - NOTE_MIN]; - if((n) && (n < MAX_SAMPLES)) + if(n > 0) { - pSmp = &Samples[n]; + pSmp = &Samples[(n <= GetNumSamples()) ? n : 0]; } else if(m_playBehaviour[kITEmptyNoteMapSlot] && !chn.HasMIDIOutput()) { // Impulse Tracker ignores empty slots. @@ -2229,9 +2229,9 @@ // Test case: dct_smp_note_test.it if(!m_playBehaviour[kITDCTBehaviour] || !m_playBehaviour[kITRealNoteMapping]) dnaNote = pIns->NoteMap[note - NOTE_MIN]; - if(smp > 0 && smp < MAX_SAMPLES) + if(smp > 0) { - pSample = &Samples[smp]; + pSample = &Samples[(smp <= GetNumSamples()) ? smp : 0]; } else if(m_playBehaviour[kITEmptyNoteMapSlot] && !pIns->HasValidMIDIChannel()) { // Impulse Tracker ignores empty slots. |
From: <sv...@op...> - 2024-11-24 12:42:50
|
Author: sagamusix Date: Sun Nov 24 13:42:37 2024 New Revision: 22281 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22281 Log: Merged revision(s) 22280 from trunk/OpenMPT: [Fix] MED: Do not allow sample swapping with portamento, and don't resume playing a stopped note with portamento. Fixes Homeward_Trek.med by Soundburst (https://www.un4seen.com/forum/?topic=15448.msg144148#msg144148). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_med.cpp Modified: branches/OpenMPT-1.31/soundlib/Load_med.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_med.cpp Sun Nov 24 13:42:15 2024 (r22280) +++ branches/OpenMPT-1.31/soundlib/Load_med.cpp Sun Nov 24 13:42:37 2024 (r22281) @@ -1305,6 +1305,8 @@ // For MED, this affects both volume and pitch slides m_SongFlags.set(SONG_FASTVOLSLIDES, !(songHeader.flags & MMDSong::FLAG_STSLIDE)); m_playBehaviour.set(kST3OffsetWithoutInstrument); + m_playBehaviour.set(kST3PortaSampleChange); + m_playBehaviour.set(kFT2PortaNoNote); if(expData.songNameOffset && file.Seek(expData.songNameOffset)) { |