~ubuntu-branches/ubuntu/saucy/cairo-dock-plug-ins/saucy

« back to all changes in this revision

Viewing changes to Remote-Control/src/applet-icon-finder.c

Tags: upstream-3.0.0.0beta1
ImportĀ upstreamĀ versionĀ 3.0.0.0beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
        CairoDock **pFoundDock = data[4];
62
62
        Icon **pFirstIcon = data[5];
63
63
        CairoDock **pFirstParentDock = data[6];
64
 
        if (pDock == g_pMainDock || *pFoundIcon != NULL) // on a deja cherche dans le main dock, ou deja trouve ce qu'on cherchait.
 
64
        if (pDock == myData.pCurrentDock || *pFoundIcon != NULL) // on a deja cherche dans le main dock, ou deja trouve ce qu'on cherchait.
65
65
                return ;
66
66
        
67
67
        gboolean bFound = _cd_do_icon_match (pIcon, cCommandPrefix, length);
77
77
                        if (*pFirstIcon == NULL)  // on garde une trace de la 1ere icone pour boucler dans la liste.
78
78
                        {
79
79
                                *pFirstIcon = pIcon;
80
 
                                *pFirstParentDock = g_pMainDock;
 
80
                                *pFirstParentDock = pDock;
81
81
                        }
82
82
                        if (pIcon == pAfterIcon)
83
83
                        {
90
90
{
91
91
        g_return_val_if_fail (cCommandPrefix != NULL, NULL);
92
92
        
93
 
        //\_________________ on cherche en premier dans le main dock, car il est deja visible.
 
93
        //\_________________ on cherche en premier dans le dock courant, car il est deja visible.
94
94
        int length = strlen (cCommandPrefix);
95
95
        Icon *pIcon, *pFirstIcon = NULL;
96
96
        CairoDock *pParentDock, *pFirstParentDock = NULL;
97
97
        GList *ic;
98
 
        for (ic = g_pMainDock->icons; ic != NULL; ic = ic->next)
 
98
        for (ic = myData.pCurrentDock->icons; ic != NULL; ic = ic->next)
99
99
        {
100
100
                pIcon = ic->data;
101
101
                if (pIcon->cCommand && g_ascii_strncasecmp (cCommandPrefix, pIcon->cCommand, length) == 0)
102
102
                {
103
103
                        if (pAfterIcon == NULL)
104
104
                        {
105
 
                                *pDock = g_pMainDock;
 
105
                                *pDock = myData.pCurrentDock;
106
106
                                return pIcon;
107
107
                        }
108
108
                        else
110
110
                                if (pFirstIcon == NULL)  // on garde une trace de la 1ere icone pour boucler dans la liste.
111
111
                                {
112
112
                                        pFirstIcon = pIcon;
113
 
                                        pFirstParentDock = g_pMainDock;
 
113
                                        pFirstParentDock = myData.pCurrentDock;
114
114
                                }
115
115
                                if (pIcon == pAfterIcon)
116
116
                                {
147
147
        //\_________________ on gere le cachage et le montrage du dock precedent et actuel.
148
148
        if (myData.pCurrentDock != NULL && pDock != myData.pCurrentDock)  // on remet au repos le dock precedemment anime.
149
149
        {
 
150
                g_print ("leave this dock\n");
150
151
                cairo_dock_emit_leave_signal (CAIRO_CONTAINER (myData.pCurrentDock));
151
 
                cairo_dock_remove_notification_func_on_object (myData.pCurrentDock, NOTIFICATION_RENDER_DOCK, (CairoDockNotificationFunc) cd_do_render, NULL);
152
 
                cairo_dock_remove_notification_func_on_object (myData.pCurrentDock, NOTIFICATION_UPDATE_DOCK, (CairoDockNotificationFunc) cd_do_update_container, NULL);
 
152
                
 
153
                cd_do_remove_icons_number (myData.pCurrentDock);
 
154
                
 
155
                cairo_dock_remove_notification_func_on_object (myData.pCurrentDock, NOTIFICATION_RENDER, (CairoDockNotificationFunc) cd_do_render, NULL);
 
156
                cairo_dock_remove_notification_func_on_object (myData.pCurrentDock, NOTIFICATION_UPDATE, (CairoDockNotificationFunc) cd_do_update_container, NULL);
 
157
                cairo_dock_remove_notification_func_on_object (myData.pCurrentDock, NOTIFICATION_CLICK_ICON, (CairoDockNotificationFunc) cd_do_on_click, NULL);
 
158
                cairo_dock_remove_notification_func_on_object (myData.pCurrentDock, NOTIFICATION_MIDDLE_CLICK_ICON, (CairoDockNotificationFunc) cd_do_on_click, NULL);
153
159
        }
154
160
        if (pDock != NULL && pDock != myData.pCurrentDock)  // on montre le nouveau dock
155
161
        {
156
 
                if (pDock != NULL)
157
 
                {
158
 
                        if (pDock->iRefCount > 0)
159
 
                        {
160
 
                                CairoDock *pParentDock = NULL;
161
 
                                Icon *pPointingIcon = cairo_dock_search_icon_pointing_on_dock (pDock, &pParentDock);
162
 
                                if (pPointingIcon != NULL)
163
 
                                {
164
 
                                        cairo_dock_show_subdock (pPointingIcon, pParentDock);  // utile pour le montrage des sous-docks au clic.
165
 
                                }
166
 
                        }
167
 
                        else
168
 
                        {
169
 
                                /// utile de faire ca si on entre dedans ?...
170
 
                                if (pDock->bAutoHide)
171
 
                                        cairo_dock_start_showing (pDock);
172
 
                                if (pDock->iVisibility == CAIRO_DOCK_VISI_KEEP_BELOW)
173
 
                                        cairo_dock_pop_up (pDock);
174
 
                        }
175
 
                        cairo_dock_emit_enter_signal (CAIRO_CONTAINER (pDock));
176
 
                }
 
162
                g_print (" dock %p <- %p\n", myData.pCurrentDock, pDock);
 
163
                if (pDock->iRefCount > 0)
 
164
                {
 
165
                        CairoDock *pParentDock = NULL;
 
166
                        Icon *pPointingIcon = cairo_dock_search_icon_pointing_on_dock (pDock, &pParentDock);
 
167
                        if (pPointingIcon != NULL)
 
168
                        {
 
169
                                cairo_dock_show_subdock (pPointingIcon, pParentDock);  // utile pour le montrage des sous-docks au clic.
 
170
                        }
 
171
                }
 
172
                else
 
173
                {
 
174
                        /// utile de faire ca si on entre dedans ?...
 
175
                        g_print ("enter this dock\n");
 
176
                        if (pDock->bAutoHide)
 
177
                                cairo_dock_start_showing (pDock);
 
178
                        if (pDock->iVisibility == CAIRO_DOCK_VISI_KEEP_BELOW)
 
179
                                cairo_dock_pop_up (pDock);
 
180
                }
 
181
                cairo_dock_emit_enter_signal (CAIRO_CONTAINER (pDock));
 
182
                
 
183
                cd_do_numberize_icons (pDock);
177
184
                
178
185
                cairo_dock_register_notification_on_object (pDock,
179
 
                        NOTIFICATION_UPDATE_DOCK,
 
186
                        NOTIFICATION_UPDATE,
180
187
                        (CairoDockNotificationFunc) cd_do_update_container,
181
188
                        CAIRO_DOCK_RUN_AFTER, NULL);
182
189
                cairo_dock_register_notification_on_object (pDock,
183
 
                        NOTIFICATION_RENDER_DOCK,
 
190
                        NOTIFICATION_RENDER,
184
191
                        (CairoDockNotificationFunc) cd_do_render,
185
192
                        CAIRO_DOCK_RUN_AFTER, NULL);
 
193
                cairo_dock_register_notification_on_object (pDock,
 
194
                        NOTIFICATION_CLICK_ICON,
 
195
                        (CairoDockNotificationFunc) cd_do_on_click,
 
196
                        CAIRO_DOCK_RUN_AFTER, NULL);  // we don't disable the clicks, rather we will close the session.
 
197
                cairo_dock_register_notification_on_object (pDock,
 
198
                        NOTIFICATION_MIDDLE_CLICK_ICON,
 
199
                        (CairoDockNotificationFunc) cd_do_on_click,
 
200
                        CAIRO_DOCK_RUN_AFTER, NULL);
 
201
                
 
202
                
186
203
        }
187
204
        if (pDock != NULL)
188
205
        {
204
221
                if (1||myData.pCurrentDock != pDock)
205
222
                {
206
223
                        cairo_dock_emit_motion_signal (pDock,
207
 
                                x,
208
 
                                y);
 
224
                                pDock->container.bIsHorizontal ? x : y,
 
225
                                pDock->container.bIsHorizontal ? y : x);
209
226
                }
210
227
                else
211
228
                {
217
234
                myData.iMouseY = y;
218
235
                cairo_dock_request_icon_animation (pIcon, CAIRO_CONTAINER (pDock), myConfig.cIconAnimation, 1e6);  // interrompt l'animation de "mouse over".
219
236
                cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
220
 
                //if (myAccessibility.bShowSubDockOnClick)
221
 
                //      cairo_dock_show_subdock (pIcon, pDock, FALSE);
222
237
        }
223
238
        
224
239
        myData.pCurrentDock = pDock;
225
240
        myData.pCurrentIcon = pIcon;
226
 
        if (myData.pCurrentDock == NULL)
227
 
                gtk_window_present (GTK_WINDOW (g_pMainDock->container.pWidget));
 
241
        g_print ("myData.pCurrentDock <- %p\n", myData.pCurrentDock);
228
242
}
229
243
 
230
244
 
250
264
        motion.x_root = pDock->container.iWindowPositionX + pDock->container.iMouseX;
251
265
        motion.y_root = pDock->container.iWindowPositionY + pDock->container.iMouseY;
252
266
        motion.time = 0;
253
 
        motion.window = pDock->container.pWidget->window;
 
267
        motion.window = gldi_container_get_gdk_window (CAIRO_CONTAINER (pDock));
 
268
        #if (GTK_MAJOR_VERSION < 3)
254
269
        motion.device = gdk_device_get_core_pointer ();
 
270
        #else
 
271
        GdkDeviceManager *manager = gdk_display_get_device_manager (gdk_window_get_display (motion.window));
 
272
        motion.device = gdk_device_manager_get_client_pointer(manager);
 
273
        #endif
255
274
        g_signal_emit_by_name (pDock->container.pWidget, "motion-notify-event", &motion, &bReturn);
256
275
        return FALSE;
257
276
}