diff --git a/uppsrc/CtrlCore/Coco.h b/uppsrc/CtrlCore/Coco.h index 0de96d579..4dd8ccaf6 100644 --- a/uppsrc/CtrlCore/Coco.h +++ b/uppsrc/CtrlCore/Coco.h @@ -95,9 +95,9 @@ class ImageDraw : public SystemDraw { public: Draw& Alpha(); - operator Image(); + operator Image() const; - Image GetStraight(); + Image GetStraight() const; ImageDraw(Size sz); ImageDraw(int cx, int cy); diff --git a/uppsrc/CtrlCore/CocoImage.mm b/uppsrc/CtrlCore/CocoImage.mm index 880b4b657..2bc4abe31 100644 --- a/uppsrc/CtrlCore/CocoImage.mm +++ b/uppsrc/CtrlCore/CocoImage.mm @@ -331,26 +331,30 @@ ImageDraw::~ImageDraw() handle = NULL; // avoid releasing invalid handle in ~SystemDraw } -Image ImageDraw::GetStraight() +Image ImageDraw::GetStraight() const { + ImageBuffer ib2(ib.GetSize()); + memcpy_t(~ib2, ~ib, ib.GetLength()); if(alpha) { - RGBA *e = ib.End(); - RGBA *t = ib; - RGBA *s = alpha->ib; + RGBA *e = ib2.End(); + RGBA *t = ib2; + const RGBA *s = alpha->ib; while(t < e) { t->a = s->r; s++; t++; } } - return Image(ib); + return Image(ib2); } -ImageDraw::operator Image() +ImageDraw::operator Image() const { if(alpha) return Premultiply(GetStraight()); - return Image(ib); + ImageBuffer ib2(ib.GetSize()); + memcpy_t(~ib2, ~ib, ib.GetLength()); + return Image(ib2); } Image GetIconForFile(const char *path) diff --git a/uppsrc/CtrlCore/CocoProc.mm b/uppsrc/CtrlCore/CocoProc.mm index 4e394e36c..326ae8185 100644 --- a/uppsrc/CtrlCore/CocoProc.mm +++ b/uppsrc/CtrlCore/CocoProc.mm @@ -4,7 +4,7 @@ NSEvent *sCurrentMouseEvent__; // needed for drag operation -#define LLOG(x) // DLOG(x) +#define LLOG(x) DLOG(x) static Upp::Point coco_mouse_pos; static bool coco_mouse_left; diff --git a/uppsrc/CtrlCore/CtrlMouse.cpp b/uppsrc/CtrlCore/CtrlMouse.cpp index ee506678b..2b40779b0 100644 --- a/uppsrc/CtrlCore/CtrlMouse.cpp +++ b/uppsrc/CtrlCore/CtrlMouse.cpp @@ -2,7 +2,7 @@ namespace Upp { -#define LLOG(x) // DLOG(x) +#define LLOG(x) DLOG(x) Ptr Ctrl::eventCtrl; Ptr Ctrl::mouseCtrl; diff --git a/uppsrc/CtrlLib/ArrayCtrl.cpp b/uppsrc/CtrlLib/ArrayCtrl.cpp index 79025139d..f21be8b33 100644 --- a/uppsrc/CtrlLib/ArrayCtrl.cpp +++ b/uppsrc/CtrlLib/ArrayCtrl.cpp @@ -1682,6 +1682,7 @@ void ArrayCtrl::ClickSel(dword flags) void ArrayCtrl::LeftDown(Point p, dword flags) { + DLOG("ArrayCtrl " << p); if(IsReadOnly()) return; int q = header.GetSplit(p.x); if(q >= 0) { diff --git a/uppsrc/CtrlLib/DisplayPopup.cpp b/uppsrc/CtrlLib/DisplayPopup.cpp index abba54cf5..6ea501cb1 100644 --- a/uppsrc/CtrlLib/DisplayPopup.cpp +++ b/uppsrc/CtrlLib/DisplayPopup.cpp @@ -9,6 +9,9 @@ Point DisplayPopup::Op(Point p) void DisplayPopup::LeftDown(Point p, dword flags) { + DDUMP(p); + DDUMP(Op(p)); + DDUMP(Upp::Name(ctrl)); ctrl->LeftDown(Op(p), flags); }