Index: /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/pscharcontrol.cpp =================================================================== --- /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/pscharcontrol.cpp (révision 1769) +++ /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/pscharcontrol.cpp (copie de travail) @@ -527,7 +527,7 @@ // RS: invert mouselook status so the mouselook button can be // used to temporarily switch out of mouselook mode too movement->MouseLook(!movement->MouseLook()); - if (!movement->MouseZoom()) { // KL: No CenterMouse while in MouseZoom mode. + if (!movement->MouseZoom() && movement->MouseLook()) { // KL: No CenterMouse while in MouseZoom mode. charcontrol->CenterMouse(value); } Index: /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/gui/pawsslot.cpp =================================================================== --- /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/gui/pawsslot.cpp (révision 1769) +++ /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/gui/pawsslot.cpp (copie de travail) @@ -86,18 +86,23 @@ psengine->GetMsgHandler()->SendMessage( out.msg ); return true; } - else if ( dragDrop && (!empty || psengine->GetSlotManager()->IsDragging()) ) + else { - // Grab one item if shift key are used. Grab everything in the slot - // if either middle mouse button or ctrl key are used - mgr->Handle( this, modifiers==1, button==2 || modifiers==2 ); + bool grab = psengine->GetMouseBinds()->CheckBind("EntityDragDrop", button, modifiers); + bool grabAll = psengine->GetMouseBinds()->CheckBind("EntityDragDropAll", button, modifiers); + bool grabOne = psengine->GetMouseBinds()->CheckBind("EntityDragDropOne", button, modifiers); + if ( dragDrop && (grab || grabAll || grabOne) && (!empty || psengine->GetSlotManager()->IsDragging()) ) + { + // Grab one item if EntityDragDropOne modifiers key are used. Grab everything in the slot + // if EntityDragDropAll modifiers key are used + mgr->Handle( this, grabOne, grabAll ); return true; - } - else if ( parent ) + }else if ( parent ) return parent->OnButtonPressed(button, modifiers, this); else return pawsWidget::OnMouseDown(button, modifiers, x, y ); } +} void pawsSlot::SetToolTip( const char* text ) { Index: /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/gui/psmainwidget.cpp =================================================================== --- /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/gui/psmainwidget.cpp (révision 1769) +++ /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/gui/psmainwidget.cpp (copie de travail) @@ -354,6 +354,11 @@ { GEMClientObject* over = FindMouseOverObject( x, y ); + const psControl* mouseLookTrigger = psengine->GetCharControl()->GetTrigger("MouseLook"); + if(mouseLookTrigger->button==(uint)button && mouseLookTrigger->mods==(uint)keyModifier){ + psengine->GetCharControl()->GetMovementManager()->MouseLookCanAct(true); + } + if (psengine->GetMouseBinds()->CheckBind("EntitySelect", button, keyModifier)) { if ( over ) Index: /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/psmovement.h =================================================================== --- /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/psmovement.h (révision 1769) +++ /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/psmovement.h (copie de travail) @@ -108,6 +108,7 @@ bool autoMove; bool toggleRun; bool mouseLook; + bool mouseLookCanAct; bool mouseZoom; bool mouseMove; bool sneaking; @@ -172,6 +173,9 @@ bool GetInvertedMouse() { return invertedMouse; } void LoadMouseSettings(); + void MouseLookCanAct(bool v); + bool MouseLookCanAct(){ return mouseLookCanAct; } + void MouseLook(bool v); bool MouseLook() { return mouseLook; } void MouseLook(iEvent& ev); Index: /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/psmovement.cpp =================================================================== --- /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/psmovement.cpp (révision 1769) +++ /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/src/client/psmovement.cpp (copie de travail) @@ -89,6 +89,7 @@ toggleRun = false; mouseAutoMove = false; mouseLook = false; + mouseLookCanAct = false; mouseZoom = false; mouseMove = false; sneaking = false; @@ -599,6 +600,9 @@ SetMouseSensX( v2 ); } +void psMovementManager::MouseLookCanAct(bool v){ + mouseLookCanAct = v; +} void psMovementManager::MouseLook(bool v) { @@ -606,6 +610,9 @@ { return; } + + if(mouseLookCanAct || !v) + { mouseLook = v; psCamera* camera = psengine->GetPSCamera(); if( camera->RotateCameraWithPlayer() ) @@ -620,6 +627,8 @@ } } } + mouseLookCanAct = false; +} void psMovementManager::MouseLook(iEvent& ev) { Index: /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/data/gui/configmouse.xml =================================================================== --- /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/data/gui/configmouse.xml (révision 1769) +++ /home/thierry/Documents/planesShift/head/planeshift-base/planeshift/data/gui/configmouse.xml (copie de travail) @@ -18,7 +18,16 @@ + + + + + + + + +