]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - tests/GUI/dndwindow.cc
Le puse el icono de lo que se esta drageando cuando se draguea... Va tomando forma...
[z.facultad/75.42/plaqui.git] / tests / GUI / dndwindow.cc
index fea04dcefea2dabab8da87f04bd179f9190fe988..e3652080302741d2d365a11e577be4154954a172 100644 (file)
@@ -48,7 +48,10 @@ DnDWindow::DnDWindow()
   m_Button_Canio.signal_drag_data_get().connect( SigC::slot(*this, &DnDWindow::on_canio_drag_data_get));
        m_Button_Y.signal_drag_data_get().connect( SigC::slot(*this, &DnDWindow::on_y_drag_data_get));
        m_Button_Codo.signal_drag_data_get().connect( SigC::slot(*this, &DnDWindow::on_codo_drag_data_get));
-
+  // Señales para cambiar el icono cuando empieza el drag.
+  m_Button_Canio.signal_drag_begin().connect( SigC::slot(*this, &DnDWindow::on_canio_drag_begin));
+  m_Button_Y.signal_drag_begin().connect( SigC::slot(*this, &DnDWindow::on_y_drag_begin));
+  m_Button_Codo.signal_drag_begin().connect( SigC::slot(*this, &DnDWindow::on_codo_drag_begin));
 
   m_VBox.pack_start(m_Button_Canio);
        m_VBox.pack_start(m_Button_Y);
@@ -78,10 +81,14 @@ void DnDWindow::on_item_button_down()
 }
 
 
-void DnDWindow::on_canio_drag_data_get(const Glib::RefPtr<Gdk::DragContext>&, GtkSelectionData* selection_data, guint, guint)
+void DnDWindow::on_canio_drag_data_get(const Glib::RefPtr<Gdk::DragContext>& context, GtkSelectionData* selection_data, guint, guint)
 {
   //TODO: The gtkmm API needs to change to use a Gtk::SelectionData instead of a GtkSelectionData.
   //That should happen for gtkmm 2.4.
+       Glib::RefPtr<Gdk::Pixbuf> image;
+       image = Gdk::Pixbuf::create_from_file("canio.png");
+       // Cambio el icono de DND seteando el "hot spot" en el centro.
+       context->set_icon(image, image->get_width() / 2, image->get_height() / 2);
        gtk_selection_data_set (selection_data, selection_data->target, 8, (const guchar*)"canio.png", 9);
 }
 
@@ -120,3 +127,24 @@ void DnDWindow::on_label_drop_drag_data_received(const Glib::RefPtr<Gdk::DragCon
   context->drag_finish(false, false, time);
 }
 
+void DnDWindow::on_canio_drag_begin(const Glib::RefPtr<Gdk::DragContext>& context)
+{
+       Glib::RefPtr<Gdk::Pixbuf> image;
+       image = Gdk::Pixbuf::create_from_file("canio.png");
+       context->set_icon(image, image->get_width() / 2, image->get_height() / 4);
+}
+
+void DnDWindow::on_y_drag_begin(const Glib::RefPtr<Gdk::DragContext>& context)
+{
+       Glib::RefPtr<Gdk::Pixbuf> image;
+       image = Gdk::Pixbuf::create_from_file("y.png");
+       context->set_icon(image, image->get_width() / 4, image->get_height() / 4);
+}
+
+void DnDWindow::on_codo_drag_begin(const Glib::RefPtr<Gdk::DragContext>& context)
+{
+       Glib::RefPtr<Gdk::Pixbuf> image;
+       image = Gdk::Pixbuf::create_from_file("codo.png");
+       context->set_icon(image, 0, 0);//image->get_width() / 2, image->get_height() / 2);
+}
+