@@ -623,6 +623,47 @@ namespace settings {
623623 variantBlock->addChild (std::move (variantSelect));
624624 fields->addChild (std::move (variantBlock));
625625
626+ auto shortcutBlock = std::make_unique<Flex>();
627+ shortcutBlock->setDirection (FlexDirection::Horizontal);
628+ shortcutBlock->setAlign (FlexAlign::Center);
629+ shortcutBlock->setGap (Style::spaceXs * scale);
630+ shortcutBlock->setFlexGrow (1 .0f );
631+ shortcutBlock->addChild (makeLabel (i18n::tr (" settings.session-actions.shortcut-label" ),
632+ Style::fontSizeCaption * scale, colorSpecFromRole (ColorRole::OnSurfaceVariant),
633+ false ));
634+
635+ auto shortcutRecorder = std::make_unique<KeybindRecorder>();
636+ shortcutRecorder->setScale (scale);
637+ shortcutRecorder->setModifierPolicy (ModifierPolicy::Optional);
638+ shortcutRecorder->setChord (row.shortcut );
639+ shortcutRecorder->setUnsetPlaceholder (i18n::tr (" settings.controls.keybind.unset-placeholder" ));
640+ shortcutRecorder->setRecordingPlaceholder (i18n::tr (" settings.controls.keybind.recording-placeholder" ));
641+ shortcutRecorder->setOnCommit ([&row, persist](KeyChord chord) {
642+ row.shortcut = chord;
643+ persist ();
644+ });
645+ auto * shortcutRecorderPtr = shortcutRecorder.get ();
646+ shortcutBlock->addChild (std::move (shortcutRecorder));
647+
648+ if (row.shortcut .has_value ()) {
649+ auto clearBtn = std::make_unique<Button>();
650+ clearBtn->setGlyph (" close" );
651+ clearBtn->setVariant (ButtonVariant::Ghost);
652+ clearBtn->setGlyphSize (Style::fontSizeCaption * scale);
653+ clearBtn->setMinWidth (Style::controlHeightSm * scale);
654+ clearBtn->setMinHeight (Style::controlHeightSm * scale);
655+ clearBtn->setPadding (Style::spaceXs * scale);
656+ clearBtn->setRadius (Style::scaledRadiusSm (scale));
657+ clearBtn->setOnClick ([&row, persist, shortcutRecorderPtr]() {
658+ row.shortcut = std::nullopt ;
659+ shortcutRecorderPtr->setChord (std::nullopt );
660+ persist ();
661+ });
662+ shortcutBlock->addChild (std::move (clearBtn));
663+ }
664+
665+ fields->addChild (std::move (shortcutBlock));
666+
626667 body->addChild (std::move (fields));
627668 section.addChild (std::move (body));
628669 }
@@ -1991,7 +2032,8 @@ namespace settings {
19912032 addBtn->setRadius (Style::scaledRadiusMd (scale));
19922033 addBtn->setOnClick ([state, commit]() {
19932034 state->push_back (SessionPanelActionConfig{" command" , true , " notify-send 'Noctalia' 'Custom session entry'" ,
1994- std::nullopt , std::nullopt , SessionActionButtonVariant::Default});
2035+ std::nullopt , std::nullopt , SessionActionButtonVariant::Default,
2036+ std::nullopt });
19952037 commit ();
19962038 });
19972039 block->addChild (std::move (addBtn));
0 commit comments