91
91
g_return_val_if_fail (cCommandPrefix != NULL, NULL);
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;
98
for (ic = g_pMainDock->icons; ic != NULL; ic = ic->next)
98
for (ic = myData.pCurrentDock->icons; ic != NULL; ic = ic->next)
100
100
pIcon = ic->data;
101
101
if (pIcon->cCommand && g_ascii_strncasecmp (cCommandPrefix, pIcon->cCommand, length) == 0)
103
103
if (pAfterIcon == NULL)
105
*pDock = g_pMainDock;
105
*pDock = myData.pCurrentDock;
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.
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);
153
cd_do_remove_icons_number (myData.pCurrentDock);
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);
154
160
if (pDock != NULL && pDock != myData.pCurrentDock) // on montre le nouveau dock
158
if (pDock->iRefCount > 0)
160
CairoDock *pParentDock = NULL;
161
Icon *pPointingIcon = cairo_dock_search_icon_pointing_on_dock (pDock, &pParentDock);
162
if (pPointingIcon != NULL)
164
cairo_dock_show_subdock (pPointingIcon, pParentDock); // utile pour le montrage des sous-docks au clic.
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);
175
cairo_dock_emit_enter_signal (CAIRO_CONTAINER (pDock));
162
g_print (" dock %p <- %p\n", myData.pCurrentDock, pDock);
163
if (pDock->iRefCount > 0)
165
CairoDock *pParentDock = NULL;
166
Icon *pPointingIcon = cairo_dock_search_icon_pointing_on_dock (pDock, &pParentDock);
167
if (pPointingIcon != NULL)
169
cairo_dock_show_subdock (pPointingIcon, pParentDock); // utile pour le montrage des sous-docks au clic.
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);
181
cairo_dock_emit_enter_signal (CAIRO_CONTAINER (pDock));
183
cd_do_numberize_icons (pDock);
178
185
cairo_dock_register_notification_on_object (pDock,
179
NOTIFICATION_UPDATE_DOCK,
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,
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);
187
204
if (pDock != NULL)
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);
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);
250
264
motion.x_root = pDock->container.iWindowPositionX + pDock->container.iMouseX;
251
265
motion.y_root = pDock->container.iWindowPositionY + pDock->container.iMouseY;
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 ();
271
GdkDeviceManager *manager = gdk_display_get_device_manager (gdk_window_get_display (motion.window));
272
motion.device = gdk_device_manager_get_client_pointer(manager);
255
274
g_signal_emit_by_name (pDock->container.pWidget, "motion-notify-event", &motion, &bReturn);