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
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit