Dean Herbert
3e3843dcf9
Fix potential crash on CloseAllOverlays
due to collection mutation
2022-06-28 00:32:36 +09:00
Dan Balasescu
d43b980a17
Merge pull request #18872 from peppy/add-working-beatmap-changed-logging
...
Add various logging of global `WorkingBeatmap` state changes
2022-06-27 21:34:05 +09:00
Dan Balasescu
c2b03cb6b9
Merge pull request #18875 from peppy/logging-finalise-selection-abort-operations
...
Add logging for various cases of `SongSelect.FinaliseSelection` being aborted
2022-06-27 21:33:51 +09:00
Dan Balasescu
6c6de9ce53
Fix typo
2022-06-27 20:40:02 +09:00
Dan Balasescu
396e7fc166
Merge pull request #18862 from peppy/empty-beatmap-file-fix-2
...
Fix second case of empty beatmaps being reported to sentry as errors
2022-06-27 20:37:57 +09:00
Dean Herbert
aa7d54f8b6
Add logging for various cases of SongSelect.FinaliseSelection
being aborted
2022-06-27 20:10:17 +09:00
Dean Herbert
f355c3a3c9
Merge pull request #18864 from peppy/fix-realm-audio-track-test-fail
...
Centralise and harden editor-ready-for-use check
2022-06-27 19:42:49 +09:00
Dean Herbert
83982d258d
Throw immediately if attempting to WriteAsync
after disposed
2022-06-27 19:34:28 +09:00
Dean Herbert
c39c99bd43
Ensure all async writes are completed before realm is disposed
2022-06-27 19:21:05 +09:00
Dan Balasescu
8f91ce8f0c
Merge pull request #18871 from peppy/fix-realm-assertion-during-tests
...
Fix occasional failure in realm test proceedings due to incorrect `Debug.Assert`
2022-06-27 18:48:47 +09:00
Dean Herbert
50c1c066de
Add various logging of global WorkingBeatmap
state changes
2022-06-27 18:41:31 +09:00
Dean Herbert
0ba29b6fa6
Use currentScreen
instead to make sure the screen we care about is loaded
2022-06-27 18:28:00 +09:00
Dan Balasescu
b13fa924fd
Merge pull request #18865 from peppy/fix-flaky-chat-test
...
Fix chat tests failing 1/10000 runs
2022-06-27 18:06:00 +09:00
Dean Herbert
f6a61472c4
Fix occasional failure in realm test proceedings due to incorrect Debug.Assert
...
After a `BlockAllOperations`, the restoration of the `updateRealm`
instance is not instance. It is posted to a `SynchronizationContext`.
The assertion which has been removed in this commit was assuming it
would always be an immediate operation.
To ensure this works as expected, I've tracked the initialised state via
a new `bool`.
```csharp
System.TimeoutException : Attempting to block for migration took too long.
1) Host threw exception System.AggregateException: One or more errors occurred. (: )
---> NUnit.Framework.AssertionException: :
at osu.Framework.Logging.ThrowingTraceListener.Fail(String message1, String message2)
at System.Diagnostics.TraceInternal.Fail(String message, String detailMessage)
at System.Diagnostics.TraceInternal.TraceProvider.Fail(String message, String detailMessage)
at System.Diagnostics.Debug.Fail(String message, String detailMessage)
at osu.Game.Database.RealmAccess.BlockAllOperations() in /opt/buildagent/work/ecd860037212ac52/osu.Game/Database/RealmAccess.cs:line 813
at osu.Game.OsuGameBase.<>c__DisplayClass108_1.<Migrate>b__0() in /opt/buildagent/work/ecd860037212ac52/osu.Game/OsuGameBase.cs:line 449
at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal()
at osu.Framework.Threading.Scheduler.Update()
at osu.Framework.Graphics.Drawable.UpdateSubTree()
at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
```
https://teamcity.ppy.sh/buildConfiguration/Osu_Build/322?hideProblemsFromDependencies=false&hideTestsFromDependencies=false&expandBuildTestsSection=true
2022-06-27 18:01:12 +09:00
Dean Herbert
13dcaf82ad
Fix chat tests failing 1/10000 runs
...
31a447fda0/osu.Game/Online/Chat/ChannelManager.cs (L412-L414)
Sigh.
2022-06-27 16:50:10 +09:00
Dean Herbert
5a7d339cc8
Centralise and harden editor-ready-for-use check
...
Not only does this combine the check into one location, but it also adds
a check on the global `WorkingBeatmap` being updated, which is the only
way I can see the following failure happening:
```csharp
05:19:07 osu.Game.Tests: osu.Game.Tests.Visual.Editing.TestSceneEditorBeatmapCreation.TestAddAudioTrack
05:19:07 Failed TestAddAudioTrack [161 ms]
05:19:07 Error Message:
05:19:07 TearDown : System.NullReferenceException : Object reference not set to an instance of an object.
05:19:07 Stack Trace:
05:19:07 --TearDown
05:19:07 at osu.Game.Database.ModelManager`1.<>c__DisplayClass7_0.<AddFile>b__0(TModel managed) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Database\ModelManager.cs:line 36
05:19:07 at osu.Game.Database.ModelManager`1.<>c__DisplayClass8_0.<performFileOperation>b__0(Realm realm) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Database\ModelManager.cs:line 49
05:19:07 at osu.Game.Database.RealmExtensions.Write(Realm realm, Action`1 function) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Database\RealmExtensions.cs:line 14
05:19:07 at osu.Game.Database.ModelManager`1.performFileOperation(TModel item, Action`1 operation) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Database\ModelManager.cs:line 46
05:19:07 at osu.Game.Database.ModelManager`1.AddFile(TModel item, Stream contents, String filename) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Database\ModelManager.cs:line 36
05:19:07 at osu.Game.Screens.Edit.Setup.ResourcesSection.ChangeAudioTrack(FileInfo source) in C:\BuildAgent\work\ecd860037212ac52\osu.Game\Screens\Edit\Setup\ResourcesSection.cs:line 115
05:19:07 at osu.Game.Tests.Visual.Editing.TestSceneEditorBeatmapCreation.<TestAddAudioTrack>b__13_0() in C:\BuildAgent\work\ecd860037212ac52\osu.Game.Tests\Visual\Editing\TestSceneEditorBeatmapCreation.cs:line 101
05:19:07 at osu.Framework.Testing.Drawables.Steps.AssertButton.checkAssert()
05:19:07 at osu.Framework.Testing.Drawables.Steps.StepButton.PerformStep(Boolean userTriggered)
05:19:07 at osu.Framework.Testing.TestScene.runNextStep(Action onCompletion, Action`1 onError, Func`2 stopCondition)
```
2022-06-27 16:22:01 +09:00
Dan Balasescu
0fd2c010e5
Remove NRT disables from attributes classes
2022-06-27 16:07:15 +09:00
Dan Balasescu
0579780bb8
Add IBeatmapOnlineInfo parameter and use to extract more data
2022-06-27 16:07:15 +09:00
Dan Balasescu
f6a6538e96
Add more properties to IBeatmapOnlineInfo
2022-06-27 16:07:15 +09:00
Dean Herbert
10d1bbb131
Log global working beatmap updates in OsuGameBase
instead of OsuGame
2022-06-27 15:58:51 +09:00
Dean Herbert
01487a1185
Add assertion on realm re-fetch being not-null
2022-06-27 15:52:45 +09:00
Dean Herbert
13c8d33009
Fix second case of empty beatmaps being reported to sentry as errors
2022-06-27 15:29:01 +09:00
Dean Herbert
da61d0547f
Include archive name in import log output
2022-06-27 15:24:25 +09:00
Dan Balasescu
2b278ed324
Merge pull request #18841 from peppy/menu-cursor-better-rotation
...
Adjust menu cursor rotation to use a floating centre-point
2022-06-27 14:18:54 +09:00
Dean Herbert
1a22377e19
Fix test deadlock due to TPL threadpool saturation
...
As found in aggressive CI runs:
```csharp
00007F6F527F32B0 00007f74f937c72d (MethodDesc 00007f74f5545a78 + 0x22d System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken)), calling (MethodDesc 00007f74f51c0838 + 0 System.Threading.Monitor.Wait(System.Object, Int32))
00007F6F527F3330 00007f74f93861ca (MethodDesc 00007f74f5259100 + 0x10a System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken)), calling (MethodDesc 00007f74f5545a78 + 0 System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken))
00007F6F527F3390 00007f74f9385d11 (MethodDesc 00007f74f52590e8 + 0x81 System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)), calling (MethodDesc 00007f74f5259100 + 0 System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken))
00007F6F527F33E0 00007f74fc3823af (MethodDesc 00007f74f5934c08 + 0x4f System.Threading.Tasks.Task`1[[System.Boolean, System.Private.CoreLib]].GetResultCore(Boolean)), calling (MethodDesc 00007f74f52590e8 + 0 System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken))
00007F6F527F3400 00007f74fb0aad92 (MethodDesc 00007f74fb28b000 + 0x122 osu.Game.Tests.Visual.OnlinePlay.OnlinePlayTestScene+<>c__DisplayClass21_0.<Setup>b__1(osu.Game.Online.API.APIRequest)), calling (MethodDesc 00007f74f5934be8 + 0 System.Threading.Tasks.Task`1[[System.Boolean, System.Private.CoreLib]].get_Result())
00007F6F527F3470 00007f74fa9c6dd7 (MethodDesc 00007f74f921f6c8 + 0x77 osu.Game.Online.API.DummyAPIAccess.PerformAsync(osu.Game.Online.API.APIRequest))
00007F6F527F34C0 00007f74fb13c718 (MethodDesc 00007f74fb4e0c50 + 0x538 osu.Game.Database.OnlineLookupCache`3+<performLookup>d__13[[System.Int32, System.Private.CoreLib],[System.__Canon, System.Private.CoreLib],[System.__Canon, System.Private.CoreLib]].MoveNext())
```
Going with the simplest solution, as what we had was pretty ugly to start with and I don't want to overthink this, just push a fix and hope for the best.
2022-06-26 16:42:29 +09:00
Dean Herbert
2ecab454aa
Adjust animations and tolerances to make things feel snappier
2022-06-25 19:50:10 +09:00
Dean Herbert
a039f9878a
Adjust menu cursor rotation to follow mouse, rather than be fixated around original click location
2022-06-25 19:33:44 +09:00
Bartłomiej Dach
a83c45b50e
Fix compile failures from framework breaking change
2022-06-24 16:07:14 +02:00
Bartłomiej Dach
df30bedab6
Update framework again
2022-06-24 16:01:52 +02:00
Dean Herbert
14327943a2
Update framework
2022-06-24 21:28:30 +09:00
Dean Herbert
31a447fda0
Update parameter discards
2022-06-24 21:26:19 +09:00
Dean Herbert
30eebf3511
Merge branch 'master' into c-sharp-10
2022-06-24 21:22:33 +09:00
Dean Herbert
7692bac35a
Simplify refetch (and ensure to invalidate after processing)
2022-06-24 21:02:38 +09:00
Dean Herbert
0c3d890f76
Fix reprocessing not working on import due to realm threading woes
2022-06-24 21:02:38 +09:00
Dean Herbert
30b3973c9f
Difficulty cache invalidation flow
2022-06-24 21:02:38 +09:00
Dean Herbert
66a01d1ed2
Allow song select to refresh the global WorkingBeatmap
after an external update
2022-06-24 21:02:38 +09:00
Dean Herbert
6999933d33
Split updater process into realm transaction and non-transaction
2022-06-24 21:02:38 +09:00
Dean Herbert
021b16f2f3
Ensure WorkingBeatmap
is invalidated after update
2022-06-24 21:02:38 +09:00
Dean Herbert
fe570d8052
Queue beatmaps for update after editing
2022-06-24 21:02:38 +09:00
Dean Herbert
06d59b717c
Move beatmap processing tasks to new BeatmapUpdater
class
2022-06-24 21:02:37 +09:00
Dean Herbert
2ca4184eda
Merge pull request #18834 from bdach/ban-implicit-to-lower-upper
...
Disallow usage of `string.To{Upper,Lower}()` without explicit culture
2022-06-24 20:39:58 +09:00
Dan Balasescu
7eb49dac7a
Merge pull request #18832 from peppy/bdc-remove-unused-path
...
Remove unused bindable retrieval flow in `BeatmapDifficultyCache`
2022-06-24 20:20:23 +09:00
Dean Herbert
823b3c1c0f
Ensure WorkingBeatmap
is always using a detached instance
2022-06-24 19:07:54 +09:00
Dean Herbert
2ae48d5a87
Rename incorrect parameter name in BeatmapManager.GetWorkingBeatmap
2022-06-24 19:07:54 +09:00
Bartłomiej Dach
26c5b59f6d
Replace usages of string.To{Lower,Upper}()
2022-06-24 11:57:45 +02:00
Dean Herbert
c179127670
Remove unused bindable retrieval flow
2022-06-24 17:09:56 +09:00
Dean Herbert
0755430006
Use AddOnce
for update calls
2022-06-24 17:09:56 +09:00
Dean Herbert
8912f07745
Merge branch 'master' into difficulty-icon-refactor-pass
2022-06-24 16:34:35 +09:00
Dean Herbert
f71f6302fd
Remove unnecessary null
casts
2022-06-24 14:50:11 +09:00
Dean Herbert
28837693e5
Nuke calculating everything
...
The whole component is pointless so I'm just going to nuke for now I
guess. Kind of makes the whole refactor effort pointless but oh well?
To expand on this, the implementation was actually incorrect as pointed
out at https://github.com/ppy/osu/pull/18819#pullrequestreview-1017886035 .
2022-06-24 14:24:06 +09:00
Dean Herbert
12ea8369ee
Update retriever to be relatively sized
2022-06-24 14:06:31 +09:00
Dean Herbert
d9c1a9d71f
Use new property to specify no tooltip, rather than passing only ruleset
2022-06-24 14:06:18 +09:00
Dean Herbert
129c907092
Remove unused parameters
2022-06-24 13:58:02 +09:00
Bartłomiej Dach
04d69010b5
Split overlong conditional to local function
2022-06-23 18:03:07 +02:00
Bartłomiej Dach
bea70988bc
Remove unnecessary #nullable disable
2022-06-23 17:57:22 +02:00
Gabe Livengood
454eff43c5
publicity -> accesstype
2022-06-23 11:40:25 -04:00
Gabe Livengood
d67c482c48
move publicity filter to multi exclusively
2022-06-23 11:36:08 -04:00
Gabe Livengood
9a15adbfff
add an all option to publicity filter
2022-06-23 11:24:28 -04:00
Gabe Livengood
2def6d809b
refactor to use enum dropdown
2022-06-23 11:02:27 -04:00
Dean Herbert
730228ec2a
Merge pull request #18818 from nekodex/rearrangeable-list-feedback
...
Add audio feedback for rearranging list items
2022-06-23 23:30:55 +09:00
Jamie Taylor
aaf619b35c
Don't play sample if there is no item being actively dragged
2022-06-23 20:13:01 +09:00
Jamie Taylor
9c46592e0e
Move collection change event binding to LoadComplete
2022-06-23 20:04:54 +09:00
Dean Herbert
ef258122d2
Move GetDifficultyRating
helper method to StarDifficulty
2022-06-23 19:51:58 +09:00
Dean Herbert
b068df2149
Enable NRT on BeatmapDiffiultyCache
2022-06-23 19:51:58 +09:00
Dean Herbert
32652ace75
Update resources
2022-06-23 19:51:44 +09:00
Dean Herbert
01da6f20b3
Tidy up all remaining usages
2022-06-23 19:27:35 +09:00
Dean Herbert
7dec530ca5
Split out simple DifficultyIcon
with no calculation overhead and update usages
2022-06-23 19:27:35 +09:00
Dean Herbert
4a2ca4394b
Remove unused ModeTypeInfo
class
2022-06-23 19:27:35 +09:00
Dean Herbert
3a83e5684c
Tidy up DifficultyIcon
2022-06-23 19:27:35 +09:00
Dean Herbert
d6b073ebad
Move DifficultyRetrieve
to own class and split both pathways into separate constructors
2022-06-23 19:27:35 +09:00
Jamie Taylor
4a316fad2f
Add audio feedback for rearranging list items
2022-06-23 17:45:42 +09:00
Dean Herbert
158f0a1f23
Remove remaining Room!=null
checks in TestMultiplayerClient
where possible
2022-06-23 17:38:34 +09:00
Dan Balasescu
9ed37621a7
Merge pull request #18816 from peppy/avoid-waiting-forever
...
Ban usage of `ManualResetEventSlim.Wait()` without a timeout value
2022-06-23 17:26:26 +09:00
Dean Herbert
51268d0cc8
Throw on Wait
failure in a few remaining cases
2022-06-23 15:28:21 +09:00
Dean Herbert
7ef8b7df5f
Add timeout for all ManualResetEventSlim.Wait
invocations
...
Timeout values were taken as best-guesses of upper values we'd expect
from sane execution.
2022-06-23 14:46:00 +09:00
Dean Herbert
bc557bacf0
Remove room null assertion in TestMultiplayerClient.ChangeState
to avoid assert
...
This method is run from async contexts, but `get_Room` asserts update
thread which is not the case. Was causing silent test failures (showing
as pass but failing `dotnet-test` via return code):
TestSceneMultiplayer.TestGameplayFlow
```
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: Score preparation failed!
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: NUnit.Framework.AssertionException: :
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at osu.Framework.Logging.ThrowingTraceListener.Fail(String message1, String message2)
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at System.Diagnostics.TraceInternal.Fail(String message, String detailMessage)
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at System.Diagnostics.TraceInternal.TraceProvider.Fail(String message, String detailMessage)
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at System.Diagnostics.Debug.Fail(String message, String detailMessage)
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at osu.Game.Online.Multiplayer.MultiplayerClient.get_Room() in /opt/buildagent/work/ecd860037212ac52/osu.Game/Online/Multiplayer/MultiplayerClient.cs:line 98
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at osu.Game.Tests.Visual.Multiplayer.TestMultiplayerClient.ChangeState(MultiplayerUserState newState) in /opt/buildagent/work/ecd860037212ac52/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs:line 275
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at osu.Game.Screens.OnlinePlay.Multiplayer.MultiplayerPlayer.PrepareScoreForResultsAsync(Score score) in /opt/buildagent/work/ecd860037212ac52/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerPlayer.cs:line 223
[13:13:17] : [dotnet test] [runtime] 2022-06-22 13:13:16 [error]: at osu.Game.Screens.Play.Player.prepareScoreForResults() in /opt/buildagent/work/ecd860037212ac52/osu.Game/Screens/Play/Player.cs:line 747
```
2022-06-23 14:10:20 +09:00
Gabe Livengood
bf5a7e3f2a
add locked room filter
2022-06-22 17:01:28 -04:00
Dean Herbert
97fcf8cec9
Merge pull request #18668 from smoogipoo/editor-controlpoint-undo-redo
2022-06-23 04:02:24 +09:00
Dean Herbert
948c28f415
Fix collection modified during BlockAllOperations
if any subscriptions have been established
2022-06-22 20:34:05 +09:00
Dean Herbert
b660119de7
Merge pull request #18796 from bdach/mod-overlay/legacy-key-bindings
...
Add setting option to toggle between mod overlay hotkey styles
2022-06-22 20:28:18 +09:00
Jamie Taylor
950551f4fd
Fix metronome arm being stuck white when paused 'close enough' to center
2022-06-22 15:33:42 +09:00
Dan Balasescu
b81c7c7951
Merge pull request #18804 from Joehuu/online-view-chat-overlay
...
Add back online view container to chat overlay
2022-06-22 14:41:06 +09:00
Dean Herbert
e15b2afdd9
Merge branch 'master' into reorganised-maintenance-section
2022-06-22 13:45:57 +09:00
Dan Balasescu
ff440fc1a4
Fix too many buttons inside condition
2022-06-22 13:44:41 +09:00
Dan Balasescu
321920bc85
Remove one more nullable disable
2022-06-22 13:44:41 +09:00
Dan Balasescu
1018c9852d
Cleanup nullability
2022-06-22 13:44:41 +09:00
Dan Balasescu
23254d2ff2
Fix broken files
2022-06-22 13:44:41 +09:00
Joseph Madamba
07e0cd53a4
Add back online view container to chat overlay
2022-06-21 19:23:16 -07:00
Joseph Madamba
50728f3fbc
Fix overlay header tab item not working with localisable string
2022-06-21 18:31:09 -07:00
Dean Herbert
cf0f32f928
Merge pull request #18790 from peppy/fix-realm-async-write-blocking-overhead
...
Fix blocking overhead when calling `WriteAsync`
2022-06-22 09:39:17 +09:00
Supersonicboss1
4aa86b0a80
fixed duplicates and cleaned up code
2022-06-21 23:41:25 +01:00
Supersonicboss1
e4931f977c
improved UI of maintenance section in settings
2022-06-21 23:00:03 +01:00
cdwcgt
bff35cb348
Shake button when replay already save
2022-06-22 01:19:20 +09:00
Bartłomiej Dach
7013909322
Remove unnecessary protected virtual
2022-06-21 16:43:04 +02:00
Bartłomiej Dach
f564ed589f
Alter sequential hotkey style to always use visible index
...
Previous behaviour was once mentioned off-hand as unintuitive.
2022-06-21 15:22:18 +02:00
Bartłomiej Dach
9e5cc89edb
Fix classic hotkeys toggling filtered mods
2022-06-21 15:01:33 +02:00
Bartłomiej Dach
da1814e7c3
Restructure everything to fix free mod overlay issue
2022-06-21 14:48:41 +02:00
Bartłomiej Dach
7b7b8c1892
Implement behaviour for classic selection style
2022-06-21 14:24:30 +02:00
Bartłomiej Dach
234120ff43
Forward entire event to IModHotkeyHandler
...
Required for shift handling in the classic implementation.
2022-06-21 13:37:17 +02:00
Bartłomiej Dach
658f5341c7
Set up flow for switching between hotkey styles
2022-06-21 13:34:58 +02:00
Bartłomiej Dach
5abd8a07d2
Add setting for changing mod select hotkey style
2022-06-21 13:33:17 +02:00
cdwcgt
f2eb7e0551
Use better design and fix some problem
...
Let saveReplay async but still void
Make failed score's rank = F
2022-06-21 19:06:38 +08:00
Dan Balasescu
816fd338cb
Fix typo
2022-06-21 19:57:27 +09:00
Bartłomiej Dach
73124d2b1f
Encapsulate mod hotkey selection logic in strategy pattern
2022-06-21 12:49:01 +02:00
Dan Balasescu
a7de43ade6
Add attribute ID
2022-06-21 19:31:45 +09:00
Dean Herbert
2e3d8d7e5d
Update framework
2022-06-21 18:13:14 +09:00
Dean Herbert
b7b7de115f
Merge pull request #18744 from nekodex/new-metronome-sfx
...
New audio feedback for metronome
2022-06-21 17:16:41 +09:00
Dean Herbert
f74b4ac277
Fix blocking overhead when calling WriteAsync
2022-06-21 17:15:25 +09:00
Dean Herbert
7d988da2c7
Merge pull request #18788 from peppy/editor-seek-constant-while-playing
...
Change editor seek-while-playing modifier to be BPM agnostic
2022-06-21 15:28:46 +09:00
Dean Herbert
a40ad6f784
Add slight transform when resetting arm from almost-zero
2022-06-21 15:07:35 +09:00
Dean Herbert
82c4d855d4
Rename sample variable to be easier to discern from other fields
2022-06-21 15:05:17 +09:00
Dean Herbert
16a9e18815
Adjust timing of latch to be more in sync with visuals
2022-06-21 15:02:53 +09:00
Dean Herbert
7b46d38318
Move colour fade back to where it was
2022-06-21 15:02:43 +09:00
Dean Herbert
3b79c632f5
Merge branch 'master' into new-metronome-sfx
2022-06-21 14:58:58 +09:00
Dean Herbert
42701757c3
Fix latch reset logic
2022-06-21 14:52:57 +09:00
Dean Herbert
22cb8b0d43
Merge pull request #18768 from smoogipoo/spectator-reset-speed-at-end
...
Reset spectator speed after the last frame is reached
2022-06-21 14:41:08 +09:00
Dean Herbert
1b122f88c0
Merge pull request #18786 from bdach/osu-link-ipc
...
Add ability to handle `osu://` scheme links via IPC on desktop
2022-06-21 14:40:46 +09:00
Dean Herbert
88f450e1d0
Remove accidental nullable enable
spec
2022-06-21 14:40:21 +09:00
Bartłomiej Dach
6807d0e44f
Merge branch 'master' into osu-link-ipc
2022-06-21 07:27:35 +02:00
Dean Herbert
72c0fc3fec
Merge pull request #18753 from frenzibyte/prevent-mistimed-metronome-beats
...
Fix metronome playing mistimed beat sounds on editor clock resume
2022-06-21 13:48:42 +09:00
Dean Herbert
c61e90d768
Change editor seek-while-playing modifier to be BPM agnostic
2022-06-21 13:07:50 +09:00
Dan Balasescu
046b848bcd
Split group selection to separate method
2022-06-21 12:53:06 +09:00
Salman Ahmed
4472c6fe2e
Merge branch 'master' into spectator-reset-speed-at-end
2022-06-21 06:46:37 +03:00
Salman Ahmed
f103de4efb
Merge branch 'master' into spectator-reset-speed-at-end
2022-06-21 06:37:58 +03:00
Dan Balasescu
b3e5642dfd
Use WaitingOnFrames instead
2022-06-21 12:23:43 +09:00
Dan Balasescu
93ce6fc981
Remove redundant diff processing
2022-06-21 12:11:44 +09:00
Dan Balasescu
9763a58392
Change to use ReferenceEquals
2022-06-21 12:05:52 +09:00
Dan Balasescu
6a26461683
Compare by reference in ControlPoint.Equals()
2022-06-21 12:05:28 +09:00
Bartłomiej Dach
ee96d84ffa
Merge branch 'master' into input-settings
2022-06-20 22:55:43 +02:00
Bartłomiej Dach
21d60231b6
Add limited test coverage of osu://
scheme link IPC flow
2022-06-20 22:22:25 +02:00
Bartłomiej Dach
330af7ec74
Handle osu://
scheme links via IPC in desktop game
2022-06-20 21:26:22 +02:00
Bartłomiej Dach
92011124d1
Implement IPC channel for osu://
scheme links
2022-06-20 20:08:36 +02:00
Bartłomiej Dach
34f1c80b7c
Add and use ILinkHandler
interface
2022-06-20 20:04:21 +02:00
cdwcgt
43ead5820a
deal with test
2022-06-21 00:54:50 +09:00
cdwcgt
5a5cc523ce
Let F to -1 temporary
2022-06-20 23:43:33 +08:00
Bartłomiej Dach
577a87bcad
Merge branch 'master' into importer-post-import-rename
2022-06-20 13:37:16 +02:00
Dean Herbert
ba394f2831
Remove IPostsImports
interface (and move to IModelImporter
)
2022-06-20 18:53:48 +09:00
Dean Herbert
e732c5a2d7
Add PostImport
method matching PreImport
2022-06-20 18:40:23 +09:00
Dean Herbert
45c5013f09
Remove default value of RealmArchiveModelImporter.HandledExtensions
...
Not used anywhere and probably not wanted ever.
2022-06-20 18:40:23 +09:00
Dean Herbert
dbae4c6f5a
PostImport
-> PresentImport
2022-06-20 18:36:29 +09:00
Dean Herbert
ebcee21f6f
Remove necessity to provide BeatmapDifficultyCache
as a function to ScoreManager
2022-06-20 17:52:42 +09:00
Dan Balasescu
c402e90598
Merge pull request #18777 from peppy/output-directory-on-import-failure
...
Silence exception and provide more log output when import fails due to empty `.osu` files
2022-06-20 17:36:21 +09:00
Dan Balasescu
e0c82d11ab
Convert == usages to ReferenceEquals
2022-06-20 16:56:19 +09:00
Dan Balasescu
16281f4a48
Properly annotate method to allow null
2022-06-20 16:56:19 +09:00
Dan Balasescu
ca287d0936
Fix group deselected when table is recreated
2022-06-20 16:56:19 +09:00
Dean Herbert
d38defada4
Silence exception and provide more log output when import fails due to empty .osu
files
2022-06-20 16:07:10 +09:00
Dean Herbert
4aa32038c3
Add note about stream provided to ImportTask
being disposed implicitly
2022-06-20 15:38:44 +09:00
Dean Herbert
882e1c69e5
Move nested task back outside try-catch to avoid double-error
2022-06-20 15:36:44 +09:00
Dean Herbert
678b18dde6
Ensure any non-MemoryStream
streams are closed as part of ImportTask
2022-06-20 15:29:56 +09:00
Dan Balasescu
a922ea9b01
Fix selection by directly comparing control points
...
Previously, all control points would get replaced, which led to
performance issues that was worked around in this PR. By comparing
control points, we're able to get good performance without requiring the
workaround.
2022-06-20 15:29:29 +09:00
Dan Balasescu
03ab6fc141
Implement IEquatable on ControlPoint
2022-06-20 15:27:43 +09:00
Dean Herbert
dd93c7359e
Update xmldoc for importFromArchive
method
2022-06-20 15:25:43 +09:00
Dean Herbert
92f1a2958c
Rename Import(TModel)
to ImportModel
to differentiate from other import methods
2022-06-20 15:18:07 +09:00
Dean Herbert
a6c8a832aa
Remove Import(ArchiveReader)
and redirect existing usages to Import(ImportTask)
2022-06-20 15:14:57 +09:00
Dean Herbert
7daab2d45b
Merge branch 'master' into skin-editor-transform-fix
2022-06-20 14:10:01 +09:00
Dean Herbert
329f1a0822
Add test coverage of original fail case and improve test reliability and code quality
2022-06-20 14:08:05 +09:00
Dan Balasescu
468e5fcbed
Merge branch 'master' into editor-controlpoint-undo-redo
2022-06-20 13:47:01 +09:00
Gabe Livengood
a5bc769243
clear skineditor selected components on hide
2022-06-19 14:34:52 -04:00
Gabe Livengood
36df1da57f
Revert "stop component transform when skineditor is hidden"
...
This reverts commit 48ffd6aeb5
.
2022-06-19 14:26:02 -04:00
Bartłomiej Dach
3ab8158b92
Do not try to set ruleset from beatmap if it's a dummy
2022-06-19 20:08:39 +02:00
Bartłomiej Dach
93b3ede2a0
Always use beatmap ruleset in editor gameplay test mode
...
Fixes cases where opening a convertible beatmap (so any osu! beatmap)
with the game-global ruleset being set to anything but osu! would result
in opening the editor gameplay test mode with the game-global ruleset
rather than the beatmap's.
2022-06-19 19:30:40 +02:00
cdwcgt
9a6f4ef76d
Save score button on failed screen
2022-06-19 23:59:37 +09:00
Bartłomiej Dach
9023fdc947
Merge branch 'master' into reidrect-graceful-exit
2022-06-19 13:43:15 +02:00
Bartłomiej Dach
495d747da5
Fix mismatching braces in comment
2022-06-19 13:42:45 +02:00
Dan Balasescu
98d69c846c
Reset spectator speed at last frame
2022-06-19 17:12:20 +09:00
Dean Herbert
6515b249ec
Change data migration to do an immediate exit, rather than attempted exit
2022-06-19 12:39:58 +09:00
Dean Herbert
50e40756c4
Rename GracefullyExit
to AttemptExit
2022-06-19 12:34:44 +09:00
Salman Ahmed
a2e17941e5
Merge branch 'master' into timing-offset-adjust-seek-only-at-start
2022-06-19 01:27:44 +03:00
Bartłomiej Dach
2a95715652
Merge branch 'master' into fix-input-regression
2022-06-18 19:44:53 +02:00
Salman Ahmed
f7fc456bb1
Merge branch 'master' into reidrect-graceful-exit
2022-06-18 19:37:53 +03:00
Dean Herbert
3902dc64f0
Fix adjusting offset via button seeking to timing point's offset unexpectedly
...
This was added with the intention of tracking the offset when already at
the start (the most common case when you're using the tap timing
wizard), but was also seeking when the user may be much further beyond
or before it.
Addresses https://github.com/ppy/osu/discussions/18741#discussioncomment-2975051 .
2022-06-19 01:35:45 +09:00
Dean Herbert
b2663d9399
Update xmldoc to suggest that GracefullyExit
may be overridden
2022-06-19 01:14:48 +09:00
Dean Herbert
3fa8c19acd
Merge branch 'master' into latency-certifier/hidden-cursor
2022-06-19 00:31:11 +09:00
Salman Ahmed
a5e5172b91
Fix BlueprintContainer
eating input from skin editor buttons
2022-06-18 18:28:36 +03:00
Dean Herbert
56abe54fe6
Redirect graceful exiting to standard exit flow
...
Rather than doing a completely forced exit as we were, this will now
follow a more standard flow with the ability for the user to abort along
the way. This is more in line with how I wanted this to work.
Note that this means a confirmation is now shown. It has been discussed
in the past that this confirmation should only show when there's an
ongoing action implies the user may want to cancel the exit. For now I
think this is fine.
Addresses
https://github.com/ppy/osu/discussions/18399#discussioncomment-2811311
2022-06-18 23:43:46 +09:00
Bartłomiej Dach
5917c70127
Merge branch 'master' into multi-song-select-operation
2022-06-18 11:58:13 +02:00
Bartłomiej Dach
f6a3047596
Merge branch 'master' into editor-metadata-name-unification
2022-06-18 10:22:52 +02:00
Dan Balasescu
77e7e4ecb2
Fix selection being blocked after early return
2022-06-18 14:28:30 +09:00
Dean Herbert
bd5037fcad
Fix new hitobject placements not taking on the existing sample settings
...
Similar to velocity / difficulty points, a user expectation is that
volume and sample settings will be transferred to newly placed objects
from the most recent one.
Closes https://github.com/ppy/osu/issues/18742 .
2022-06-18 13:49:59 +09:00
Dean Herbert
8ad96fd94b
Update resources
2022-06-18 10:55:24 +09:00
Salman Ahmed
204348f327
Fix metronome playing mistimed beat sounds on editor clock resume
2022-06-18 04:49:44 +03:00
Salman Ahmed
8a1d11fefb
Cancel previous metronome sound playback on pause
2022-06-18 04:07:21 +03:00
Dan Balasescu
e04df371d1
Merge branch 'master' into multi-song-select-operation
2022-06-18 08:51:24 +09:00
Dan Balasescu
14cdb01fd8
Revert unintended change
2022-06-18 08:49:48 +09:00
Gabe Livengood
48ffd6aeb5
stop component transform when skineditor is hidden
2022-06-17 11:28:58 -04:00
Dean Herbert
4bc26dbb48
Merge pull request #18743 from smoogipoo/nullable-by-default
...
Enable NRT by default
2022-06-17 23:18:35 +09:00
Dean Herbert
5d93db1522
Merge pull request #18726 from peppy/disclaimer-stop-handling-after-suspend
...
Fix `Disclaimer` screen handling user change events after initial display
2022-06-17 18:28:06 +09:00
Dean Herbert
1900480d51
Inline animation method
2022-06-17 17:06:06 +09:00
Dan Balasescu
869db52540
Tie loading layer to ongoing operation state
2022-06-17 17:05:23 +09:00
Dean Herbert
e51babdb96
Change heart animation flow to be more correct
2022-06-17 17:01:11 +09:00
Jamie Taylor
1f78a4fadd
New audio feedback for metronome
2022-06-17 16:56:09 +09:00
Dan Balasescu
fd9902e816
Manual #nullable processing
2022-06-17 16:38:35 +09:00
Dan Balasescu
f8830c6850
Automated #nullable processing
2022-06-17 16:37:17 +09:00
Dan Balasescu
ea191da496
Merge pull request #18728 from peppy/fix-unsafe-sample-playback
...
Fix unsafe sample playback in `GameplaySampleTriggerSource`
2022-06-17 12:26:46 +09:00
Bartłomiej Dach
6ff6a3f5b3
Rename and document chooserPath
2022-06-16 21:51:31 +02:00
Bartłomiej Dach
6f2f4dda37
Merge branch 'master' into fix-up-down
2022-06-16 21:44:56 +02:00
Salman Ahmed
db02cb81c5
Fix file chooser path not opening home directory initially
2022-06-16 20:48:17 +03:00
Salman Ahmed
f7a27b412a
Revert "Let latency certifier buttons steal hover from area"
...
This reverts commit beb0331640
.
2022-06-16 20:35:30 +03:00
Salman Ahmed
e4ddf03ad6
Fix toolbar music button handling keys while not hovered
2022-06-16 20:22:57 +03:00
Salman Ahmed
8e088140b2
Reword comment since IRequireHighFrequencyMousePosition
isn't the issue
2022-06-16 20:09:10 +03:00
Salman Ahmed
beb0331640
Let latency certifier buttons steal hover from area
2022-06-16 20:00:30 +03:00
Salman Ahmed
ed6817ae6a
Allow switching between latency and menu cursor using IProvideCursor
2022-06-16 19:46:31 +03:00
Salman Ahmed
52538dc708
Refactor LatencyCursorContainer
to become a cursor container
2022-06-16 19:46:04 +03:00
Salman Ahmed
47d0ecf5e8
Merge branch 'master' into editor-metadata-name-unification
2022-06-16 18:53:23 +03:00
Salman Ahmed
6aee689586
Fix previous file lookup not using metadata properties
2022-06-16 18:50:38 +03:00
Salman Ahmed
f1081db953
Fix background/track implicitly renamed on initial load
2022-06-16 18:48:32 +03:00
Bartłomiej Dach
651862fee0
Merge branch 'master' into database-migration-reliability
2022-06-16 17:19:58 +02:00
Dean Herbert
bf6c6682bc
Move null to finally
2022-06-16 23:37:24 +09:00
Dean Herbert
7809566f16
Add explanatory comments
2022-06-16 23:31:49 +09:00
Dean Herbert
7b0fad6461
Null disposal token after use
2022-06-16 23:29:33 +09:00
Bartłomiej Dach
9c4f6d2ce0
Merge branch 'master' into first-run-setup-notification-interruption
2022-06-16 15:14:40 +02:00
Dean Herbert
d48fbdb439
Merge branch 'bmm-cleanup' into bmm-cleanup-2
2022-06-16 19:48:54 +09:00
Dean Herbert
e66ccfd980
Add back missing notification flow
2022-06-16 19:48:18 +09:00
Dean Herbert
448eee051a
Update filename to match new class name
2022-06-16 19:41:14 +09:00
Dean Herbert
3860f0b3e5
Remove unused GetWorkingBetamap
method
2022-06-16 19:08:59 +09:00
Dean Herbert
ce3d3a967c
Reimplement missing methods
2022-06-16 19:05:25 +09:00
Bartłomiej Dach
a635664a86
Fix invalid method reference in comment
...
`BeatmapModelManager.Save()` was moved to `BeatmapManager`, not to
`BeatmapImporter`.
2022-06-16 12:01:53 +02:00
Dean Herbert
72c5b9009d
Remove local realm
fields in manager classes
2022-06-16 18:56:53 +09:00
Dean Herbert
f3984d98e6
Remove RealmArchiveModelManager
from hierarchy
2022-06-16 18:53:13 +09:00
Dean Herbert
8a5755ca52
Remove pointless override in test implementation
2022-06-16 18:27:16 +09:00
Dean Herbert
04e4c5ef88
Move and adjust implementation regions to restore sanity
2022-06-16 18:26:13 +09:00
Dean Herbert
4d9e3d1982
Rename Score/Skin ModelManager
classes to Importer
for now
2022-06-16 18:11:50 +09:00
Dean Herbert
1f3e1b2d97
Combine BeatmapManager
and BeatmapModelManager
into one class
2022-06-16 18:07:04 +09:00
Dean Herbert
8ea3042435
Move file extensions specification to common class
2022-06-16 18:00:27 +09:00
Dean Herbert
84dba36cf5
Update usages of BeatmapModelManager
which only require importing to use BeatmapImporter
2022-06-16 17:59:24 +09:00
Dean Herbert
4c372539a1
Consolidate remaining methods in BeatmapModelManager
2022-06-16 17:59:24 +09:00
Dean Herbert
251923c106
Convert NotificationOverlay
to NRT
2022-06-16 17:28:08 +09:00
Dean Herbert
6b30ee0950
Tidy up DI and binding logic
2022-06-16 17:26:43 +09:00
Dean Herbert
953ca8c2dd
Merge pull request #18715 from bdach/ruleset-mod-hardening
...
Add several protections when creating game-global available mods
2022-06-16 17:18:49 +09:00
Dean Herbert
4526f8c07d
Move database backup creation to async thread where possible
2022-06-16 17:01:17 +09:00
Dean Herbert
17dbb599d1
Don't backup collection database
...
This is no longer required due to recent changes which mean the
collection database will retain beatmap references even if they aren't
loaded locally (see https://github.com/ppy/osu/pull/18619 ).
2022-06-16 16:48:53 +09:00
Dean Herbert
739a696467
Ensure reading of existing databases when making backups doesn't create a file
2022-06-16 16:48:06 +09:00
Dean Herbert
ec53d87c30
Fix unsafe sample playback in GameplaySampleTriggerSource
...
Resolves https://github.com/ppy/osu/issues/18727 .
Added delay from `Schedule` should be minimal as it is always called
from the `Update` thread (input propagation) anyway.
2022-06-16 16:04:57 +09:00
Dean Herbert
89533fa33d
Fix Disclaimer
screen handling user change events after initial display
...
Unnecessary overhead, but also should resolve a production hard crash.
2022-06-16 15:40:20 +09:00
Dean Herbert
ac554ca51f
Update resources
2022-06-16 15:06:34 +09:00
Bartłomiej Dach
f88c568c8d
Update flag sizes after switch to twemoji assets
...
The old flags used a size of 150x100, while the new assets based on
twemoji use a size of 150x108. Update existing usages to match this new
aspect ratio better.
2022-06-15 21:45:47 +02:00
Salman Ahmed
2c35b1404b
Use FileInfo
as current bindable type
2022-06-15 19:29:09 +03:00
Salman Ahmed
5d74d92fcf
Revert virtual
current bindable
2022-06-15 19:28:43 +03:00
Salman Ahmed
e7dcbddbeb
Fix potential null reference
2022-06-15 18:53:49 +03:00
Bartłomiej Dach
1acbb87aa6
Ensure AvailableMods.Value
is never null
2022-06-15 17:40:16 +02:00
Bartłomiej Dach
30382b0445
Fill out GetModsFor()
xmldoc and annotate items as non-null
2022-06-15 17:40:15 +02:00
Bartłomiej Dach
e74b563b91
Add protection against arbitrary exceptions from GetModsFor()
2022-06-15 17:31:46 +02:00
Bartłomiej Dach
6e5e506fb4
Add protection against rulesets returning null mods
2022-06-15 17:31:46 +02:00
Salman Ahmed
026bad7fc4
Use notification processing mode logic instead
2022-06-15 18:13:24 +03:00
Salman Ahmed
1ff070f5ff
Decouple LabelledFileChooser
from LabelledTextBoxWithPopover
2022-06-15 17:45:31 +03:00
Dean Herbert
f23ddfe6cc
Move remaining realm classes out of Stores
namespace
2022-06-15 21:56:00 +09:00
Dean Herbert
23d7667f39
Move BeatmapImporter
to correct namespace
2022-06-15 21:47:52 +09:00
Dean Herbert
9edc4fc181
Remove unnecessary ShouldDeleteArchive
override (already done in base implementation)
2022-06-15 21:47:52 +09:00
Dean Herbert
7571ab6c63
Merge branch 'master' into new-dialog-sfx
2022-06-15 19:47:00 +09:00
Dean Herbert
7a2919975a
Fix sound clash when exiting a multiplayer room with confirmation
2022-06-15 18:48:22 +09:00
Dan Balasescu
d89c80ace2
Block operations during beatmap selection in match
2022-06-15 18:44:16 +09:00
Dean Herbert
1520ccf865
Fix double back sound due to sub screen presence in multiplayer/playlists
2022-06-15 18:44:16 +09:00
Dean Herbert
c27e5d1216
Fix editor still playing back sound when exiting with confirmation
2022-06-15 18:44:02 +09:00
Dean Herbert
e880fcf3cb
Merge pull request #18704 from peppy/update-framework
...
Update framework
2022-06-15 18:06:11 +09:00
Dean Herbert
584345a97e
Merge pull request #18693 from frenzibyte/toolbar-volume-control
...
Add basic volume control support in toolbar music button
2022-06-15 17:50:10 +09:00
Dean Herbert
be2b4e68b9
Don't play player exit sound when restarting
2022-06-15 17:49:18 +09:00
Dean Herbert
713cff3403
Don't play editor exit sound when changing difficulties
2022-06-15 17:49:09 +09:00
Dean Herbert
fd4529aa7c
Play editor exit sound if no confirmation buttons were shown during exit process
2022-06-15 17:37:54 +09:00
Dean Herbert
7ac5019c08
Fix intro screens playing exit sounds
2022-06-15 17:37:30 +09:00
Dean Herbert
6136e4e27a
Don't play exit sound if screen is in a non-resumable state when exiting
2022-06-15 17:37:25 +09:00
Dean Herbert
b3aa4fcf02
Adjust a channel rather than the overall sample
2022-06-15 17:33:07 +09:00
Dean Herbert
94aa2248ca
Move filter reset to more appropriate location
2022-06-15 17:32:21 +09:00
Dean Herbert
87bf53485a
Merge pull request #18649 from frenzibyte/selection-context-outside-bounds
...
Fix context menus not appearing when clicking outside of editor playfield's bounds
2022-06-15 17:08:09 +09:00
Dean Herbert
080f2859ef
Merge pull request #18689 from peppy/quick-import-only-on-batch
...
Always perform full consistency checks for single imports
2022-06-15 17:06:06 +09:00
Dean Herbert
accd6031bd
Update framework
2022-06-15 16:53:56 +09:00
Dean Herbert
1f1633ddc2
Remove Update
method processing of samples in PopupDialogDangerousButton
2022-06-15 16:50:23 +09:00
Salman Ahmed
583619b915
Use GlobalAction.DecreaseVolume
instead
2022-06-15 10:21:27 +03:00
Dean Herbert
eac0ca4db6
Update resources
2022-06-15 16:14:46 +09:00
Salman Ahmed
dfab8b71f6
Merge branch 'master' into stable-beatmap-recursive-import
2022-06-15 10:06:46 +03:00
Dean Herbert
873806c2ea
Add keyboard adjustment support
2022-06-15 15:58:22 +09:00
Dean Herbert
3df9d7c9e1
Add a bit more animation when adjusting
2022-06-15 15:56:59 +09:00
Salman Ahmed
6a8cf514e0
Update background/track file chooser to not display filename
2022-06-15 09:52:13 +03:00
Dean Herbert
5eb56ab814
Ensure Master
volume is updated when scrolling on toolbar button
2022-06-15 15:41:40 +09:00
Jamie Taylor
5e3ccf7087
Don't play 'back' sample when exiting Editor
2022-06-15 15:41:28 +09:00
Jamie Taylor
6b744a14b0
Move 'back' sample playback from OnResuming to OnExiting
2022-06-15 15:41:28 +09:00
Jamie Taylor
af87722be8
Add audio feedback for 'Dangerous' dialog buttons
2022-06-15 15:41:27 +09:00
Jamie Taylor
930ec2a197
Add specific samples for dialog 'Ok' and 'Cancel' buttons
2022-06-15 15:41:27 +09:00
Dean Herbert
5201057a62
Change batch import to require at least 10 items
2022-06-15 15:31:58 +09:00
Dean Herbert
abe947bcb0
Update outdated xmldoc comments
2022-06-15 15:31:45 +09:00
Dean Herbert
19543685ff
Merge branch 'master' into quick-import-only-on-batch
2022-06-15 15:27:06 +09:00
Dean Herbert
cca7633e59
Rename variables and remove unnecessary nested call to GetFullPath
2022-06-15 15:05:51 +09:00
Salman Ahmed
f3f0960335
Use unified filename for background and track during editor import
2022-06-15 09:02:48 +03:00
Salman Ahmed
d3feb07bc1
Split zoom updating to named method with value as optional
2022-06-15 07:57:16 +03:00
Salman Ahmed
22c09ec893
Handle subdirectories during beatmap stable import
2022-06-15 07:33:21 +03:00
Salman Ahmed
ee8045d507
Add failing test case
2022-06-15 07:33:21 +03:00
Salman Ahmed
268a7e1334
Fix ZoomableScrollContainer
attempting to update zoom with overlapping range
2022-06-15 05:43:41 +03:00
Salman Ahmed
ddeee09a51
Fix important notifications interrupting first-run setup
2022-06-15 03:40:05 +03:00
Salman Ahmed
1171d44ad9
Add failing test case
2022-06-15 03:37:04 +03:00
Salman Ahmed
36599d1174
Merge branch 'master' into fix-hit-error-when-not-visible
2022-06-14 22:47:11 +03:00
Salman Ahmed
1f31e3fb51
Add volume UI to toolbar music button
2022-06-14 22:15:12 +03:00
Salman Ahmed
7f23677972
Add volume control support via toolbar music button
2022-06-14 22:15:12 +03:00
Dean Herbert
49ec2572b8
Allow scrolling overflow of ruleset buttons in the toolbar
2022-06-15 01:43:10 +09:00
Salman Ahmed
d89c11e49e
Allow Toolbar
to block scroll input from passing through
2022-06-14 19:10:13 +03:00
Dean Herbert
6be4209458
Fix AlwaysPresent
specification in wrong container
2022-06-15 01:04:43 +09:00
Dean Herbert
88d5e074a8
Rename lowPriority
to batchImport
2022-06-15 00:46:00 +09:00
Dean Herbert
f11fe54385
Remove custom hash function flow
2022-06-15 00:42:30 +09:00
Dean Herbert
2f8290831a
Skip quick import clause when importing a single item
...
Closes https://github.com/ppy/osu/issues/18600 .
2022-06-15 00:26:34 +09:00
Dean Herbert
7affef75b0
Remove unused Import
method in SkinManager
2022-06-15 00:26:34 +09:00
Dean Herbert
cf2238f683
Merge pull request #18688 from peppy/too-many-import-methods
...
Various clean-up on model managers / importer classes
2022-06-15 00:12:33 +09:00
Dan Balasescu
cc7943dfb1
Merge pull request #18687 from peppy/editor-repeat-behaviour-change-collapsing
...
Fix timing adjustment repeat buttons firing one change per repeat invocation
2022-06-14 20:24:13 +09:00
Dean Herbert
94ba71aa13
Remove one more usage of lowPriority
2022-06-14 20:21:28 +09:00
Dean Herbert
6250caca29
Remove duplicate implementation of same thing
2022-06-14 20:01:11 +09:00
Dean Herbert
e96c5ce703
Move and correct xmldoc to interfaces
2022-06-14 20:00:16 +09:00
Dean Herbert
84e526a2d9
Move methods around to make more sense
2022-06-14 20:00:08 +09:00
Dean Herbert
9f599a5ab4
Remove unused lowPriority
flag from one Import
method
2022-06-14 19:52:30 +09:00
Dean Herbert
ca0765a932
Tidy up various delegation implementations
2022-06-14 19:46:59 +09:00
Dean Herbert
d73c0ca659
Remove unused methods from IModelImporter
...
All the xmldoc is already present in `RealmArchiveModelImporter` so
nothing is lost here.
2022-06-14 19:42:11 +09:00
Dean Herbert
c30644328c
Fix timing adjustment repeat buttons firing one change per repeat invocation
2022-06-14 19:21:02 +09:00
Dean Herbert
aeca138930
Fix ctrl-z in editor also seeking to start in addition to undo
2022-06-14 18:48:57 +09:00
Dean Herbert
a20e43c2ae
Ensure containers which are being used to hide HUD elements still update for now
...
I don't think this is necessarily a final solution (as this means all
HUD elements are adding overhead even when not visible), but this will
make the implementations much easier for the time being.
I've checked and can't notice any perceivable overhead in profiling so
we should be fine for now.
2022-06-14 18:22:25 +09:00
Salman Ahmed
fa4930c586
Remove no longer necessary ReceivePositionalInputAt
overrides in timeline components
2022-06-14 00:19:47 +03:00
Salman Ahmed
c49b8e4a5c
Allow BlueprintContainer
and SelectionHandler
to receive input outside bounds
2022-06-14 00:19:15 +03:00
Salman Ahmed
9fc04924eb
Revert "Provide context menu items at BlueprintContainer
for out-of-bounds support"
...
This reverts commit 85fc218edf
.
2022-06-14 00:02:02 +03:00
Dean Herbert
bd9ea9bd6f
Revert most unnecessary changes
...
Turns out `AlwaysPresent` at top level is actually enough.
This reverts commit 86163d2225
.
2022-06-13 23:58:14 +09:00
Dean Herbert
336df62a1f
Remove unnecessary file existence check
...
This is not required due to `createFileInfos` always being run before we
get to this point (I believe this was added after the initial code to
check existence was added).
This flow is covered in
`BeatmapImportTests.TestImportThenReimportAfterMissingFiles`, which
still passes with the change.
While this check isn't doing any harm, as I'm going through the flow for
import-skipping, less checks are appreciated.
2022-06-13 18:57:30 +09:00
Dan Balasescu
b88461b3c9
Merge pull request #18671 from peppy/latency-scrolling-gameplay
...
Add scrolling gameplay visualisation mode to latency certifier
2022-06-13 18:46:46 +09:00
Dan Balasescu
f680f4d26b
Apply refactorings from review
2022-06-13 17:36:32 +09:00
Dan Balasescu
7ac8ba0a74
Merge pull request #18368 from apollo-dw/dho
...
Move object history in difficulty calculation to the object itself
2022-06-13 17:31:08 +09:00
Dean Herbert
f997886142
Add scrolling gameplay visualisation mode to latency certifier
2022-06-13 17:18:32 +09:00
Dan Balasescu
c178e5d592
Add explanatory comment
2022-06-13 16:58:43 +09:00
Dan Balasescu
a8286bdf04
Fix assertion failures
2022-06-13 16:56:08 +09:00
Dan Balasescu
285e5abb41
Fix incorrect fallback value
2022-06-13 16:55:46 +09:00
Dean Herbert
86163d2225
Fix hit error meters not updating visual state when hidden
...
It is an expectation of users that when the HUD is shown after a period
of being hidden, it will visually reflect the state based on recent
judgements.
To achieve this, I've added `AlwaysPresent` and moved the transform
application to the meter level, rather than at a child level. If this is
seen as a bad direction, `AlwaysPresent` can be applied to the drawable
children and the transforms can be moved back.
Also of note, `ColourHitErrorMeter` is pretty weird. The flow class
could potentially be removed and reduce `AlwaysPresent` usage by one.
Can do that refactor as part of this PR if preferred.
Closes #18624 .
2022-06-13 16:38:57 +09:00
Dean Herbert
17eaf7bb5c
Add failing test coverage showing hit meters don't update when not visible
2022-06-13 16:36:22 +09:00
Dan Balasescu
5a18547342
Compare by char
...
Co-authored-by: Berkan Diler <berkan.diler1@ingka.ikea.com>
2022-06-13 15:58:11 +09:00
Dan Balasescu
776e7c0c71
Work around performance issues
2022-06-13 15:45:08 +09:00
Dan Balasescu
7e7716f942
Support undo/redo for control points
2022-06-13 15:45:08 +09:00
Dean Herbert
77fcf35d1d
Remove unlimited frame limiter warning
...
This should not be required now that we have a 1,000 Hz limiter in
place.
2022-06-13 15:40:27 +09:00
Dan Balasescu
dfc643fd8c
Match family string via GetFamilyString()
2022-06-13 12:35:10 +09:00
Salman Ahmed
3aec0fe9b6
Fix torus alternate not mapping "medium" weight to "regular"
2022-06-13 04:45:07 +03:00
Salman Ahmed
7971355660
Fix torus "medium" weight not mapped to "regular" when using With
2022-06-13 04:44:44 +03:00
Salman Ahmed
051aa8f028
Mark family strings as verbatim
2022-06-13 04:43:14 +03:00
Salman Ahmed
85fc218edf
Provide context menu items at BlueprintContainer
for out-of-bounds support
2022-06-11 20:53:53 +03:00
Dan Balasescu
12ff98001d
Merge pull request #18635 from peppy/latency-comparer-more-modes
...
Add multiple display modes (including circle gameplay) to latency certification
2022-06-12 00:59:36 +09:00
Dan Balasescu
486f762f44
Fix inspection by removing unstable rate code
2022-06-12 00:13:36 +09:00
Dean Herbert
af353c37c0
Don't show UR for now
2022-06-11 23:54:11 +09:00
Dean Herbert
52c8cea27d
Update spectator/multiplayer endpoint in line with new deployment
2022-06-11 22:31:01 +09:00
Salman Ahmed
419b5791c9
Move circle duration to constant
2022-06-11 16:08:24 +03:00
Dean Herbert
8d53ed64a3
Fix mode cycling and add test coverage
2022-06-11 21:36:43 +09:00
Dean Herbert
0c333e5c08
Link directly to methodology section
...
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2022-06-11 21:34:00 +09:00
Dean Herbert
c697dc90e4
Hide settings at results screen
2022-06-11 21:32:02 +09:00
Dean Herbert
d130e7ebff
Remove ScrollingGameplay
class for now
2022-06-11 21:30:33 +09:00
Dean Herbert
68da9f0386
Add explicit precision for BPM adjustment
...
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2022-06-11 21:27:44 +09:00
Salman Ahmed
06f070c3ec
Fix latency certifier potentially reporting infinite mouse polling rate
2022-06-11 14:58:16 +03:00
Dean Herbert
8562641560
Update framework
2022-06-11 12:48:31 +09:00
Dean Herbert
096d6df868
Fix regression in testing and setting logic
2022-06-10 20:33:21 +09:00
Dean Herbert
8ce545ff9d
Fix visuals in circle gameplay and greedy hover
2022-06-10 20:25:33 +09:00
Dean Herbert
b956a916c1
Make units sane
2022-06-10 20:21:03 +09:00
Dean Herbert
213ccfb743
Improve explanation text and add link to wiki
2022-06-10 20:14:12 +09:00
Dean Herbert
18f74b2840
Move settings and bindables to a sane location
2022-06-10 20:04:51 +09:00
Dean Herbert
837958b254
Remove scrolling gameplay mode for now
2022-06-10 19:43:09 +09:00
Dean Herbert
ef5c1a1ecb
Improve visuals of circle gameplay mode
2022-06-10 19:42:25 +09:00
Dean Herbert
a6fd61c444
Default to circle gameplay mode
2022-06-10 19:42:25 +09:00
Dean Herbert
41d16c613d
Fix being able to hit way too early using keyboard
2022-06-10 19:42:25 +09:00
Dean Herbert
2f1c331f65
Move shared logic to LatencySampleComponent
and implement key support for circle gameplay
2022-06-10 19:42:25 +09:00
Dean Herbert
7f4a54096f
Fix circles in the future being hittable
2022-06-10 19:42:25 +09:00
Dean Herbert
ba14d646c3
Add static configuration
2022-06-10 19:42:25 +09:00
Dean Herbert
5deaa42e9f
Stop music on entering latency certification screen
2022-06-10 19:42:25 +09:00
Dean Herbert
5c7d29cd31
Remove dependency on game-wide audio
2022-06-10 19:42:25 +09:00
Dean Herbert
d46739ff0b
Add circle gameplay test coverage
2022-06-10 19:42:25 +09:00
Dean Herbert
c657ef2722
Add ability to adjust spacing
2022-06-10 19:42:25 +09:00
Dean Herbert
e9547542ea
Add circle gameplay
2022-06-10 19:42:25 +09:00
Dean Herbert
53eb5c176c
Create setup for adding other visual display modes
2022-06-10 19:42:25 +09:00
Dan Balasescu
e5d6dc1ba5
Merge pull request #18606 from peppy/latency-comparer
...
Add latency certifier system
2022-06-10 19:41:44 +09:00
Dean Herbert
e0644f2726
Simplify flow of progression to be linear
2022-06-10 15:19:10 +09:00
Dean Herbert
5541ebc76b
Revert OsuButton
changes
2022-06-10 15:02:26 +09:00
Dan Balasescu
c9dfffbc0e
Merge pull request #18619 from peppy/fix-collection-performance
...
Fix performance overhead of large collections
2022-06-10 15:01:31 +09:00
Dean Herbert
eb16de9c71
Use upper-case "Hz"
2022-06-10 14:38:04 +09:00
Dean Herbert
f71343c880
Fix box colour getting stuck when changing active mode
2022-06-10 14:28:46 +09:00
Dean Herbert
5b8bd24140
Simplify text when reaching maximum supported level
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-06-10 14:25:15 +09:00
Dean Herbert
69b856bd58
Rename rounds variables to hopefully read better
2022-06-10 14:23:24 +09:00
Dean Herbert
613814c26c
Make TargetFrameRate
nullable
2022-06-10 14:18:35 +09:00
Dean Herbert
c625c929e5
Update button text to match new terminology
2022-06-10 14:16:56 +09:00
Dean Herbert
4a5e86e451
Rename Beatmaps
to BeatmapHashes
for clarity
2022-06-10 14:03:51 +09:00
Dean Herbert
3b229624dd
Simplify contains check to use LINQ the whole way
2022-06-10 14:02:58 +09:00
Dean Herbert
70ebfbcf5e
Add recommendation text and adjust weightings to read better
2022-06-09 19:26:24 +09:00
Dan Balasescu
6d2a2ba7d6
Rename Position -> Index
2022-06-09 18:49:11 +09:00
Dan Balasescu
f0ef2e610e
Merge branch 'master' into dho
2022-06-09 18:29:14 +09:00
Dan Balasescu
bc7262a3dd
Merge pull request #18627 from Joehuu/always-show-mod-selector-beatmap-info
...
Always show mod selector on beatmap info leaderboards regardless of supporter
2022-06-09 18:18:12 +09:00
Dan Balasescu
6e450b7350
Explicitly handle operation cancelled exceptions
2022-06-09 14:35:53 +09:00
Dan Balasescu
ec03dc16db
Don't trigger notification when user quit
2022-06-09 14:13:14 +09:00
Dan Balasescu
bfde334e77
Allow beatmaps to load endlessly when entering Player
2022-06-09 14:03:21 +09:00
Dan Balasescu
85c85f37c6
Merge pull request #18622 from jai-x/chat-timestamp-colour
...
Enable nullable types in `ChatLine` and update timestamp colours to match design
2022-06-09 11:39:51 +09:00
Dean Herbert
8879c59b36
Merge pull request #18623 from LittleEndu/new-me-recommender
...
Use new own profile statistics in difficulty recommender
2022-06-09 11:11:21 +09:00
Dan Balasescu
ace03a3c1a
Merge pull request #18620 from peppy/channel-manager-always-has-api
...
Ensure `ChannelManager` has access to API from point of construction
2022-06-09 11:03:13 +09:00
Joseph Madamba
f3371e8bc8
Always show mod selector on beatmap info leaderboards regardless of supporter
2022-06-08 13:22:49 -07:00
Endrik Tombak
c90b285861
Change variable name and inline it
2022-06-08 21:10:27 +03:00
Endrik Tombak
bf67b35ade
Use new own profile statistics in difficulty recommender
2022-06-08 17:44:57 +03:00
Jai Sharma
c2ed41d097
Remove CanBeNull
specification from DI attributes
2022-06-08 15:10:19 +01:00
Jai Sharma
04b434b8ce
Update ChatLine
timestamp and message colours
2022-06-08 14:04:01 +01:00
Jai Sharma
dfa31df2af
Use #nullable enable
in ChatLine
2022-06-08 14:04:01 +01:00
Dean Herbert
c22bffaa01
Fix filter failure when no collection is selected
2022-06-08 19:30:18 +09:00
Dean Herbert
187086e4ec
Merge pull request #18609 from ALANVF/settings-delete-skin
...
Add button to delete the current skin
2022-06-08 19:18:59 +09:00
Dean Herbert
c661f2b059
Ensure ChannelManager
has access to API from point of construction
...
Closes https://github.com/ppy/osu/issues/18451 .
2022-06-08 19:15:23 +09:00
Dean Herbert
42cd7d9e6e
Change CollectionManager
to only store MD5 hashes instead of full BeatmapInfo
2022-06-08 18:23:09 +09:00
Dan Balasescu
f8594acb1d
Cleanup dialog implementation
2022-06-08 18:17:43 +09:00
Dean Herbert
cf438b1a44
Add index on MD5Hash
property
...
Reduces actual query overhead significantly
2022-06-08 18:01:55 +09:00
Dan Balasescu
3a90aa0b9b
Fix code styling
2022-06-08 17:57:59 +09:00
Dean Herbert
5157a78ae6
Isolate nested sample screens from main game to avoid toolbar interactions
2022-06-08 16:53:06 +09:00
Dan Balasescu
c43670fcd9
Merge pull request #18603 from peppy/fix-import-dialog
...
Add placeholder when no results are visible at song select
2022-06-08 15:22:31 +09:00
Dean Herbert
3b46787e06
Merge pull request #18496 from smoogipoo/multiplayer-leaderboard-user-mods-2
...
Support mod/ruleset combinations in multiplayer gameplay leaderboard
2022-06-08 14:58:13 +09:00
Dean Herbert
eee79c9531
Merge pull request #18610 from jai-x/refactor-chat-line
...
Refactor `ChatLine` and fix `DrawableChannel` flow padding
2022-06-08 13:54:53 +09:00
Dean Herbert
cd649f7d97
Merge branch 'master' into multiplayer-leaderboard-user-mods-2
2022-06-08 13:39:42 +09:00
Salman Ahmed
830ff66688
Fix message notifier not handling unresolved PM channels
2022-06-08 04:31:31 +03:00
theangryepicbanana
6c05329144
Close #5820 (Ability to delete a single skin)
2022-06-07 18:01:40 -04:00
Jai Sharma
2f635fa854
Refactor ChatLine
and fix DrawableChannel
flow padding
...
Refactors `ChatLine` component to use more sensible override properties
and layout using grid container. Moves creation of username component
into its own method to simplify BDL.
Updates padding of base `DrawableChannel` flow padding.
Removes usage of `ChatOverlayDrawableChannel` since it's overrides are
no longer needed.
Updates usage of `StandAloneChatDisplay` to use new override properties
of `DrawableChannel`.
2022-06-07 22:35:45 +01:00
Dean Herbert
b924aa3296
Fix tests failing when run headless
2022-06-08 00:36:19 +09:00
Dean Herbert
228683e956
Fix nullability of dialogOverlay
dependency
2022-06-07 23:48:34 +09:00
Dean Herbert
2e0b888410
Fix song select carousel invalidating every frame during global overlay dimming
2022-06-07 23:46:53 +09:00
Dean Herbert
9da99a0ddf
Rename to latency certifier
2022-06-07 23:34:55 +09:00
Dean Herbert
1a1dfaeae6
Update framework
2022-06-07 23:27:59 +09:00
Dean Herbert
95dea00725
Tidy up code and namespaces
2022-06-07 23:10:08 +09:00
Dean Herbert
058760253a
Add test coverage of certification flow
2022-06-07 23:02:15 +09:00
Dean Herbert
c1ef59ab03
Add more comprehensive certification flow (and remove "difficulty" terminology)
2022-06-07 22:52:24 +09:00
Dean Herbert
0561e9cc75
Fix mouse focus not always working
2022-06-07 20:45:37 +09:00
Dean Herbert
f2524fc3d7
Increase separator width
2022-06-07 20:42:19 +09:00
Dean Herbert
60d7060baa
Add tab focus support
2022-06-07 20:28:42 +09:00
Dean Herbert
00a6cbe53f
Allow using J/K to move box as well
2022-06-07 20:03:49 +09:00
Dean Herbert
146225d87e
Fix multiple issues with layout and text
2022-06-07 20:02:26 +09:00
Dean Herbert
43a04010a7
Add display of polling rate
2022-06-07 19:43:33 +09:00
Dean Herbert
2e7a966218
Add proper frame rate limiting and fix mouse cursor missing at results
2022-06-07 19:31:56 +09:00
Dean Herbert
c0e88d9577
Add better messaging and pass/fail cutoff
2022-06-07 19:06:54 +09:00
Dean Herbert
3fc8ac0ec7
Add key bindings everywhere
2022-06-07 18:27:42 +09:00
Dean Herbert
a175defefd
Add difficulty levels
2022-06-07 18:11:54 +09:00
Dean Herbert
3bd8bbd297
Add explanatory text
2022-06-07 17:36:34 +09:00
Dean Herbert
c323c67d7d
Allow increasing confidence by playing longer
2022-06-07 17:28:31 +09:00
Dean Herbert
20cfa5d83f
Add button to access latency comparer from game
2022-06-07 17:28:31 +09:00
Dean Herbert
0adeccbf03
Add full latency testing flow
2022-06-07 17:28:31 +09:00
Dean Herbert
f8524c3af4
Use VisibilityContainer
to avoid too many animations triggering
2022-06-07 17:25:06 +09:00
Dean Herbert
a04af1ca5f
Enable nullable and add hinting at convert filter criteria
2022-06-07 17:25:06 +09:00
Dean Herbert
0d32c94104
Add initial implementation of beatmap carousel no-results-placeholder
2022-06-07 17:25:06 +09:00
Dean Herbert
df9174ec00
Remove import popup dialog from song select
...
This has been replaced in spirit by the first run overlay.
2022-06-07 16:45:27 +09:00
Dan Balasescu
476a05cafb
Merge pull request #18599 from hlysine/fix-score-panel-diff-name-overflow
...
Truncate difficulty name in score panel
2022-06-07 14:16:02 +09:00
Dan Balasescu
561a932d17
Merge pull request #18587 from peppy/skin-editor-fix-sizing
...
Fix skin editor not accounting for aspect ratios in base-game sizing logic
2022-06-07 13:19:50 +09:00
Henry Lin
ef5d601f67
Fix difficulty name overflow in score panel
2022-06-07 12:05:03 +08:00
Dan Balasescu
f576d53aed
Update some unmatching strings
2022-06-07 11:54:41 +09:00
Dan Balasescu
0bfbfc6411
Update package
2022-06-07 11:51:24 +09:00
Dan Balasescu
86b685f7e4
Merge pull request #18589 from peppy/skin-bool-parsin
...
Change `skin.ini` boolean parsing to match osu!stable
2022-06-07 10:11:07 +09:00
Dean Herbert
46eba86ad1
Remove unintended left-over invalidation code
2022-06-07 09:29:30 +09:00
Bartłomiej Dach
4df7711af8
Merge branch 'master' into volume-metre-keyboard-fix
2022-06-06 23:45:42 +02:00
Bartłomiej Dach
f7ae156bb5
Merge branch 'master' into skin-editor-null-ref-on-game-exit
2022-06-06 21:49:13 +02:00
Dean Herbert
3b4b35c51e
Remove unnecessary string interpolation
2022-06-06 20:18:57 +09:00
Dean Herbert
f96340e37d
Improve messaging of deletion progress / completion
2022-06-06 20:18:32 +09:00
Dean Herbert
b104b7a90d
Rename method to mention "all"
2022-06-06 20:12:20 +09:00
Dean Herbert
da000ee5f0
Centralise video file extensions
2022-06-06 20:11:43 +09:00
Dean Herbert
cb383d4bdc
Merge branch 'master' into delete-all-beatmap-videos-sbs
2022-06-06 20:08:05 +09:00
Dean Herbert
3862681d94
Change skin.ini
boolean parsing to match osu!stable
...
Closes https://github.com/ppy/osu/issues/18579 .
2022-06-06 19:43:09 +09:00
Dean Herbert
44400142e2
Merge pull request #18584 from smoogipoo/fix-spectating-combo
...
Fix combo starting at 0 when spectating
2022-06-06 19:16:47 +09:00
Dean Herbert
734636299e
Merge pull request #18567 from jai-x/update-dayseparator
...
Update `DaySeparator` to use new design throughout
2022-06-06 19:15:43 +09:00
Dean Herbert
a8764b67e1
Add padding and avoid using invalidation (triggers too often when toolbar is being toggled)
2022-06-06 18:28:56 +09:00