show the resize cursor when the mouse is above the grip and not only when it's just on it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14310 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1337,7 +1337,7 @@ wxColour wxWin32ColourScheme::Get(wxWin32ColourScheme::StdColour col) const
|
|||||||
case TITLEBAR_ACTIVE: return wxColour(GetSysColor(COLOR_ACTIVECAPTION));
|
case TITLEBAR_ACTIVE: return wxColour(GetSysColor(COLOR_ACTIVECAPTION));
|
||||||
case TITLEBAR_TEXT: return wxColour(GetSysColor(COLOR_INACTIVECAPTIONTEXT));
|
case TITLEBAR_TEXT: return wxColour(GetSysColor(COLOR_INACTIVECAPTIONTEXT));
|
||||||
case TITLEBAR_ACTIVE_TEXT: return wxColour(GetSysColor(COLOR_CAPTIONTEXT));
|
case TITLEBAR_ACTIVE_TEXT: return wxColour(GetSysColor(COLOR_CAPTIONTEXT));
|
||||||
|
|
||||||
case DESKTOP: return wxColour(0x808000);
|
case DESKTOP: return wxColour(0x808000);
|
||||||
#else // !__WXMSW__
|
#else // !__WXMSW__
|
||||||
// use the standard Windows colours elsewhere
|
// use the standard Windows colours elsewhere
|
||||||
@@ -3466,7 +3466,7 @@ void wxWin32Renderer::DrawFrameTitle(wxDC& dc,
|
|||||||
|
|
||||||
dc.SetFont(m_titlebarFont);
|
dc.SetFont(m_titlebarFont);
|
||||||
dc.SetTextForeground(col);
|
dc.SetTextForeground(col);
|
||||||
|
|
||||||
wxCoord textW;
|
wxCoord textW;
|
||||||
dc.GetTextExtent(title, &textW, NULL);
|
dc.GetTextExtent(title, &textW, NULL);
|
||||||
if ( textW > r.width )
|
if ( textW > r.width )
|
||||||
@@ -3493,11 +3493,11 @@ void wxWin32Renderer::DrawFrameTitle(wxDC& dc,
|
|||||||
s << title[i];
|
s << title[i];
|
||||||
}
|
}
|
||||||
s << wxT("...");
|
s << wxT("...");
|
||||||
dc.DrawLabel(s, wxNullBitmap, r,
|
dc.DrawLabel(s, wxNullBitmap, r,
|
||||||
wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
|
wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
dc.DrawLabel(title, wxNullBitmap, r,
|
dc.DrawLabel(title, wxNullBitmap, r,
|
||||||
wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
|
wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3935,7 +3935,7 @@ bool wxWin32InputHandler::HandleMouse(wxInputConsumer *control,
|
|||||||
if ( event.ButtonDown() )
|
if ( event.ButtonDown() )
|
||||||
{
|
{
|
||||||
wxWindow *win = control->GetInputWindow();
|
wxWindow *win = control->GetInputWindow();
|
||||||
|
|
||||||
if ( wxWindow::FindFocus() != control->GetInputWindow() )
|
if ( wxWindow::FindFocus() != control->GetInputWindow() )
|
||||||
{
|
{
|
||||||
win->SetFocus();
|
win->SetFocus();
|
||||||
@@ -4205,16 +4205,28 @@ wxWin32StatusBarInputHandler(wxInputHandler *handler)
|
|||||||
bool wxWin32StatusBarInputHandler::IsOnGrip(wxWindow *statbar,
|
bool wxWin32StatusBarInputHandler::IsOnGrip(wxWindow *statbar,
|
||||||
const wxPoint& pt) const
|
const wxPoint& pt) const
|
||||||
{
|
{
|
||||||
wxTopLevelWindow *parentTLW = wxDynamicCast(statbar->GetParent(), wxTopLevelWindow);
|
|
||||||
|
|
||||||
if ( statbar->HasFlag(wxST_SIZEGRIP) &&
|
if ( statbar->HasFlag(wxST_SIZEGRIP) &&
|
||||||
statbar->GetParent()->HasFlag(wxRESIZE_BORDER) &&
|
statbar->GetParent()->HasFlag(wxRESIZE_BORDER) )
|
||||||
parentTLW && !parentTLW->IsMaximized() )
|
|
||||||
{
|
{
|
||||||
wxSize sizeSbar = statbar->GetSize();
|
wxTopLevelWindow *
|
||||||
|
parentTLW = wxDynamicCast(statbar->GetParent(), wxTopLevelWindow);
|
||||||
|
|
||||||
return (sizeSbar.x - pt.x) < (wxCoord)STATUSBAR_GRIP_SIZE &&
|
wxCHECK_MSG( parentTLW, FALSE,
|
||||||
(sizeSbar.y - pt.y) < (wxCoord)STATUSBAR_GRIP_SIZE;
|
_T("the status bar should be a child of a TLW") );
|
||||||
|
|
||||||
|
// a maximized window can't be resized anyhow
|
||||||
|
if ( !parentTLW->IsMaximized() )
|
||||||
|
{
|
||||||
|
// VZ: I think that the standard Windows behaviour is to only
|
||||||
|
// show the resizing cursor when the mouse is on top of the
|
||||||
|
// grip itself but apparently different Windows versions behave
|
||||||
|
// differently (?) and it seems a better UI to allow resizing
|
||||||
|
// the status bar even when the mouse is above the grip
|
||||||
|
wxSize sizeSbar = statbar->GetSize();
|
||||||
|
|
||||||
|
int diff = sizeSbar.x - pt.x;
|
||||||
|
return diff >= 0 && diff < (wxCoord)STATUSBAR_GRIP_SIZE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -4281,17 +4293,16 @@ bool wxWin32FrameInputHandler::HandleMouse(wxInputConsumer *consumer,
|
|||||||
{
|
{
|
||||||
if ( event.LeftDClick() )
|
if ( event.LeftDClick() )
|
||||||
{
|
{
|
||||||
wxTopLevelWindow *tlw =
|
wxTopLevelWindow *tlw =
|
||||||
wxStaticCast(consumer->GetInputWindow(), wxTopLevelWindow);
|
wxStaticCast(consumer->GetInputWindow(), wxTopLevelWindow);
|
||||||
|
|
||||||
long hit = tlw->HitTest(event.GetPosition());
|
long hit = tlw->HitTest(event.GetPosition());
|
||||||
|
|
||||||
if ( hit == wxHT_TOPLEVEL_TITLEBAR )
|
if ( hit == wxHT_TOPLEVEL_TITLEBAR )
|
||||||
{
|
{
|
||||||
tlw->PerformAction(wxACTION_TOPLEVEL_BUTTON_CLICK,
|
tlw->PerformAction(wxACTION_TOPLEVEL_BUTTON_CLICK,
|
||||||
tlw->IsMaximized() ?
|
tlw->IsMaximized() ? wxTOPLEVEL_BUTTON_RESTORE
|
||||||
wxTOPLEVEL_BUTTON_RESTORE :
|
: wxTOPLEVEL_BUTTON_MAXIMIZE);
|
||||||
wxTOPLEVEL_BUTTON_MAXIMIZE);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user