#ifndef WX_PRECOMP
#include "wx/settings.h"
#include "wx/window.h"
+ #include "wx/frame.h"
+ #include "wx/app.h"
#include "wx/dcclient.h"
#include "wx/dcmemory.h"
#endif
+#include "wx/tooltip.h"
#include "wx/toolbar.h"
bool wxToolBar::m_bInitialized = FALSE;
m_defaultWidth = 16;
m_defaultHeight = 15;
+
+ m_pToolTip = NULL;
} // end of wxToolBar::Init
wxToolBarToolBase* wxToolBar::DoAddTool(
wxToolBar::~wxToolBar()
{
+ if (m_pToolTip)
+ {
+ delete m_pToolTip;
+ m_pToolTip = NULL;
+ }
} // end of wxToolBar::~wxToolBar
bool wxToolBar::Realize()
wxMouseEvent& rEvent
)
{
+ POINTL vPoint;
+ HWND hWnd;
wxCoord vX;
wxCoord vY;
HPOINTER hPtr = ::WinQuerySysPointer(HWND_DESKTOP, SPTR_ARROW, FALSE);
::WinSetPointer(HWND_DESKTOP, hPtr);
+ ::WinQueryPointerPos(HWND_DESKTOP, &vPoint);
+ hWnd = ::WinWindowFromPoint(HWND_DESKTOP, &vPoint, TRUE);
+ if (hWnd != (HWND)GetHwnd())
+ {
+ m_vToolTimer.Stop();
+ return;
+ }
+
rEvent.GetPosition(&vX, &vY);
wxToolBarTool* pTool = (wxToolBarTool *)FindToolForPosition( vX
ReleaseMouse();
}
- m_vToolTimer.Stop();
- m_vToolTimer.Start(3000L, FALSE);
if (!pTool)
{
+ m_vToolTimer.Stop();
if (m_nCurrentTool > -1)
{
if (rEvent.LeftIsDown())
);
m_nCurrentTool = pTool->GetId();
OnMouseEnter(m_nCurrentTool);
+ if (!pTool->GetShortHelp().IsEmpty())
+ {
+ if (m_pToolTip)
+ delete m_pToolTip;
+ m_pToolTip = new wxToolTip(pTool->GetShortHelp());
+ m_vXMouse = (wxCoord)vPoint.x;
+ m_vYMouse = (wxCoord)vPoint.y;
+ m_vToolTimer.Start(1000L, TRUE);
+ }
if (!pTool->IsToggled())
RaiseTool(pTool);
}
wxTimerEvent& rEvent
)
{
- if (rEvent.GetId() == (int)m_ulToolTimer)
+ if (rEvent.GetId() == m_vToolTimer.GetTimerId())
{
- (void)wxMessageBox("wxWindows toolbar timer", "ToolTimer");
+ wxPoint vPos( m_vXMouse
+ ,m_vYMouse
+ );
+
+ m_pToolTip->DisplayToolTipWindow(vPos);
+ m_vToolTimer.Stop();
+ m_vToolExpTimer.Start(4000L, TRUE);
}
- else if (rEvent.GetId() == (int)m_ulToolExpTimer)
+ else if (rEvent.GetId() == m_vToolExpTimer.GetTimerId())
{
- (void)wxMessageBox("wxWindows toolbar timer", "ToolExpTimer");
+ m_pToolTip->HideToolTipWindow();
+ GetParent()->Refresh();
+ m_vToolExpTimer.Stop();
}
} // end of wxToolBar::OnTimer