[gnome-builder] libide/editor: require formatter for editor.format
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] libide/editor: require formatter for editor.format
- Date: Tue, 13 Sep 2022 23:45:41 +0000 (UTC)
commit a21881a6e6b7bf1b67eeb04542bbc232094819c5
Author: Christian Hergert <chergert redhat com>
Date: Tue Sep 13 16:45:34 2022 -0700
libide/editor: require formatter for editor.format
This updates the enabled state of page.editor.format based on the
availability of a formatter from the IdeBuffer.
Fixes #1785
src/libide/editor/ide-editor-page.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
---
diff --git a/src/libide/editor/ide-editor-page.c b/src/libide/editor/ide-editor-page.c
index f280dde7c..144dd0ba5 100644
--- a/src/libide/editor/ide-editor-page.c
+++ b/src/libide/editor/ide-editor-page.c
@@ -98,6 +98,23 @@ ide_editor_page_notify_file_cb (IdeEditorPage *self,
g_object_ref (self));
}
+static void
+ide_editor_page_notify_formatter_cb (IdeEditorPage *self,
+ GParamSpec *pspec,
+ IdeBuffer *buffer)
+{
+ IdeFormatter *formatter;
+
+ g_assert (IDE_IS_EDITOR_PAGE (self));
+ g_assert (IDE_IS_BUFFER (buffer));
+
+ formatter = ide_buffer_get_formatter (buffer);
+
+ panel_widget_action_set_enabled (PANEL_WIDGET (self),
+ "editor.format",
+ formatter != NULL);
+}
+
static void
ide_editor_page_modified_changed_cb (IdeEditorPage *self,
IdeBuffer *buffer)
@@ -152,6 +169,12 @@ ide_editor_page_set_buffer (IdeEditorPage *self,
self,
G_CONNECT_SWAPPED);
+ g_signal_connect_object (buffer,
+ "notify::formatter",
+ G_CALLBACK (ide_editor_page_notify_formatter_cb),
+ self,
+ G_CONNECT_SWAPPED);
+
g_signal_connect_object (buffer,
"notify::file-settings",
G_CALLBACK (_ide_editor_page_settings_reload),
@@ -169,6 +192,7 @@ ide_editor_page_set_buffer (IdeEditorPage *self,
G_BINDING_SYNC_CREATE);
ide_editor_page_notify_file_cb (self, NULL, buffer);
+ ide_editor_page_notify_formatter_cb (self, NULL, buffer);
ide_editor_page_modified_changed_cb (self, buffer);
_ide_editor_page_settings_init (self);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]