Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,563 changes: 36 additions & 1,527 deletions action-layout-editor/nemo_action_layout_editor.py

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions debian/libnemo-extension1.symbols
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
libnemo-extension.so.1 libnemo-extension1 #MINVER#
nemo_action_layout_editor_get_type@Base 6.6.1
nemo_action_layout_editor_new@Base 6.6.1
nemo_column_get_type@Base 5.0.3
nemo_column_new2@Base 5.0.3
nemo_column_new@Base 5.0.3
Expand Down
8 changes: 0 additions & 8 deletions gresources/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,3 @@ gresources = gnome.compile_resources(
install_header: false,
install: false
)

layout_editor_gresources = gnome.compile_resources(
'nemo-action-layout-editor-resources', 'nemo-action-layout-editor.gresource.xml',
source_dir: '.',
gresource_bundle: true,
install: true,
install_dir: nemoDataPath
)
57 changes: 17 additions & 40 deletions gresources/nemo-action-layout-editor.glade
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,19 @@
<property name="orientation">vertical</property>
<property name="spacing">4</property>
<child>
<object class="GtkScrolledWindow" id="treeview_holder">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="can-focus">False</property>
Copy link

Copilot AI Dec 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The scrolled window containing the treeview has can-focus set to False, which may prevent keyboard navigation from working properly. The scrolled window should typically be focusable to allow keyboard scrolling.

Suggested change
<property name="can-focus">False</property>
<property name="can-focus">True</property>

Copilot uses AI. Check for mistakes.
<property name="vexpand">True</property>
<property name="shadow-type">in</property>
<child>
<placeholder/>
<object class="GtkViewport" id="treeview_holder">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
<packing>
Expand Down Expand Up @@ -111,6 +117,9 @@
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Remove</property>
<property name="image">image2</property>
<style>
<class name="destructive-action"/>
</style>
</object>
<packing>
<property name="expand">False</property>
Expand Down Expand Up @@ -286,7 +295,7 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">4</property>
<property name="spacing">6</property>
<property name="homogeneous">True</property>
Copy link

Copilot AI Dec 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting the button box to homogeneous will make all buttons (Save, Cancel changes, Default layout) the same width, which may look odd when the button labels have significantly different lengths. Consider using natural sizing instead.

Suggested change
<property name="homogeneous">True</property>
<property name="homogeneous">False</property>

Copilot uses AI. Check for mistakes.
<child>
<object class="GtkButton" id="save_button">
<property name="label" translatable="yes">Save</property>
Expand All @@ -306,7 +315,7 @@
</child>
<child>
<object class="GtkButton" id="discard_changes_button">
<property name="label" translatable="yes">Cancel</property>
<property name="label" translatable="yes">Cancel changes</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
Expand All @@ -331,6 +340,9 @@
<property name="position">2</property>
</packing>
</child>
<style>
<class name="linked"/>
</style>
</object>
<packing>
<property name="expand">False</property>
Expand All @@ -347,39 +359,4 @@
<widget name="name_entry"/>
</widgets>
</object>
<object class="GtkWindow" id="main_window">
<property name="can-focus">False</property>
<property name="border-width">4</property>
<property name="window-position">center</property>
<property name="default-width">600</property>
<property name="default-height">400</property>
<property name="icon-name">nemo</property>
<child>
<placeholder/>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="title" translatable="yes">Nemo Actions Layout Editor</property>
<property name="has-subtitle">False</property>
<property name="show-close-button">True</property>
<child>
<object class="GtkMenuButton" id="hamburger_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">xsi-open-menu-symbolic</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
37 changes: 34 additions & 3 deletions gresources/nemo-file-management-properties.glade
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,7 @@ along with . If not, see <http://www.gnu.org/licenses/>.
<object class="GtkWindow" id="file_management_dialog">
<property name="can-focus">False</property>
<property name="title" translatable="yes">File Management Preferences</property>
<property name="modal">True</property>
Copy link

Copilot AI Dec 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Making the preferences dialog modal may be problematic without a proper parent window. This can block interaction with the entire application unexpectedly. Consider whether this should be modal, especially given that the parent window is now being passed as NULL in the code.

Suggested change
<property name="modal">True</property>

Copilot uses AI. Check for mistakes.
<property name="window-position">center</property>
<property name="default-width">800</property>
<property name="default-height">600</property>
Expand Down Expand Up @@ -4354,6 +4355,36 @@ along with . If not, see <http://www.gnu.org/licenses/>.
<property name="position">7</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="border-width">6</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox" id="actions_box">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="border-width">4</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="name">actions</property>
<property name="title" translatable="yes">Actions</property>
<property name="icon-name">xsi-open-menu-symbolic</property>
<property name="position">8</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow7">
<property name="visible">True</property>
Expand All @@ -4364,7 +4395,7 @@ along with . If not, see <http://www.gnu.org/licenses/>.
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox" id="plugin_box">
<object class="GtkBox" id="extensions_box">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
Expand All @@ -4378,9 +4409,9 @@ along with . If not, see <http://www.gnu.org/licenses/>.
</object>
<packing>
<property name="name">plugins</property>
<property name="title" translatable="yes">Plugins</property>
<property name="title" translatable="yes">Extensions</property>
<property name="icon-name">xapp-prefs-plugins-symbolic</property>
<property name="position">8</property>
<property name="position">9</property>
</packing>
</child>
</object>
Expand Down
3 changes: 3 additions & 0 deletions gresources/nemo.gresource.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,7 @@
<file>nemo-style-fallback-mandatory.css</file>
<file>nemo-style-application.css</file>
</gresource>
<gresource prefix="/org/nemo/action-layout-editor">
<file>nemo-action-layout-editor.glade</file>
</gresource>
</gresources>
14 changes: 13 additions & 1 deletion libnemo-extension/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ nemo_i18n_header = [

nemo_extension_sources = [
gresources,
'nemo-action-layout-editor.c',
'nemo-column-provider.c',
'nemo-column.c',
'nemo-desktop-preferences.c',
Expand All @@ -22,6 +23,7 @@ nemo_extension_sources = [
]

nemo_extension_headers = [
'nemo-action-layout-editor.h',
'nemo-column-provider.h',
'nemo-column.h',
'nemo-desktop-preferences.h',
Expand All @@ -40,7 +42,7 @@ nemo_extension_headers = [

nemo_extension_incdir = include_directories('.')

nemo_extension_deps = [ glib, gtk ]
nemo_extension_deps = [ glib, gtk, json, xapp ]

nemo_extension_lib = shared_library('nemo-extension',
nemo_extension_sources + nemo_i18n_header,
Expand Down Expand Up @@ -86,3 +88,13 @@ pkgconfig.generate(filebase: 'libnemo-extension',
variables: 'extensiondir=${libdir}/@0@/@1@'.format('nemo', 'extensions-3.0'),
)

# Test executable for NemoActionLayoutEditor
test_action_layout_editor = executable('test-action-layout-editor',
'test-action-layout-editor.c',
dependencies: nemo_extension_deps,
link_with: nemo_extension_lib,
include_directories: [ rootInclude, nemo_extension_incdir ],
build_by_default: true,
install: false,
)

Loading
Loading