diff options
Diffstat (limited to 'src/imgui_ui_timeline.cpp')
-rw-r--r-- | src/imgui_ui_timeline.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/imgui_ui_timeline.cpp b/src/imgui_ui_timeline.cpp index 8b8ca36..ab38bae 100644 --- a/src/imgui_ui_timeline.cpp +++ b/src/imgui_ui_timeline.cpp @@ -513,7 +513,7 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem Test &= (Layer_ScreenPos_Min.x <= io.MouseClickedPos[0].x && Layer_ScreenPos_Max.x >= io.MousePos.x); if (Test) { - if (!(Layer->IsSelected & 0x01) && !(Layer->IsSelected & 0x02) && !Layer->IsLocked) { + if (!(Layer->IsSelected & 0x01) && !(Layer->IsSelected & 0x02) && (!Layer->IsLocked || io.KeyCtrl)) { Layer_Select(Memory, State, Index_Physical); } } else if (!io.KeyShift) { @@ -599,15 +599,16 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem if (ImGui::MenuItem("Visible", NULL, Layer->IsVisible)) { bool32 Commit = false; int h = 0, z = 0, i = 0; + bool32 Val = Layer->IsVisible ^ 1; while (Block_Loop(Memory, F_Layers, File->Layer_Count, &h, &z, &i)) { - block_layer *Layer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, i); - if (Layer->IsSelected & 0x01) { + block_layer *CurLayer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, i); + if (CurLayer->IsVisible != Val && CurLayer->IsSelected & 0x01) { if (!Commit) { History_Entry_Commit(Memory, "Toggle visibility"); Commit = true; } - History_Action_Swap(Memory, F_Layers, sizeof(Layer->IsVisible), &Layer->IsVisible); - Layer->IsVisible ^= 1; + History_Action_Swap(Memory, F_Layers, sizeof(CurLayer->IsVisible), &CurLayer->IsVisible); + CurLayer->IsVisible = Val; } } if (Commit) { @@ -618,15 +619,16 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem if (ImGui::MenuItem("Lock", NULL, Layer->IsLocked)) { bool32 Commit = false; int h = 0, z = 0, i = 0; + bool32 Val = Layer->IsLocked ^ 1; while (Block_Loop(Memory, F_Layers, File->Layer_Count, &h, &z, &i)) { block_layer *CurLayer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, i); - if ((CurLayer->IsSelected & 0x01) || (Layer == CurLayer)) { + if (CurLayer->IsLocked != Val && ((CurLayer->IsSelected & 0x01) || (Layer == CurLayer))) { if (!Commit) { History_Entry_Commit(Memory, "Toggle lock"); Commit = true; } History_Action_Swap(Memory, F_Layers, sizeof(CurLayer->IsLocked), &CurLayer->IsLocked); - CurLayer->IsLocked ^= 1; + CurLayer->IsLocked = Val; } } if (Commit) { |