X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/e218a1f9cc4ccbe639a7f31610715f9bd66a8ee4..1de5f8fa25dcea9fb9de9707d75120f762ce3a87:/tests/GUI/dndwindow.cc?ds=sidebyside diff --git a/tests/GUI/dndwindow.cc b/tests/GUI/dndwindow.cc index 47a18d4..9aaf567 100644 --- a/tests/GUI/dndwindow.cc +++ b/tests/GUI/dndwindow.cc @@ -19,8 +19,6 @@ #include "dndwindow.h" #include -Glib::RefPtr ico_canio, ico_y, ico_codo; - DnDWindow::DnDWindow() : m_Button_Canio("Drag Canio\n"), m_Button_Y("Drop Y\n"), @@ -145,23 +143,31 @@ void DnDWindow::on_label_drop_drag_data_received(const Glib::RefPtrlength >= 0) && (selection_data->format == 8)) { - CItem *a = Gtk::manage( new CItem((const char *)selection_data->data) ); - m_WorkPlace.put(*a, i*32, j*32); - // Seteo la lista de tipos de drags - a->drag_source_set(listTargets); - // Conecto las señales - a->signal_drag_data_get().connect( SigC::slot(*this, &DnDWindow::on_item_drag_data_get)); - a->signal_drag_begin().connect( SigC::slot(*this, &DnDWindow::on_item_drag_begin)); - - a->show(); - //listaItems.push_back(a); + CItem *a = Gtk::manage( new CItem((const char *)selection_data->data) ); + m_WorkPlace.put(*a, i*32, j*32); + // Seteo la lista de tipos de drags + a->drag_source_set(listTargets); + // Conecto las señales + a->signal_drag_data_get().connect( SigC::slot(*this, &DnDWindow::on_item_drag_data_get)); + + // Utilizo el SigC::bind para que el callback on_drag_begin acepte un + // parametro extra, en este caso un CItem *. Esto se hace para + // que cuando el usuario quiera mover un item, saber que item es + // y pedirle su ícono para mostrar cono icono durante la operacion, + // Esto va a permitir, que si un widget tiene una imagen rotara o algo + // raro se vea el widget tal cual. + a->signal_drag_begin().connect(SigC::bind( SigC::slot(*this, &DnDWindow::on_item_drag_begin), a)); + + a->show(); + listaItems.push_back(a); } context->drag_finish(false, false, time); } -void DnDWindow::on_item_drag_begin(const Glib::RefPtr& context) +void DnDWindow::on_item_drag_begin(const Glib::RefPtr& context, CItem *item) { + context->set_icon(item->get_image(), 5, 5); } void DnDWindow::on_item_drag_data_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time) @@ -170,5 +176,3 @@ void DnDWindow::on_item_drag_data_get(const Glib::RefPtr& cont gtk_selection_data_set (selection_data, selection_data->target, 10, (const guchar*)"codo.png", 8); } - -