static gboolean drop_caja_desktop_uri (PanelWidget *panel, int pos, const char *uri) { gboolean success; const char *id; const char *basename; if (g_ascii_strncasecmp (uri, "x-caja-desktop:///", strlen ("x-caja-desktop:///")) != 0) return FALSE; success = TRUE; id = panel_profile_get_toplevel_id (panel->toplevel); basename = uri + strlen ("x-caja-desktop:///"); if (strncmp (basename, "trash", strlen ("trash")) == 0) mate_panel_applet_frame_create (panel->toplevel, pos, "OAFIID:MATE_Panel_TrashApplet"); else if (strncmp (basename, "home", strlen ("home")) == 0) panel_launcher_create_with_id (id, pos, "caja-home.desktop"); else if (strncmp (basename, "computer", strlen ("computer")) == 0) panel_launcher_create_with_id (id, pos, "caja-computer.desktop"); else if (strncmp (basename, "network", strlen ("network")) == 0) panel_launcher_create_with_id (id, pos, "caja-scheme.desktop"); else success = FALSE; return success; }
static void panel_addto_add_item (PanelAddtoDialog *dialog, PanelAddtoItemInfo *item_info) { g_assert (item_info != NULL); switch (item_info->type) { case PANEL_ADDTO_APPLET: mate_panel_applet_frame_create (dialog->panel_widget->toplevel, dialog->insertion_position, item_info->iid); break; case PANEL_ADDTO_ACTION: panel_action_button_create (dialog->panel_widget->toplevel, dialog->insertion_position, item_info->action_type); break; case PANEL_ADDTO_LAUNCHER_MENU: panel_addto_present_applications (dialog); break; case PANEL_ADDTO_LAUNCHER: panel_launcher_create (dialog->panel_widget->toplevel, dialog->insertion_position, item_info->launcher_path); break; case PANEL_ADDTO_LAUNCHER_NEW: ask_about_launcher (NULL, dialog->panel_widget, dialog->insertion_position, FALSE); break; case PANEL_ADDTO_MENU: panel_menu_button_create (dialog->panel_widget->toplevel, dialog->insertion_position, item_info->menu_filename, item_info->menu_path, item_info->menu_path != NULL, item_info->name); break; case PANEL_ADDTO_MENUBAR: panel_menu_bar_create (dialog->panel_widget->toplevel, dialog->insertion_position); break; case PANEL_ADDTO_SEPARATOR: panel_separator_create (dialog->panel_widget->toplevel, dialog->insertion_position); break; case PANEL_ADDTO_DRAWER: panel_drawer_create (dialog->panel_widget->toplevel, dialog->insertion_position, NULL, FALSE, NULL); break; } }
void panel_receive_dnd_data (PanelWidget *panel, guint info, int pos, GtkSelectionData *selection_data, GdkDragContext *context, guint time_) { const guchar *data; gboolean success = FALSE; if (panel_lockdown_get_locked_down ()) { gtk_drag_finish (context, FALSE, FALSE, time_); return; } data = gtk_selection_data_get_data (selection_data); switch (info) { case TARGET_URL: success = drop_urilist (panel, pos, (char *)data); break; case TARGET_NETSCAPE_URL: success = drop_url (panel, pos, (char *)data); break; case TARGET_COLOR: success = set_background_color (panel->toplevel, (guint16 *) data); break; case TARGET_BGIMAGE: success = set_background_image_from_uri (panel->toplevel, (char *) data); break; case TARGET_BACKGROUND_RESET: if (panel_profile_background_key_is_writable (panel->toplevel, "type")) { panel_profile_set_background_type (panel->toplevel, PANEL_BACK_NONE); success = TRUE; } else { success = FALSE; } break; case TARGET_DIRECTORY: success = drop_uri (panel, pos, (char *)data, PANEL_ICON_FOLDER); break; case TARGET_APPLET: if (!gtk_selection_data_get_data (selection_data)) { gtk_drag_finish (context, FALSE, FALSE, time_); return; } if (panel_profile_id_lists_are_writable ()) { mate_panel_applet_frame_create (panel->toplevel, pos, (char *) data); success = TRUE; } else { success = FALSE; } break; case TARGET_APPLET_INTERNAL: success = drop_internal_applet (panel, pos, (char *)data, gdk_drag_context_get_selected_action (context)); break; case TARGET_ICON_INTERNAL: success = drop_internal_icon (panel, pos, (char *)data, gdk_drag_context_get_selected_action (context)); break; default: gtk_drag_finish (context, FALSE, FALSE, time_); return; } gtk_drag_finish (context, success, FALSE, time_); }