mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
CtrlCore: Undocumented Cocoa cursors
git-svn-id: svn://ultimatepp.org/upp/trunk@12110 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
eab9dec6b9
commit
93768f36f1
4 changed files with 49 additions and 22 deletions
|
|
@ -217,7 +217,7 @@ Upp::Rect Upp::Ctrl::GetPrimaryWorkArea()
|
|||
for (NSScreen *screen in [NSScreen screens]) {
|
||||
Rect f = MakeRect([screen frame]);
|
||||
Rect v = MakeRect([screen visibleFrame], f.GetHeight());
|
||||
// double scale = [screen backingScaleFactor];
|
||||
// double scale = [screen backingScaleFactor]; // TODO DPI
|
||||
return v;
|
||||
}
|
||||
return Rect(0, 0, 1024, 768);
|
||||
|
|
|
|||
|
|
@ -116,11 +116,11 @@ void Upp::Ctrl::WndDestroy()
|
|||
delete top->coco;
|
||||
delete top;
|
||||
top = NULL;
|
||||
isopen = false;
|
||||
popup = isopen = false;
|
||||
int ii = FindIndex(mmtopctrl, this);
|
||||
if(ii >= 0)
|
||||
mmtopctrl.Remove(ii);
|
||||
if(owner)
|
||||
if(owner && owner->IsOpen())
|
||||
owner->SetWndFocus();
|
||||
}
|
||||
|
||||
|
|
@ -157,6 +157,7 @@ bool Upp::Ctrl::IsWndOpen() const {
|
|||
void Upp::Ctrl::PopUp(Ctrl *owner, bool savebits, bool activate, bool dropshadow, bool topmost)
|
||||
{
|
||||
Create(owner, NSWindowStyleMaskBorderless, false);
|
||||
popup = true;
|
||||
}
|
||||
|
||||
Upp::dword Upp::TopWindow::GetMMStyle() const
|
||||
|
|
|
|||
|
|
@ -108,34 +108,60 @@ Image Image::Cross() FCURSOR_(MM_Cross)
|
|||
Image Image::Hand() FCURSOR_(MM_Hand)
|
||||
|
||||
// TODO: Missing kinds (sizers mostly)
|
||||
// https://stackoverflow.com/questions/10733228/native-osx-lion-resize-cursor-for-custom-nswindow-or-nsview/21786835#21786835
|
||||
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wundeclared-selector"
|
||||
|
||||
#define XCURSOR(id) \
|
||||
if([NSCursor respondsToSelector:@selector(id)]) return [NSCursor performSelector:@selector(id)];
|
||||
|
||||
NSCursor *GetNSCursor(int kind)
|
||||
{
|
||||
switch(kind) {
|
||||
case MM_SizeAll:
|
||||
XCURSOR(_moveCursor);
|
||||
break;
|
||||
case MM_SizeHorz:
|
||||
XCURSOR(_windowResizeEastWestCursor);
|
||||
break;
|
||||
case MM_SizeVert:
|
||||
XCURSOR(_windowResizeNorthSouthCursor);
|
||||
break;
|
||||
case MM_SizeTopLeft:
|
||||
XCURSOR(_windowResizeNorthWestCursor);
|
||||
break;
|
||||
case MM_SizeTop:
|
||||
XCURSOR(_windowResizeNorthCursor);
|
||||
break;
|
||||
case MM_SizeTopRight:
|
||||
XCURSOR(_windowResizeNorthEastCursor);
|
||||
break;
|
||||
case MM_SizeLeft:
|
||||
XCURSOR(_windowResizeWestCursor);
|
||||
break;
|
||||
case MM_SizeRight:
|
||||
XCURSOR(_windowResizeEastCursor);
|
||||
break;
|
||||
case MM_SizeBottomLeft:
|
||||
XCURSOR(_windowResizeSouthWestCursor);
|
||||
break;
|
||||
case MM_SizeBottom:
|
||||
XCURSOR(_windowResizeSouthCursor);
|
||||
break;
|
||||
case MM_SizeBottomRight:
|
||||
XCURSOR(_windowResizeSouthEastCursor);
|
||||
break;
|
||||
case MM_IBeam: return [NSCursor IBeamCursor];
|
||||
case MM_Cross: return [NSCursor crosshairCursor];
|
||||
// case MM_: return [NSCursor closedHandCursor];
|
||||
// case MM_Hand: return [NSCursor openHandCursor];
|
||||
case MM_Hand: return [NSCursor pointingHandCursor];
|
||||
// case MM_: return [NSCursor resizeLeftCursor];
|
||||
// case MM_: return [NSCursor resizeRightCursor];
|
||||
case MM_SizeRight:
|
||||
case MM_SizeLeft: return [NSCursor resizeLeftRightCursor];
|
||||
// case MM_: return [NSCursor resizeUpCursor];
|
||||
// case MM_: return [NSCursor resizeDownCursor];
|
||||
case MM_SizeTop:
|
||||
case MM_SizeBottom:
|
||||
return [NSCursor resizeUpDownCursor];
|
||||
// case MM_: return [NSCursor IBeamCursorForVerticalLayout];.
|
||||
case MM_No:
|
||||
return [NSCursor operationNotAllowedCursor];
|
||||
// case MM_: return [NSCursor dragLinkCursor];.
|
||||
// case MM_: return [NSCursor dragCopyCursor];.
|
||||
// case MM_: return [NSCursor contextualMenuCursor];
|
||||
case MM_Hand: return [NSCursor pointingHandCursor];
|
||||
case MM_No: return [NSCursor operationNotAllowedCursor];
|
||||
}
|
||||
return [NSCursor arrowCursor];
|
||||
}
|
||||
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
void Ctrl::SetMouseCursor(const Image& img)
|
||||
{
|
||||
int64 h = img.GetAuxData();
|
||||
|
|
|
|||
|
|
@ -530,7 +530,7 @@ void MenuBar::PopUp(Ctrl *owner, Point p, Size rsz)
|
|||
if(p.y + sz.cy > r.bottom) {
|
||||
if(p.y - r.top > r.bottom - p.y) {
|
||||
int y0;
|
||||
if (parentmenu && parentmenu->GetActiveSubmenu() && parentmenu->submenuitem)
|
||||
if (parentmenu && parentmenu->GetActiveSubmenu() && parentmenu->submenuitem)
|
||||
y0 = parentmenu->submenuitem->GetScreenRect().BottomRight().y + 2 + rsz.cy;
|
||||
else
|
||||
y0 = p.y + rsz.cy;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue