lshw/SOURCES/0012-Enable-Disable-GSimple...

155 lines
5.6 KiB
Diff

From a116b319adf51d4eafcb264de027647244340708 Mon Sep 17 00:00:00 2001
From: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Date: Wed, 15 Jul 2020 17:32:45 +0200
Subject: [PATCH 12/18] Enable/Disable GSimpleAction instead of button
sensitivity
This also fixes the Save menu item not having been disabled properly.
---
src/gui/engine.cc | 24 +++++++-----------------
src/gui/gtk-lshw.c | 7 +++++++
src/gui/gtk-lshw.ui | 2 --
src/gui/stock.c | 4 ----
4 files changed, 14 insertions(+), 23 deletions(-)
diff --git a/src/gui/engine.cc b/src/gui/engine.cc
index ff0607490673..2962ec80d81a 100644
--- a/src/gui/engine.cc
+++ b/src/gui/engine.cc
@@ -37,10 +37,10 @@ static hwNode *selected3 = NULL;
extern GtkWidget *mainwindow;
extern GtkWidget *list1, *list2, *list3;
extern GtkWidget *description;
-extern GtkWidget *go_up_button;
-extern GtkWidget *save_button;
extern GtkWidget *statusbar;
extern GHashTable *pixbufs;
+extern GSimpleAction *go_up_action;
+extern GSimpleAction *save_action;
enum
{
@@ -251,14 +251,11 @@ void refresh(GtkWidget *mainwindow)
{
hwNode computer("computer", hw::system);
static bool lock = false;
- //GtkWidget * menu = lookup_widget(mainwindow, "menu");
- //GtkWidget * save_menuitem = lookup_widget(menu, "save");
if(lock) return;
lock = true;
- gtk_widget_set_sensitive(save_button, FALSE);
- //gtk_widget_set_sensitive(save_menuitem, FALSE);
+ g_simple_action_set_enabled(save_action, FALSE);
populate_sublist(list1, NULL);
populate_sublist(list2, NULL);
@@ -273,9 +270,8 @@ void refresh(GtkWidget *mainwindow)
status(NULL);
displayed = container.addChild(computer);
- gtk_widget_set_sensitive(go_up_button, FALSE);
- gtk_widget_set_sensitive(save_button, TRUE);
- //gtk_widget_set_sensitive(save_menuitem, TRUE);
+ g_simple_action_set_enabled(go_up_action, FALSE);
+ g_simple_action_set_enabled(save_action, TRUE);
selected1 = NULL;
selected2 = NULL;
@@ -379,10 +375,7 @@ void browse(unsigned list, GtkTreeView *treeview)
break;
}
- if(selected1 && (find_parent(selected1, &container)!= &container))
- gtk_widget_set_sensitive(go_up_button, 1);
- else
- gtk_widget_set_sensitive(go_up_button, 0);
+ g_simple_action_set_enabled(go_up_action, selected1 && (find_parent(selected1, &container)!= &container));
(void) &::id; // avoid warning "id defined but not used"
}
@@ -404,10 +397,7 @@ void go_back(GtkWidget *mainwindow)
displayed = find_parent(displayed, &container);
}
- if(selected1 && (find_parent(selected1, &container)!= &container))
- gtk_widget_set_sensitive(go_up_button, 1);
- else
- gtk_widget_set_sensitive(go_up_button, 0);
+ g_simple_action_set_enabled(go_up_action, selected1 && (find_parent(selected1, &container)!= &container));
display(mainwindow);
}
diff --git a/src/gui/gtk-lshw.c b/src/gui/gtk-lshw.c
index 0dc3aff6d322..7b91ec5e4f01 100644
--- a/src/gui/gtk-lshw.c
+++ b/src/gui/gtk-lshw.c
@@ -11,6 +11,8 @@
static char *id = "@(#) $Id$";
extern GtkWidget *mainwindow;
+GSimpleAction *go_up_action;
+GSimpleAction *save_action;
static GActionEntry app_entries[] =
{
@@ -48,6 +50,11 @@ activate (GApplication *app,
g_action_map_add_action_entries (G_ACTION_MAP (app),
app_entries, G_N_ELEMENTS (app_entries),
app);
+ go_up_action = G_SIMPLE_ACTION (g_action_map_lookup_action (G_ACTION_MAP (app), "go_up"));
+ save_action = G_SIMPLE_ACTION (g_action_map_lookup_action (G_ACTION_MAP (app), "save"));
+
+ g_simple_action_set_enabled(go_up_action, FALSE);
+ g_simple_action_set_enabled(save_action, FALSE);
lshw_gtk_stock_init();
lshw_ui_init();
diff --git a/src/gui/gtk-lshw.ui b/src/gui/gtk-lshw.ui
index d24e05c3aa20..76fcd19379f2 100644
--- a/src/gui/gtk-lshw.ui
+++ b/src/gui/gtk-lshw.ui
@@ -222,7 +222,6 @@
<child>
<object class="GtkToolButton" id="upbutton">
<property name="visible">True</property>
- <property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="stock_id">gtk-go-up</property>
<property name="action_name">app.go_up</property>
@@ -248,7 +247,6 @@
<child>
<object class="GtkToolButton" id="savebutton">
<property name="visible">True</property>
- <property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="stock_id">gtk-save</property>
<property name="action_name">app.save</property>
diff --git a/src/gui/stock.c b/src/gui/stock.c
index 9e7c3664427a..fa18f9ed7f85 100644
--- a/src/gui/stock.c
+++ b/src/gui/stock.c
@@ -13,8 +13,6 @@ GtkWidget *list1 = NULL;
GtkWidget *list2 = NULL;
GtkWidget *list3 = NULL;
GtkWidget *description = NULL;
-GtkWidget *go_up_button = NULL;
-GtkWidget *save_button = NULL;
GtkWidget *statusbar = NULL;
GHashTable *pixbufs = NULL;
@@ -151,8 +149,6 @@ void lshw_ui_init(void)
list2 = GTK_WIDGET(gtk_builder_get_object( builder, "treeview2"));
list3 = GTK_WIDGET(gtk_builder_get_object( builder, "treeview3"));
description = GTK_WIDGET(gtk_builder_get_object( builder, "description"));
- go_up_button = GTK_WIDGET(gtk_builder_get_object( builder, "upbutton"));
- save_button = GTK_WIDGET(gtk_builder_get_object( builder, "savebutton"));
statusbar = GTK_WIDGET(gtk_builder_get_object( builder, "statusbar"));
gtk_builder_connect_signals( builder, mainwindow );
g_object_unref( G_OBJECT( builder ) );
--
2.17.1