private: friend struct MMCtrl; friend struct MMImp; static bool local_dnd_copy; static Ptr lastActive; static bool always_use_bundled_icon; static double display_scale; static double display_unscale; friend void CocoInit(int argc, const char **argv, const char **envptr); friend void Coco_PaintCh(void *cgcontext, int type, int value, int state); protected: virtual void MMClose() {} void Create(Ctrl *owner, dword style, bool active); static void SetNSAppImage(const Image& img); static void SyncAppIcon(); static void ResetCocoaMouse(); static void DoCancelPreedit(); static int GetCaretBlinkTime() { return 500; } public: static void EndSession() {} static bool IsEndSession() { return false; } static void SetAlwaysUseBundledIcon(bool enable = true) { always_use_bundled_icon = enable; } static bool IsAlwaysUseBundledIcon() { return always_use_bundled_icon; } void *GetNSWindow() const; void *GetNSView() const; bool IsCocoActive() const; void RegisterCocoaDropFormats(); static Rect GetScreenArea(Point pt); static double GetDisplayScale() { return display_scale; } static double GetDisplayUnScale() { return display_unscale; } static int SCL(int x) { return (int)(display_scale * x); }