diff mbox series

[1/2] sepolicy: Switch main selection menu to GtkPopover

Message ID 20221208194335.479739-1-lautrbach@redhat.com (mailing list archive)
State Accepted
Commit a9517c389643
Headers show
Series [1/2] sepolicy: Switch main selection menu to GtkPopover | expand

Commit Message

Petr Lautrbach Dec. 8, 2022, 7:43 p.m. UTC
Fixes: https://github.com/SELinuxProject/selinux/issues/206

Signed-off-by: Petr Lautrbach <lautrbach@redhat.com>
---
 python/sepolicy/sepolicy/gui.py         | 20 ++++----------------
 python/sepolicy/sepolicy/sepolicy.glade |  9 +--------
 2 files changed, 5 insertions(+), 24 deletions(-)

Comments

James Carter Dec. 16, 2022, 9:53 p.m. UTC | #1
On Thu, Dec 8, 2022 at 2:54 PM Petr Lautrbach <lautrbach@redhat.com> wrote:
>
> Fixes: https://github.com/SELinuxProject/selinux/issues/206
>
> Signed-off-by: Petr Lautrbach <lautrbach@redhat.com>

For these two patches:
Acked-by: James Carter <jwcart2@gmail.com>

> ---
>  python/sepolicy/sepolicy/gui.py         | 20 ++++----------------
>  python/sepolicy/sepolicy/sepolicy.glade |  9 +--------
>  2 files changed, 5 insertions(+), 24 deletions(-)
>
> diff --git a/python/sepolicy/sepolicy/gui.py b/python/sepolicy/sepolicy/gui.py
> index c8f33f522a2d..53f3c6148b58 100644
> --- a/python/sepolicy/sepolicy/gui.py
> +++ b/python/sepolicy/sepolicy/gui.py
> @@ -135,9 +135,8 @@ class SELinuxGui():
>          builder.add_from_file(glade_file)
>          self.outer_notebook = builder.get_object("outer_notebook")
>          self.window = builder.get_object("SELinux_window")
> -        self.main_selection_window = builder.get_object("Main_selection_menu")
> +        self.main_selection_popover = builder.get_object("Main_selection_menu")
>          self.main_advanced_label = builder.get_object("main_advanced_label")
> -        self.popup = 0
>          self.applications_selection_button = builder.get_object("applications_selection_button")
>          self.revert_button = builder.get_object("Revert_button")
>          self.busy_cursor = Gdk.Cursor(Gdk.CursorType.WATCH)
> @@ -531,7 +530,6 @@ class SELinuxGui():
>          dic = {
>              "on_combo_button_clicked": self.open_combo_menu,
>              "on_disable_ptrace_toggled": self.on_disable_ptrace,
> -            "on_SELinux_window_configure_event": self.hide_combo_menu,
>              "on_entrycompletion_obj_match_selected": self.set_application_label,
>              "on_filter_changed": self.get_filter_data,
>              "on_save_changes_file_equiv_clicked": self.update_to_file_equiv,
> @@ -808,18 +806,8 @@ class SELinuxGui():
>          return self.help_show_page()
>
>      def open_combo_menu(self, *args):
> -        if self.popup == 0:
> -            self.popup = 1
> -            location = self.window.get_position()
> -            self.main_selection_window.move(location[0] + 2, location[1] + 65)
> -            self.main_selection_window.show()
> -        else:
> -            self.main_selection_window.hide()
> -            self.popup = 0
> -
> -    def hide_combo_menu(self, *args):
> -        self.main_selection_window.hide()
> -        self.popup = 0
> +        self.main_selection_popover.set_relative_to(self.applications_selection_button)
> +        self.main_selection_popover.popup()
>
>      def set_application_label(self, *args):
>          self.set_application_label = True
> @@ -2335,7 +2323,7 @@ class SELinuxGui():
>              self.active_button = self.network_radio_button
>
>      def clearbuttons(self, clear=True):
> -        self.main_selection_window.hide()
> +        self.main_selection_popover.hide()
>          self.boolean_radio_button.set_visible(False)
>          self.files_radio_button.set_visible(False)
>          self.network_radio_button.set_visible(False)
> diff --git a/python/sepolicy/sepolicy/sepolicy.glade b/python/sepolicy/sepolicy/sepolicy.glade
> index 0724d6c8caa4..30e7b03f21c2 100644
> --- a/python/sepolicy/sepolicy/sepolicy.glade
> +++ b/python/sepolicy/sepolicy/sepolicy.glade
> @@ -10,11 +10,8 @@
>        <column type="gchararray"/>
>      </columns>
>    </object>
> -  <object class="GtkWindow" id="Main_selection_menu">
> +  <object class="GtkPopover" id="Main_selection_menu">
>      <property name="can_focus">False</property>
> -    <property name="default_width">265</property>
> -    <property name="default_height">100</property>
> -    <property name="decorated">False</property>
>      <child>
>        <object class="GtkBox" id="vbox2">
>          <property name="visible">True</property>
> @@ -53,7 +50,6 @@
>                  <property name="primary_icon_stock">gtk-find</property>
>                  <property name="primary_icon_activatable">False</property>
>                  <property name="secondary_icon_activatable">False</property>
> -                <signal name="activate" handler="on_SELinux_window_configure_event" swapped="no"/>
>                  <signal name="changed" handler="on_completion_entry_changed" swapped="no"/>
>                </object>
>                <packing>
> @@ -306,7 +302,6 @@
>      </columns>
>    </object>
>    <object class="GtkEntryCompletion" id="entrycompletion_obj">
> -    <signal name="match-selected" handler="on_SELinux_window_configure_event" swapped="no"/>
>      <signal name="match-selected" handler="on_completion_entry_changed" swapped="no"/>
>      <signal name="match-selected" handler="on_entrycompletion_obj_match_selected" swapped="no"/>
>    </object>
> @@ -1707,9 +1702,7 @@
>      <property name="window_position">center-always</property>
>      <property name="default_width">650</property>
>      <property name="default_height">420</property>
> -    <signal name="configure-event" handler="on_SELinux_window_configure_event" swapped="no"/>
>      <signal name="delete-event" handler="on_confirmation_close" swapped="no"/>
> -    <signal name="focus-in-event" handler="on_SELinux_window_configure_event" swapped="no"/>
>      <child>
>        <object class="GtkBox" id="vbox1">
>          <property name="visible">True</property>
> --
> 2.38.1
>
James Carter Dec. 16, 2022, 10:02 p.m. UTC | #2
On Fri, Dec 16, 2022 at 4:53 PM James Carter <jwcart2@gmail.com> wrote:
>
> On Thu, Dec 8, 2022 at 2:54 PM Petr Lautrbach <lautrbach@redhat.com> wrote:
> >
> > Fixes: https://github.com/SELinuxProject/selinux/issues/206
> >
> > Signed-off-by: Petr Lautrbach <lautrbach@redhat.com>
>
> For these two patches:
> Acked-by: James Carter <jwcart2@gmail.com>
>
These two patches have been merged.
Thanks,
Jim

> > ---
> >  python/sepolicy/sepolicy/gui.py         | 20 ++++----------------
> >  python/sepolicy/sepolicy/sepolicy.glade |  9 +--------
> >  2 files changed, 5 insertions(+), 24 deletions(-)
> >
> > diff --git a/python/sepolicy/sepolicy/gui.py b/python/sepolicy/sepolicy/gui.py
> > index c8f33f522a2d..53f3c6148b58 100644
> > --- a/python/sepolicy/sepolicy/gui.py
> > +++ b/python/sepolicy/sepolicy/gui.py
> > @@ -135,9 +135,8 @@ class SELinuxGui():
> >          builder.add_from_file(glade_file)
> >          self.outer_notebook = builder.get_object("outer_notebook")
> >          self.window = builder.get_object("SELinux_window")
> > -        self.main_selection_window = builder.get_object("Main_selection_menu")
> > +        self.main_selection_popover = builder.get_object("Main_selection_menu")
> >          self.main_advanced_label = builder.get_object("main_advanced_label")
> > -        self.popup = 0
> >          self.applications_selection_button = builder.get_object("applications_selection_button")
> >          self.revert_button = builder.get_object("Revert_button")
> >          self.busy_cursor = Gdk.Cursor(Gdk.CursorType.WATCH)
> > @@ -531,7 +530,6 @@ class SELinuxGui():
> >          dic = {
> >              "on_combo_button_clicked": self.open_combo_menu,
> >              "on_disable_ptrace_toggled": self.on_disable_ptrace,
> > -            "on_SELinux_window_configure_event": self.hide_combo_menu,
> >              "on_entrycompletion_obj_match_selected": self.set_application_label,
> >              "on_filter_changed": self.get_filter_data,
> >              "on_save_changes_file_equiv_clicked": self.update_to_file_equiv,
> > @@ -808,18 +806,8 @@ class SELinuxGui():
> >          return self.help_show_page()
> >
> >      def open_combo_menu(self, *args):
> > -        if self.popup == 0:
> > -            self.popup = 1
> > -            location = self.window.get_position()
> > -            self.main_selection_window.move(location[0] + 2, location[1] + 65)
> > -            self.main_selection_window.show()
> > -        else:
> > -            self.main_selection_window.hide()
> > -            self.popup = 0
> > -
> > -    def hide_combo_menu(self, *args):
> > -        self.main_selection_window.hide()
> > -        self.popup = 0
> > +        self.main_selection_popover.set_relative_to(self.applications_selection_button)
> > +        self.main_selection_popover.popup()
> >
> >      def set_application_label(self, *args):
> >          self.set_application_label = True
> > @@ -2335,7 +2323,7 @@ class SELinuxGui():
> >              self.active_button = self.network_radio_button
> >
> >      def clearbuttons(self, clear=True):
> > -        self.main_selection_window.hide()
> > +        self.main_selection_popover.hide()
> >          self.boolean_radio_button.set_visible(False)
> >          self.files_radio_button.set_visible(False)
> >          self.network_radio_button.set_visible(False)
> > diff --git a/python/sepolicy/sepolicy/sepolicy.glade b/python/sepolicy/sepolicy/sepolicy.glade
> > index 0724d6c8caa4..30e7b03f21c2 100644
> > --- a/python/sepolicy/sepolicy/sepolicy.glade
> > +++ b/python/sepolicy/sepolicy/sepolicy.glade
> > @@ -10,11 +10,8 @@
> >        <column type="gchararray"/>
> >      </columns>
> >    </object>
> > -  <object class="GtkWindow" id="Main_selection_menu">
> > +  <object class="GtkPopover" id="Main_selection_menu">
> >      <property name="can_focus">False</property>
> > -    <property name="default_width">265</property>
> > -    <property name="default_height">100</property>
> > -    <property name="decorated">False</property>
> >      <child>
> >        <object class="GtkBox" id="vbox2">
> >          <property name="visible">True</property>
> > @@ -53,7 +50,6 @@
> >                  <property name="primary_icon_stock">gtk-find</property>
> >                  <property name="primary_icon_activatable">False</property>
> >                  <property name="secondary_icon_activatable">False</property>
> > -                <signal name="activate" handler="on_SELinux_window_configure_event" swapped="no"/>
> >                  <signal name="changed" handler="on_completion_entry_changed" swapped="no"/>
> >                </object>
> >                <packing>
> > @@ -306,7 +302,6 @@
> >      </columns>
> >    </object>
> >    <object class="GtkEntryCompletion" id="entrycompletion_obj">
> > -    <signal name="match-selected" handler="on_SELinux_window_configure_event" swapped="no"/>
> >      <signal name="match-selected" handler="on_completion_entry_changed" swapped="no"/>
> >      <signal name="match-selected" handler="on_entrycompletion_obj_match_selected" swapped="no"/>
> >    </object>
> > @@ -1707,9 +1702,7 @@
> >      <property name="window_position">center-always</property>
> >      <property name="default_width">650</property>
> >      <property name="default_height">420</property>
> > -    <signal name="configure-event" handler="on_SELinux_window_configure_event" swapped="no"/>
> >      <signal name="delete-event" handler="on_confirmation_close" swapped="no"/>
> > -    <signal name="focus-in-event" handler="on_SELinux_window_configure_event" swapped="no"/>
> >      <child>
> >        <object class="GtkBox" id="vbox1">
> >          <property name="visible">True</property>
> > --
> > 2.38.1
> >
diff mbox series

Patch

diff --git a/python/sepolicy/sepolicy/gui.py b/python/sepolicy/sepolicy/gui.py
index c8f33f522a2d..53f3c6148b58 100644
--- a/python/sepolicy/sepolicy/gui.py
+++ b/python/sepolicy/sepolicy/gui.py
@@ -135,9 +135,8 @@  class SELinuxGui():
         builder.add_from_file(glade_file)
         self.outer_notebook = builder.get_object("outer_notebook")
         self.window = builder.get_object("SELinux_window")
-        self.main_selection_window = builder.get_object("Main_selection_menu")
+        self.main_selection_popover = builder.get_object("Main_selection_menu")
         self.main_advanced_label = builder.get_object("main_advanced_label")
-        self.popup = 0
         self.applications_selection_button = builder.get_object("applications_selection_button")
         self.revert_button = builder.get_object("Revert_button")
         self.busy_cursor = Gdk.Cursor(Gdk.CursorType.WATCH)
@@ -531,7 +530,6 @@  class SELinuxGui():
         dic = {
             "on_combo_button_clicked": self.open_combo_menu,
             "on_disable_ptrace_toggled": self.on_disable_ptrace,
-            "on_SELinux_window_configure_event": self.hide_combo_menu,
             "on_entrycompletion_obj_match_selected": self.set_application_label,
             "on_filter_changed": self.get_filter_data,
             "on_save_changes_file_equiv_clicked": self.update_to_file_equiv,
@@ -808,18 +806,8 @@  class SELinuxGui():
         return self.help_show_page()
 
     def open_combo_menu(self, *args):
-        if self.popup == 0:
-            self.popup = 1
-            location = self.window.get_position()
-            self.main_selection_window.move(location[0] + 2, location[1] + 65)
-            self.main_selection_window.show()
-        else:
-            self.main_selection_window.hide()
-            self.popup = 0
-
-    def hide_combo_menu(self, *args):
-        self.main_selection_window.hide()
-        self.popup = 0
+        self.main_selection_popover.set_relative_to(self.applications_selection_button)
+        self.main_selection_popover.popup()
 
     def set_application_label(self, *args):
         self.set_application_label = True
@@ -2335,7 +2323,7 @@  class SELinuxGui():
             self.active_button = self.network_radio_button
 
     def clearbuttons(self, clear=True):
-        self.main_selection_window.hide()
+        self.main_selection_popover.hide()
         self.boolean_radio_button.set_visible(False)
         self.files_radio_button.set_visible(False)
         self.network_radio_button.set_visible(False)
diff --git a/python/sepolicy/sepolicy/sepolicy.glade b/python/sepolicy/sepolicy/sepolicy.glade
index 0724d6c8caa4..30e7b03f21c2 100644
--- a/python/sepolicy/sepolicy/sepolicy.glade
+++ b/python/sepolicy/sepolicy/sepolicy.glade
@@ -10,11 +10,8 @@ 
       <column type="gchararray"/>
     </columns>
   </object>
-  <object class="GtkWindow" id="Main_selection_menu">
+  <object class="GtkPopover" id="Main_selection_menu">
     <property name="can_focus">False</property>
-    <property name="default_width">265</property>
-    <property name="default_height">100</property>
-    <property name="decorated">False</property>
     <child>
       <object class="GtkBox" id="vbox2">
         <property name="visible">True</property>
@@ -53,7 +50,6 @@ 
                 <property name="primary_icon_stock">gtk-find</property>
                 <property name="primary_icon_activatable">False</property>
                 <property name="secondary_icon_activatable">False</property>
-                <signal name="activate" handler="on_SELinux_window_configure_event" swapped="no"/>
                 <signal name="changed" handler="on_completion_entry_changed" swapped="no"/>
               </object>
               <packing>
@@ -306,7 +302,6 @@ 
     </columns>
   </object>
   <object class="GtkEntryCompletion" id="entrycompletion_obj">
-    <signal name="match-selected" handler="on_SELinux_window_configure_event" swapped="no"/>
     <signal name="match-selected" handler="on_completion_entry_changed" swapped="no"/>
     <signal name="match-selected" handler="on_entrycompletion_obj_match_selected" swapped="no"/>
   </object>
@@ -1707,9 +1702,7 @@ 
     <property name="window_position">center-always</property>
     <property name="default_width">650</property>
     <property name="default_height">420</property>
-    <signal name="configure-event" handler="on_SELinux_window_configure_event" swapped="no"/>
     <signal name="delete-event" handler="on_confirmation_close" swapped="no"/>
-    <signal name="focus-in-event" handler="on_SELinux_window_configure_event" swapped="no"/>
     <child>
       <object class="GtkBox" id="vbox1">
         <property name="visible">True</property>