~nicovdw/unity/fix-for-733743

« back to all changes in this revision

Viewing changes to src/PlaceLauncherIcon.cpp

[merge] various fixes work

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
 
27
27
#include <glib/gi18n-lib.h>
28
28
 
 
29
#define SECTION_NUMBER "ted-loves-strings"
 
30
 
29
31
PlaceLauncherIcon::PlaceLauncherIcon (Launcher *launcher, PlaceEntry *entry)
30
32
: SimpleLauncherIcon(launcher),
31
33
  _entry (entry)
87
89
 
88
90
}
89
91
 
 
92
void
 
93
PlaceLauncherIcon::ForeachSectionCallback (PlaceEntry *entry, PlaceEntrySection& section)
 
94
{
 
95
  DbusmenuMenuitem              *menu_item;
 
96
  char *temp;
 
97
 
 
98
  temp = g_markup_escape_text (section.GetName (), -1);
 
99
  menu_item = dbusmenu_menuitem_new ();
 
100
  dbusmenu_menuitem_property_set (menu_item, DBUSMENU_MENUITEM_PROP_LABEL, section.GetName ());
 
101
  dbusmenu_menuitem_property_set_bool (menu_item, DBUSMENU_MENUITEM_PROP_ENABLED, true);
 
102
  dbusmenu_menuitem_property_set_bool (menu_item, DBUSMENU_MENUITEM_PROP_VISIBLE, true);
 
103
  dbusmenu_menuitem_property_set_int (menu_item, SECTION_NUMBER, _current_menu.size ());
 
104
  _current_menu.push_back (menu_item);
 
105
  g_signal_connect (menu_item, DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED,
 
106
                    G_CALLBACK (&PlaceLauncherIcon::OnOpen), this);
 
107
  g_free (temp);
 
108
}
 
109
 
90
110
std::list<DbusmenuMenuitem *>
91
111
PlaceLauncherIcon::GetMenus ()
92
112
{
93
 
  std::list<DbusmenuMenuitem *>  result;
94
113
  DbusmenuMenuitem              *menu_item;
95
 
 
96
 
  menu_item = dbusmenu_menuitem_new ();
97
 
 
98
 
  dbusmenu_menuitem_property_set (menu_item, DBUSMENU_MENUITEM_PROP_LABEL, _("Open"));
99
 
  dbusmenu_menuitem_property_set_bool (menu_item, DBUSMENU_MENUITEM_PROP_ENABLED, true);
100
 
  dbusmenu_menuitem_property_set_bool (menu_item, DBUSMENU_MENUITEM_PROP_VISIBLE, true);
101
 
 
 
114
  char * temp;
 
115
  
 
116
  _current_menu.erase (_current_menu.begin (), _current_menu.end ());
 
117
 
 
118
  _entry->ForeachSection (sigc::mem_fun (this, &PlaceLauncherIcon::ForeachSectionCallback));
 
119
  
 
120
  menu_item = dbusmenu_menuitem_new ();
 
121
  dbusmenu_menuitem_property_set (menu_item, DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_CLIENT_TYPES_SEPARATOR);
 
122
  dbusmenu_menuitem_property_set_bool (menu_item, DBUSMENU_MENUITEM_PROP_ENABLED, true);
 
123
  dbusmenu_menuitem_property_set_bool (menu_item, DBUSMENU_MENUITEM_PROP_VISIBLE, true);
 
124
  _current_menu.push_back (menu_item);
 
125
 
 
126
  temp = g_markup_escape_text (_entry->GetName (), -1);
 
127
  menu_item = dbusmenu_menuitem_new ();
 
128
  dbusmenu_menuitem_property_set (menu_item, DBUSMENU_MENUITEM_PROP_LABEL, temp);
 
129
  dbusmenu_menuitem_property_set_bool (menu_item, DBUSMENU_MENUITEM_PROP_ENABLED, true);
 
130
  dbusmenu_menuitem_property_set_bool (menu_item, DBUSMENU_MENUITEM_PROP_VISIBLE, true);
 
131
  dbusmenu_menuitem_property_set_int (menu_item, SECTION_NUMBER, 0);
 
132
  _current_menu.push_back (menu_item);
102
133
  g_signal_connect (menu_item, DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED,
103
134
                    G_CALLBACK (&PlaceLauncherIcon::OnOpen), this);
104
 
 
105
 
  result.push_back (menu_item);
106
 
 
107
 
  return result;
 
135
  g_free (temp);
 
136
 
 
137
  return _current_menu;
108
138
}
109
139
 
110
140
void
121
151
void
122
152
PlaceLauncherIcon::OnOpen (DbusmenuMenuitem *item, int time, PlaceLauncherIcon *self)
123
153
{
124
 
  self->ActivateLauncherIcon ();
 
154
  self->ActivatePlace (dbusmenu_menuitem_property_get_int (item, SECTION_NUMBER), "");
125
155
}
126
156
 
127
157
void