Revision: 6768 http://playerstage.svn.sourceforge.net/playerstage/?rev=6768&view=rev Author: alexcb Date: 2008-07-04 17:10:12 -0700 (Fri, 04 Jul 2008)
Log Message: ----------- modified deselection to allow moving the world while keeping a selected group selected Modified Paths: -------------- code/stage/trunk/libstage/canvas.cc code/stage/trunk/libstage/stage.hh Modified: code/stage/trunk/libstage/canvas.cc =================================================================== --- code/stage/trunk/libstage/canvas.cc 2008-07-04 23:45:09 UTC (rev 6767) +++ code/stage/trunk/libstage/canvas.cc 2008-07-05 00:10:12 UTC (rev 6768) @@ -225,27 +225,14 @@ switch(event) { case FL_MOUSEWHEEL: - if( selected_models ) - { - // rotate all selected models - for( GList* it = selected_models; it; it=it->next ) - { - StgModel* mod = (StgModel*)it->data; - mod->AddToPose( 0,0,0, 0.1*(double)Fl::event_dy() ); - } - redraw(); + if( perspectiveCam == true ) { + perspective_camera.scroll( Fl::event_dy() / 10.0 ); } - else - { - if( perspectiveCam == true ) { - perspective_camera.scroll( Fl::event_dy() / 10.0 ); - } - else { - camera.scale( Fl::event_dy(), Fl::event_x(), w(), Fl::event_y(), h() ); - } - invalidate(); - redraw(); + else { + camera.scale( Fl::event_dy(), Fl::event_x(), w(), Fl::event_y(), h() ); } + invalidate(); + redraw(); return 1; case FL_MOVE: // moused moved while no button was pressed @@ -291,7 +278,11 @@ selectedModel = false; switch( Fl::event_button() ) { - case 1: + case 1: + clicked_empty_space = ( mod == NULL ); + empty_space_startx = startx; + empty_space_starty = starty; + std::cout << "clicked: " << startx << " " << Fl::event_x() << std::endl; if( mod ) { // clicked a model if ( Fl::event_state( FL_SHIFT ) ) { @@ -314,10 +305,7 @@ selectedModel = true; // selected a model } } - else { - // clicked on empty space, unselect all - unSelectAll(); - } + return 1; case 3: { @@ -377,7 +365,10 @@ } // end case FL_DRAG case FL_RELEASE: // mouse button released - + if( empty_space_startx == Fl::event_x() && empty_space_starty == Fl::event_y() && clicked_empty_space == true ) { + // clicked on empty space, unselect all + unSelectAll(); + } return 1; case FL_FOCUS: Modified: code/stage/trunk/libstage/stage.hh =================================================================== --- code/stage/trunk/libstage/stage.hh 2008-07-04 23:45:09 UTC (rev 6767) +++ code/stage/trunk/libstage/stage.hh 2008-07-05 00:10:12 UTC (rev 6768) @@ -1929,6 +1929,8 @@ int startx, starty; bool selectedModel; + bool clicked_empty_space; + int empty_space_startx, empty_space_starty; GList* selected_models; ///< a list of models that are currently ///selected by the user StgModel* last_selection; ///< the most recently selected model This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 _______________________________________________ Playerstage-commit mailing list Playerstage-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/playerstage-commit