~ubuntu-branches/ubuntu/oneiric/cairo-dock-plug-ins/oneiric-updates

« back to all changes in this revision

Viewing changes to Status-Notifier/src/applet-notifications.c

  • Committer: Kees Cook
  • Date: 2011-08-11 23:17:39 UTC
  • mfrom: (20.1.1 cairo-dock-plug-ins)
  • Revision ID: kees@outflux.net-20110811231739-cteedan51tmdg77v
Tags: 2.4.0~0beta2-0ubuntu1
releasing version 2.4.0~0beta2-0ubuntu1

Show diffs side-by-side

added added

removed removed

Lines of Context:
83
83
        return pItem;
84
84
}
85
85
 
 
86
 
 
87
static inline gboolean _popup_menu (CDStatusNotifierItem *pItem, Icon *pIcon, CairoContainer *pContainer)
 
88
{
 
89
        gboolean r = FALSE;
 
90
        if (pItem->cMenuPath != NULL)
 
91
        {
 
92
                if (pItem->pMenu == NULL)
 
93
                        pItem->pMenu = dbusmenu_gtkmenu_new ((gchar *)pItem->cService, (gchar *)pItem->cMenuPath);
 
94
                if (pItem->pMenu != NULL)
 
95
                {
 
96
                        cairo_dock_popup_menu_on_icon (GTK_WIDGET (pItem->pMenu), pIcon, pContainer);
 
97
                        r = TRUE;
 
98
                }
 
99
        }
 
100
 
 
101
        if (!r)
 
102
        {
 
103
                r = _emit_click (pItem, pIcon, pContainer, "ContextMenu");
 
104
        }
 
105
 
 
106
        if (!r)
 
107
        {
 
108
                r = _emit_click (pItem, pIcon, pContainer, "Activate");
 
109
        }
 
110
}
 
111
 
86
112
CD_APPLET_ON_CLICK_BEGIN
87
113
        CDStatusNotifierItem *pItem = _get_item (CD_APPLET_CLICKED_ICON, CD_APPLET_CLICKED_CONTAINER);
88
114
        //g_print ("click on item '%s'\n", pItem?pItem->cService:"none");
89
115
        if (pItem != NULL)
90
116
        {
91
 
                gboolean r = _emit_click (pItem, CD_APPLET_CLICKED_ICON, CD_APPLET_CLICKED_CONTAINER, "Activate");
92
 
                if (!r)
93
 
                {
94
 
                        if (pItem->cId != NULL)
 
117
                if (myConfig.bMenuOnLeftClick)
 
118
                {
 
119
                        _popup_menu (pItem, CD_APPLET_CLICKED_ICON, CD_APPLET_CLICKED_CONTAINER);
 
120
                }
 
121
                else
 
122
                {
 
123
                        gboolean r = _emit_click (pItem, CD_APPLET_CLICKED_ICON, CD_APPLET_CLICKED_CONTAINER, "Activate");
 
124
                        if (!r)
95
125
                        {
96
 
                                cairo_dock_launch_command (pItem->cId);  // lancer une nouvelle fois l'appli montre sa fenetre (enfin, generalement).
 
126
                                if (pItem->cId != NULL)
 
127
                                {
 
128
                                        /// TODO: try to get the icon in the taskbar, because launch the command doesn't raise the window if it was already visible (but it does pop up it if it was hidden, usually).
 
129
                                        cairo_dock_launch_command (pItem->cId);  // lancer une nouvelle fois l'appli montre sa fenetre (enfin, generalement).
 
130
                                }
97
131
                        }
98
132
                }
99
133
        }
137
171
 
138
172
gboolean cd_status_notifier_on_right_click (CairoDockModuleInstance *myApplet, Icon *pClickedIcon, CairoContainer *pClickedContainer, GtkWidget *pAppletMenu, gboolean *bDiscardMenu)
139
173
{
140
 
        if (pClickedIcon == NULL)
 
174
        if (pClickedIcon == NULL || myConfig.bMenuOnLeftClick)
141
175
                return CAIRO_DOCK_LET_PASS_NOTIFICATION;
142
176
        
143
177
        CD_APPLET_ENTER;
144
 
        CDStatusNotifierItem *pItem = _get_item (CD_APPLET_CLICKED_ICON, CD_APPLET_CLICKED_CONTAINER);
 
178
        CDStatusNotifierItem *pItem = _get_item (pClickedIcon, pClickedContainer);
145
179
        if (pItem != NULL)
146
180
        {
147
 
                gboolean r = FALSE;
148
 
                if (pItem->cMenuPath != NULL)
149
 
                {
150
 
                        if (pItem->pMenu == NULL)
151
 
                                pItem->pMenu = dbusmenu_gtkmenu_new ((gchar *)pItem->cService, (gchar *)pItem->cMenuPath);
152
 
                        if (pItem->pMenu != NULL)
153
 
                        {
154
 
                                cairo_dock_popup_menu_on_icon (GTK_WIDGET (pItem->pMenu), pClickedIcon, pClickedContainer);
155
 
                                r = TRUE;
156
 
                        }
157
 
                }
158
 
                
159
 
                if (!r)
160
 
                {
161
 
                        _emit_click (pItem, pClickedIcon, pClickedContainer, "ContextMenu");
162
 
                }
 
181
                _popup_menu (pItem, pClickedIcon, pClickedContainer);
 
182
 
163
183
                *bDiscardMenu = TRUE;
164
184
                CD_APPLET_LEAVE (CAIRO_DOCK_INTERCEPT_NOTIFICATION);
165
185
        }