Fix Edit_box

This commit is contained in:
Maxime Gimeno 2017-11-27 16:21:05 +01:00
parent 59e8a2c52c
commit 8a50397cd9
3 changed files with 10 additions and 2 deletions

View File

@ -773,6 +773,7 @@ void Scene_edit_box_item::highlight()
{ {
d->ready_to_hl = true; d->ready_to_hl = true;
Viewer_interface* viewer = dynamic_cast<Viewer_interface*>(*QGLViewer::QGLViewerPool().begin()); Viewer_interface* viewer = dynamic_cast<Viewer_interface*>(*QGLViewer::QGLViewerPool().begin());
viewer->makeCurrent();
int type = -1, id = -1; int type = -1, id = -1;
//pick //pick
if(!d->selection_on) if(!d->selection_on)
@ -910,6 +911,7 @@ void Scene_edit_box_item::highlight()
void Scene_edit_box_item::clearHL() void Scene_edit_box_item::clearHL()
{ {
Viewer_interface* viewer = dynamic_cast<Viewer_interface*>(*QGLViewer::QGLViewerPool().begin()); Viewer_interface* viewer = dynamic_cast<Viewer_interface*>(*QGLViewer::QGLViewerPool().begin());
viewer->makeCurrent();
d->hl_normal.clear(); d->hl_normal.clear();
d->hl_vertex.clear(); d->hl_vertex.clear();
@ -1275,6 +1277,7 @@ double Scene_edit_box_item_priv::applyZ(int id, double z, double dirz)
//type : 0 = vertex, 1 = edge, 2 = face //type : 0 = vertex, 1 = edge, 2 = face
void Scene_edit_box_item_priv::picking(int& type, int& id, Viewer_interface *viewer) void Scene_edit_box_item_priv::picking(int& type, int& id, Viewer_interface *viewer)
{ {
viewer->makeCurrent();
type = -1; type = -1;
id = -1; id = -1;
int deviceWidth = viewer->camera()->screenWidth(); int deviceWidth = viewer->camera()->screenWidth();

View File

@ -997,13 +997,14 @@ public Q_SLOTS:
{ {
if(toggle) if(toggle)
{ {
QGLViewer* viewer = *QGLViewer::QGLViewerPool().begin();
qobject_cast<Viewer_interface*>(viewer)->set2DSelectionMode(false);
edit_box = new Scene_edit_box_item(scene); edit_box = new Scene_edit_box_item(scene);
edit_box->setRenderingMode(Wireframe); edit_box->setRenderingMode(Wireframe);
edit_box->setName("Selection Box"); edit_box->setName("Selection Box");
connect(edit_box, &Scene_edit_box_item::aboutToBeDestroyed, connect(edit_box, &Scene_edit_box_item::aboutToBeDestroyed,
this, &Polyhedron_demo_point_set_selection_plugin::reset_editbox); this, &Polyhedron_demo_point_set_selection_plugin::reset_editbox);
scene->addItem(edit_box); scene->addItem(edit_box);
QGLViewer* viewer = *QGLViewer::QGLViewerPool().begin();
viewer->installEventFilter(edit_box); viewer->installEventFilter(edit_box);
add_box->setEnabled(true); add_box->setEnabled(true);
} }

View File

@ -600,7 +600,11 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
continue; continue;
if(!with_names && item_should_be_skipped_in_draw(&item)) continue; if(!with_names && item_should_be_skipped_in_draw(&item)) continue;
if(item.visible()) if(item.visible() &&
(item.renderingMode() == Flat ||
item.renderingMode() ==FlatPlusEdges ||
item.renderingMode() == Gouraud)
)
{ {
if(with_names) { if(with_names) {
viewer->glClearDepth(1.0); viewer->glClearDepth(1.0);