diff --git a/release/datafiles/icons_svg/playhead_snap_off.svg b/release/datafiles/icons_svg/playhead_snap_off.svg
new file mode 100644
index 00000000000..6dd59e63ea8
--- /dev/null
+++ b/release/datafiles/icons_svg/playhead_snap_off.svg
@@ -0,0 +1,66 @@
+
+
+
+
diff --git a/release/datafiles/icons_svg/playhead_snap_on.svg b/release/datafiles/icons_svg/playhead_snap_on.svg
new file mode 100644
index 00000000000..e08d9452f8a
--- /dev/null
+++ b/release/datafiles/icons_svg/playhead_snap_on.svg
@@ -0,0 +1,66 @@
+
+
+
+
diff --git a/scripts/startup/bl_ui/space_dopesheet.py b/scripts/startup/bl_ui/space_dopesheet.py
index d4fe7a9736d..a5792754705 100644
--- a/scripts/startup/bl_ui/space_dopesheet.py
+++ b/scripts/startup/bl_ui/space_dopesheet.py
@@ -285,7 +285,10 @@ class DOPESHEET_HT_editor_buttons:
text="",
)
- layout.popover(panel="DOPESHEET_PT_playhead_snapping")
+ row = layout.row(align=True)
+ row.prop(tool_settings, "use_snap_playhead", text="")
+ sub = row.row(align=True)
+ sub.popover(panel="DOPESHEET_PT_playhead_snapping", text="")
row = layout.row(align=True)
row.prop(tool_settings, "use_proportional_action", text="", icon_only=True)
diff --git a/scripts/startup/bl_ui/space_graph.py b/scripts/startup/bl_ui/space_graph.py
index 8ae6f2503e7..89a91c9f1e3 100644
--- a/scripts/startup/bl_ui/space_graph.py
+++ b/scripts/startup/bl_ui/space_graph.py
@@ -94,7 +94,11 @@ class GRAPH_HT_header(Header):
panel="GRAPH_PT_snapping",
text="",
)
- layout.popover(panel="GRAPH_PT_playhead_snapping")
+
+ row = layout.row(align=True)
+ row.prop(tool_settings, "use_snap_playhead", text="")
+ sub = row.row(align=True)
+ sub.popover(panel="GRAPH_PT_playhead_snapping", text="")
row = layout.row(align=True)
row.prop(tool_settings, "use_proportional_fcurve", text="", icon_only=True)
diff --git a/scripts/startup/bl_ui/space_nla.py b/scripts/startup/bl_ui/space_nla.py
index 2a7b129682a..bc94d5603ae 100644
--- a/scripts/startup/bl_ui/space_nla.py
+++ b/scripts/startup/bl_ui/space_nla.py
@@ -47,7 +47,11 @@ class NLA_HT_header(Header):
panel="NLA_PT_snapping",
text="",
)
- layout.popover(panel="NLA_PT_playhead_snapping")
+
+ row = layout.row(align=True)
+ row.prop(tool_settings, "use_snap_playhead", text="")
+ sub = row.row(align=True)
+ sub.popover(panel="NLA_PT_playhead_snapping", text="")
class NLA_HT_playback_controls(Header):
diff --git a/scripts/startup/bl_ui/space_sequencer.py b/scripts/startup/bl_ui/space_sequencer.py
index 75ab7fa073e..a9b7f5e513e 100644
--- a/scripts/startup/bl_ui/space_sequencer.py
+++ b/scripts/startup/bl_ui/space_sequencer.py
@@ -192,7 +192,10 @@ class SEQUENCER_HT_header(Header):
sub = row.row(align=True)
sub.popover(panel="SEQUENCER_PT_snapping")
if st.view_type in {'SEQUENCER', 'SEQUENCER_PREVIEW'}:
- layout.popover(panel="SEQUENCER_PT_playhead_snapping")
+ row = layout.row(align=True)
+ row.prop(tool_settings, "use_snap_playhead", text="")
+ sub = row.row(align=True)
+ sub.popover(panel="SEQUENCER_PT_playhead_snapping", text="")
layout.separator_spacer()
if st.view_type in {'PREVIEW', 'SEQUENCER_PREVIEW'}:
diff --git a/scripts/startup/bl_ui/utils.py b/scripts/startup/bl_ui/utils.py
index a41a4747f89..52eadc16616 100644
--- a/scripts/startup/bl_ui/utils.py
+++ b/scripts/startup/bl_ui/utils.py
@@ -54,7 +54,6 @@ class PlayheadSnappingPanel:
layout = self.layout
col = layout.column()
- col.prop(tool_settings, "use_snap_playhead")
col.prop(tool_settings, "playhead_snap_distance")
col.separator()
col.label(text="Snap Target")
diff --git a/source/blender/editors/datafiles/CMakeLists.txt b/source/blender/editors/datafiles/CMakeLists.txt
index 1bbf944123f..efb0df19bc9 100644
--- a/source/blender/editors/datafiles/CMakeLists.txt
+++ b/source/blender/editors/datafiles/CMakeLists.txt
@@ -723,6 +723,8 @@ if(WITH_BLENDER)
play
play_reverse
play_sound
+ playhead_snap_off
+ playhead_snap_on
plugin
plus
pmarker
diff --git a/source/blender/editors/include/UI_icons.hh b/source/blender/editors/include/UI_icons.hh
index b790928b0a6..8c5477bca6f 100644
--- a/source/blender/editors/include/UI_icons.hh
+++ b/source/blender/editors/include/UI_icons.hh
@@ -86,6 +86,8 @@ DEF_ICON(SELECT_INTERSECT)
DEF_ICON(SELECT_DIFFERENCE)
DEF_ICON(SNAP_OFF)
DEF_ICON(SNAP_ON)
+DEF_ICON(PLAYHEAD_SNAP_OFF)
+DEF_ICON(PLAYHEAD_SNAP_ON)
DEF_ICON(UNLOCKED)
DEF_ICON(LOCKED)
DEF_ICON(VIS_SEL_11)
diff --git a/source/blender/makesrna/intern/rna_scene.cc b/source/blender/makesrna/intern/rna_scene.cc
index 809ae3cd2d8..52fec3903c3 100644
--- a/source/blender/makesrna/intern/rna_scene.cc
+++ b/source/blender/makesrna/intern/rna_scene.cc
@@ -3756,6 +3756,7 @@ static void rna_def_tool_settings(BlenderRNA *brna)
prop = RNA_def_property(srna, "use_snap_playhead", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, nullptr, "snap_flag_playhead", SCE_SNAP);
+ RNA_def_property_ui_icon(prop, ICON_PLAYHEAD_SNAP_OFF, 1);
RNA_def_property_flag(prop, PROP_DEG_SYNC_ONLY);
RNA_def_property_ui_text(prop, "Use Snapping", "Snap playhead when scrubbing");
RNA_def_property_boolean_default(prop, false);