Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS Tech Support » how to improve docking edge behavior Collapse All
Subject Author Date
Mark Walsen Jun 20, 2006 - 12:03 PM

My users are having difficulty docking control bars to the edges of the app’s window. They drag the control bar to the edge of the window where it seems like it should then naturally snap to the window edge, but that doesn’t happen-- the control bar still floats. Of course, the issue here is that the user is not dragging the mouse point to the edge of the app’s window.

The user doesn’t it see it the way the programmer does. The programmer is just hit-detecting the mouse position, waiting until the mouse cursor coordinates hits the window edge. The user’s perspective is different, something like this: When the _middle of the control bar_ hits the window edge, then it should snap. It doesn’t matter where the mouse cursor happens to be. The user is looking at the control bar being dragged, not at the mouse cursor.

Is there an option to have the docking behavior work like these users expect it should?

Cheers
-- Mark

Technical Support Jun 21, 2006 - 5:12 AM

All the control bars (toolbars and resizable bars) in Prof-UIS are using approximately the same areas near window edges for detecting target dockable positions like in Microsoft applications. Please let us know which type of control bar is difficult to dock for your users? Is there a similar control bar in Prof-UIS sample applications?

Mark Walsen Jun 21, 2006 - 3:43 PM

I see the same behavior in MS Word 2003 and don’t like the behavior there either. Many users must have the problem I have, and my users are reporting, dragging control bars from one place to another. I think the usability problem is easy to analyze. I suppose MS defines the (sometimes poor) standards, though. Nevertheless, I might customize this part of ProfUIS. It shouldn’t be hard for me to offset the mouse hit detection according to what its location was at the beginning of the drag, relative to the center of the control bar it is moving.

Cheers
-- Mark

Technical Support Jun 22, 2006 - 11:28 AM

The ExtControlBar.cpp file contains the CExtControlBar::InternalDraggingState_t::CalcStateDynamic() method with the following internal static variables for controlling drag-and-drop margins of control bars:

// reasonable dockbar parts
static const INT nRdpOuter = 16;
static const INT nRdpInner = nRdpOuter*2;
static const INT nRdpMostInner = 12;
// reasonable controlbar part
static const INT nRcpAnyHalfMin = 8;
This file also contains the InternalDraggingState_t::_DoFixed_BasicAdjustment() method with the following internal static variables for controlling drag-and-drop margins of toolbars:
const int nRdpExtraInnerDx = 12;
const int nRdpExtraInnerDy = 12;
const int nRdpExtraOuterDx = ::MulDiv( nRdpExtraInnerDx, 3, 2 );
const int nRdpExtraOuterDy = ::MulDiv( nRdpExtraInnerDy, 3, 2 );
We can make all these variables global and public. But at least now you can play with these values and let us know your point of view.