~unity-team/bamf/xenial

« back to all changes in this revision

Viewing changes to src/bamf-legacy-window.c

  • Committer: CI Train Bot
  • Author(s): Andrea Azzarone
  • Date: 2016-04-15 11:57:23 UTC
  • mfrom: (629.1.11 bamf-export-actions-menu)
  • Revision ID: ci-train-bot@canonical.com-20160415115723-1f7bwhsiem1gqt4x
BamfWindow: Export window actions menu using dbusmenu Fixes: #1570812
Approved by: Marco Trevisan (Treviño)

Show diffs side-by-side

added added

removed removed

Lines of Context:
52
52
struct _BamfLegacyWindowPrivate
53
53
{
54
54
  WnckWindow * legacy_window;
 
55
  GtkWidget  * action_menu;
55
56
  GFile      * mini_icon;
56
57
  gchar      * exec_string;
57
58
  gchar      * working_dir;
547
548
  *push = TRUE;
548
549
}
549
550
 
 
551
GtkWidget *
 
552
bamf_legacy_window_get_action_menu (BamfLegacyWindow *self)
 
553
{
 
554
  BamfLegacyWindowPrivate *priv;
 
555
 
 
556
  g_return_val_if_fail (BAMF_IS_LEGACY_WINDOW (self), NULL);
 
557
 
 
558
  if (BAMF_LEGACY_WINDOW_GET_CLASS (self)->get_action_menu)
 
559
    return BAMF_LEGACY_WINDOW_GET_CLASS (self)->get_action_menu (self);
 
560
 
 
561
  priv = self->priv;
 
562
  g_return_val_if_fail (WNCK_IS_WINDOW (priv->legacy_window), NULL);
 
563
 
 
564
  if (!priv->action_menu)
 
565
    {
 
566
      priv->action_menu = wnck_action_menu_new (priv->legacy_window);
 
567
      g_object_add_weak_pointer (G_OBJECT (priv->action_menu),
 
568
                                 (gpointer *) &priv->action_menu);
 
569
    }
 
570
 
 
571
  return priv->action_menu;
 
572
}
 
573
 
550
574
void bamf_legacy_window_show_action_menu (BamfLegacyWindow *self, guint32 time,
551
575
                                          guint button, gint x, gint y)
552
576
{
 
577
  BamfLegacyWindowPrivate *priv;
 
578
  GtkWidget *menu;
 
579
 
553
580
  g_return_if_fail (BAMF_IS_LEGACY_WINDOW (self));
554
581
 
555
582
  if (BAMF_LEGACY_WINDOW_GET_CLASS (self)->show_action_menu)
557
584
 
558
585
  g_return_if_fail (WNCK_IS_WINDOW (self->priv->legacy_window));
559
586
 
560
 
  GtkWidget *menu = wnck_action_menu_new (self->priv->legacy_window);
561
 
  g_signal_connect (G_OBJECT (menu), "unmap", G_CALLBACK (g_object_unref), NULL);
 
587
  priv = self->priv;
 
588
 
 
589
  if (priv->action_menu && gtk_widget_is_visible (GTK_WIDGET (priv->action_menu)))
 
590
    return;
 
591
 
 
592
  menu = bamf_legacy_window_get_action_menu (self);
 
593
 
562
594
  g_object_ref_sink (menu);
 
595
  g_signal_handlers_disconnect_by_func (menu, g_object_unref, self);
 
596
  g_signal_connect (G_OBJECT (menu), "unmap", G_CALLBACK (g_object_unref), self);
563
597
 
564
598
  gtk_menu_set_screen (GTK_MENU (menu), gdk_screen_get_default ());
565
599
  gtk_widget_show (menu);
650
684
      self->priv->legacy_window = NULL;
651
685
    }
652
686
 
 
687
  if (self->priv->action_menu)
 
688
    {
 
689
      g_signal_handlers_disconnect_by_data (self->priv->action_menu, self);
 
690
      g_object_remove_weak_pointer (G_OBJECT (self->priv->action_menu),
 
691
                                    (gpointer*) &self->priv->action_menu);
 
692
    }
 
693
 
653
694
  G_OBJECT_CLASS (bamf_legacy_window_parent_class)->dispose (object);
654
695
}
655
696