From 4b42016837a6b5bd63f99647423602426168450e Mon Sep 17 00:00:00 2001 From: James Westman Date: Mon, 21 Feb 2022 14:08:42 -0600 Subject: [PATCH] Fix bug with inline menus Fixes #44 --- blueprintcompiler/language/gtk_menu.py | 4 ++-- tests/sample_errors/assign_inline_menu.blp | 5 +++++ tests/sample_errors/assign_inline_menu.err | 1 + tests/samples/inline_menu.blp | 5 +++++ tests/samples/inline_menu.ui | 9 +++++++++ tests/test_samples.py | 2 ++ 6 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 tests/sample_errors/assign_inline_menu.blp create mode 100644 tests/sample_errors/assign_inline_menu.err create mode 100644 tests/samples/inline_menu.blp create mode 100644 tests/samples/inline_menu.ui diff --git a/blueprintcompiler/language/gtk_menu.py b/blueprintcompiler/language/gtk_menu.py index a04f5e0..2932e9a 100644 --- a/blueprintcompiler/language/gtk_menu.py +++ b/blueprintcompiler/language/gtk_menu.py @@ -19,12 +19,12 @@ from .attributes import BaseAttribute -from .gobject_object import ObjectContent +from .gobject_object import Object, ObjectContent from .ui import UI from .common import * -class Menu(AstNode): +class Menu(Object): def emit_xml(self, xml: XmlEmitter): xml.start_tag(self.tokens["tag"], id=self.tokens["id"]) for child in self.children: diff --git a/tests/sample_errors/assign_inline_menu.blp b/tests/sample_errors/assign_inline_menu.blp new file mode 100644 index 0000000..9e5a944 --- /dev/null +++ b/tests/sample_errors/assign_inline_menu.blp @@ -0,0 +1,5 @@ +using Gtk 4.0; + +Button { + label: menu {}; +} diff --git a/tests/sample_errors/assign_inline_menu.err b/tests/sample_errors/assign_inline_menu.err new file mode 100644 index 0000000..aec5ce9 --- /dev/null +++ b/tests/sample_errors/assign_inline_menu.err @@ -0,0 +1 @@ +4,3,15,Cannot assign Gio.MenuModel to string diff --git a/tests/samples/inline_menu.blp b/tests/samples/inline_menu.blp new file mode 100644 index 0000000..f4ee067 --- /dev/null +++ b/tests/samples/inline_menu.blp @@ -0,0 +1,5 @@ +using Gtk 4.0; + +MenuButton { + menu-model: menu primary_menu {}; +} diff --git a/tests/samples/inline_menu.ui b/tests/samples/inline_menu.ui new file mode 100644 index 0000000..a6f2bcc --- /dev/null +++ b/tests/samples/inline_menu.ui @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/test_samples.py b/tests/test_samples.py index 5b383f7..cb849f1 100644 --- a/tests/test_samples.py +++ b/tests/test_samples.py @@ -124,6 +124,7 @@ class TestSamples(unittest.TestCase): self.assert_sample("file_filter") self.assert_sample("flags") self.assert_sample("id_prop") + self.assert_sample("inline_menu") self.assert_sample("layout") self.assert_sample("menu") self.assert_sample("object_prop") @@ -146,6 +147,7 @@ class TestSamples(unittest.TestCase): self.assert_sample_error("a11y_prop_dne") self.assert_sample_error("a11y_prop_obj_dne") self.assert_sample_error("a11y_prop_type") + self.assert_sample_error("assign_inline_menu") self.assert_sample_error("action_widget_float_response") self.assert_sample_error("action_widget_have_no_id") self.assert_sample_error("action_widget_multiple_default")