[gnome-builder/wip/chergert/deviced] device-manager: remove devices from device menu
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/deviced] device-manager: remove devices from device menu
- Date: Sat, 24 Feb 2018 02:54:15 +0000 (UTC)
commit 640cb2f35f7b596faa192e7bd64571487e0b3d9f
Author: Christian Hergert <chergert redhat com>
Date: Fri Feb 23 18:53:53 2018 -0800
device-manager: remove devices from device menu
When we learn a device is removed, we need to remove it from the menu
which is connected to our device button.
src/libide/devices/ide-device-manager.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
---
diff --git a/src/libide/devices/ide-device-manager.c b/src/libide/devices/ide-device-manager.c
index 07b99e518..dc0bc6175 100644
--- a/src/libide/devices/ide-device-manager.c
+++ b/src/libide/devices/ide-device-manager.c
@@ -113,12 +113,34 @@ ide_device_manager_provider_device_removed_cb (IdeDeviceManager *self,
IdeDevice *device,
IdeDeviceProvider *provider)
{
+ const gchar *device_id;
+ GMenu *menu;
+ guint n_items;
+
IDE_ENTRY;
g_assert (IDE_IS_DEVICE_MANAGER (self));
g_assert (IDE_IS_DEVICE (device));
g_assert (IDE_IS_DEVICE_PROVIDER (provider));
+ device_id = ide_device_get_id (device);
+
+ menu = dzl_application_get_menu_by_id (DZL_APPLICATION (IDE_APPLICATION_DEFAULT),
+ "ide-device-manager-menu-section");
+ n_items = g_menu_model_get_n_items (G_MENU_MODEL (menu));
+
+ for (guint i = 0; i < n_items; i++)
+ {
+ g_autofree gchar *id = NULL;
+
+ if (g_menu_model_get_item_attribute (G_MENU_MODEL (menu), i, "id", "s", &id) &&
+ g_strcmp0 (id, device_id) == 0)
+ {
+ g_menu_remove (menu, i);
+ break;
+ }
+ }
+
for (guint i = 0; i < self->devices->len; i++)
{
IdeDevice *element = g_ptr_array_index (self->devices, i);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]