X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/a02bffd9a0cca7a49b5bc2c87a3b0293b91aba8b..6757fcf0e0225e3a716662c8683719469498f0b1:/tests/GUI/dndwindow.cc diff --git a/tests/GUI/dndwindow.cc b/tests/GUI/dndwindow.cc index daa5939..f18ee57 100644 --- a/tests/GUI/dndwindow.cc +++ b/tests/GUI/dndwindow.cc @@ -35,8 +35,13 @@ DnDWindow::DnDWindow() add(m_HBox); m_HBox.pack_start(m_VBox); + + m_VBox.pack_start(m_Button_Canio); + m_VBox.pack_start(m_Button_Y); + m_VBox.pack_start(m_Button_Codo); + m_HBox.pack_start(m_WorkPlace); - m_WorkPlace.set_size_request(300, 300); + m_WorkPlace.set_size_request(600, 600); //Targets: std::list listTargets; @@ -59,20 +64,12 @@ DnDWindow::DnDWindow() 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); - m_VBox.pack_start(m_Button_Codo); - - //Drop site: - - //Make m_Label_Drop a DnD drop destination: m_WorkPlace.drag_dest_set(listTargets); - - //Connect signals: + + //Connect signals: m_WorkPlace.signal_drag_data_received().connect( SigC::slot(*this, &DnDWindow::on_label_drop_drag_data_received) ); - show_all(); } @@ -108,10 +105,6 @@ void DnDWindow::on_canio_drag_data_get(const Glib::RefPtr& con { //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 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); } @@ -136,19 +129,20 @@ 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) ); - /* Ajusto coordenada x e y para que caigan en un lugar de una cuadricula de - * 32x32 */ - int i,j; - // el +1 es para evitar un bug cuando se selecciona muy cerce de la - // separacion de 2 cuadritos - i = (x+1)/32; - j = (y+1)/32; - m_WorkPlace.put(*a, i*32, j*32); - a->show(); - //listaItems.push_back(a); + CItem *a = Gtk::manage( new CItem((const char *)selection_data->data) ); + /* Ajusto coordenada x e y para que caigan en un lugar de una cuadricula de + * 32x32 */ + int i,j; + // el +1 es para evitar un bug cuando se selecciona muy cerce de la + // separacion de 2 cuadritos + i = (x+1)/32; + j = (y+1)/32; + m_WorkPlace.put(*a, i*32, j*32); + a->show(); + //listaItems.push_back(a); } context->drag_finish(false, false, time); } +