~3v1n0/indicator-appmenu/all-menus-mode

« back to all changes in this revision

Viewing changes to src/window-menu-model.c

  • Committer: Marco Trevisan (Treviño)
  • Date: 2014-12-15 16:13:58 UTC
  • Revision ID: mail@3v1n0.net-20141215161358-y9gfq2ygukfygp93
indicator-appmenu: disconnect signals using new smarter methods

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
        /* Window Menus */
46
46
        GDBusMenuModel * win_menu_model;
47
47
        GtkMenuBar * win_menu;
48
 
        gulong win_menu_insert;
49
 
        gulong win_menu_remove;
50
48
};
51
49
 
52
50
#define WINDOW_MENU_MODEL_GET_PRIVATE(o) \
121
119
        g_clear_object(&menu->priv->application_menu.menu);
122
120
 
123
121
        /* Window Menus */
124
 
        if (menu->priv->win_menu_insert != 0) {
125
 
                g_signal_handler_disconnect(menu->priv->win_menu, menu->priv->win_menu_insert);
126
 
                menu->priv->win_menu_insert = 0;
127
 
        }
128
 
 
129
 
        if (menu->priv->win_menu_remove != 0) {
130
 
                g_signal_handler_disconnect(menu->priv->win_menu, menu->priv->win_menu_remove);
131
 
                menu->priv->win_menu_remove = 0;
132
 
        }
133
 
 
134
122
        g_clear_object(&menu->priv->win_menu_model);
135
123
 
136
124
        if (menu->priv->win_menu) {
 
125
                g_signal_handlers_disconnect_by_data(menu->priv->win_menu, menu);
137
126
                gtk_widget_destroy (GTK_WIDGET (menu->priv->win_menu));
138
127
                g_object_unref (menu->priv->win_menu);
139
128
                menu->priv->win_menu = NULL;
331
320
{
332
321
        WindowMenuEntry * entry = (WindowMenuEntry *)inentry;
333
322
 
334
 
        g_signal_handlers_disconnect_by_func (entry->gmi, entry_label_notify, entry);
335
 
        g_signal_handlers_disconnect_by_func (entry->gmi, entry_sensitive_notify, entry);
336
 
        g_signal_handlers_disconnect_by_func (entry->gmi, entry_visible_notify, entry);
 
323
        g_signal_handlers_disconnect_by_data(entry->gmi, entry);
337
324
 
338
325
        g_clear_object(&entry->entry.label);
339
326
        g_clear_object(&entry->entry.image);
355
342
        entry->entry.label = mi_find_label(GTK_WIDGET(gmi));
356
343
        entry->entry.image = mi_find_icon(GTK_WIDGET(gmi));
357
344
        entry->entry.menu = mi_find_menu(gmi);
 
345
        g_print("%s Setting entry %p paret as %u\n",G_STRFUNC, &entry->entry, entry->entry.parent_window);
358
346
 
359
347
        if (entry->entry.label == NULL && entry->entry.image == NULL) {
360
348
                const gchar * label = gtk_menu_item_get_label(gmi);
431
419
        if (menu->priv->unity_actions)
432
420
                gtk_widget_insert_action_group(GTK_WIDGET(menu->priv->win_menu), ACTION_MUX_PREFIX_UNITY, menu->priv->unity_actions);
433
421
 
434
 
        menu->priv->win_menu_insert = g_signal_connect(G_OBJECT (menu->priv->win_menu),
435
 
                "insert",
436
 
                G_CALLBACK (item_inserted_cb),
437
 
                menu);
438
 
        menu->priv->win_menu_remove = g_signal_connect (G_OBJECT (menu->priv->win_menu),
439
 
                "remove",
440
 
                G_CALLBACK (item_removed_cb),
441
 
                menu);
 
422
        g_signal_connect(G_OBJECT(menu->priv->win_menu), "insert", G_CALLBACK (item_inserted_cb), menu);
 
423
        g_signal_connect(G_OBJECT(menu->priv->win_menu), "remove", G_CALLBACK (item_removed_cb), menu);
442
424
 
443
425
        GList * children = gtk_container_get_children(GTK_CONTAINER(menu->priv->win_menu));
444
426
        GList * child;