6#include <QtCore/qdebug.h>
7#include <QtCore/qtimer.h>
8#include <qpa/qplatformtheme.h>
13#include "private/qcoregraphics_p.h"
27 NSColorPanel *mColorPanel;
41 mColorPanel = [NSColorPanel sharedColorPanel];
50 [mColorPanel setRestorable:NO];
52 [[NSNotificationCenter defaultCenter] addObserver:self
53 selector:@selector(colorChanged:)
54 name:NSColorPanelColorDidChangeNotification
57 [[NSNotificationCenter defaultCenter] addObserver:self
58 selector:@selector(windowWillClose:)
59 name:NSWindowWillCloseNotification
68 [mStolenContentView release];
69 [mColorPanel setDelegate:nil];
70 [[NSNotificationCenter defaultCenter] removeObserver:self];
79 if (
mHelper->
options()->testOption(QColorDialogOptions::NoButtons)) {
80 [
self restoreOriginalContentView];
84 [mStolenContentView retain];
85 mColorPanel.contentView = nil;
89 [mPanelButtons addSubview:mStolenContentView];
103 [
self updateQtColor];
106- (
void)windowWillClose:(NSNotification *)notification
115- (
void)restoreOriginalContentView
119 [mStolenContentView removeFromSuperview];
120 [mColorPanel setContentView:mStolenContentView];
121 [mStolenContentView release];
123 [mPanelButtons release];
132 [
self updateQtColor];
133 [
self finishOffWithCode:NSModalResponseOK];
136- (
void)onCancelClicked
142 [
self finishOffWithCode:NSModalResponseCancel];
153 NSColor *componentColor = [[mColorPanel color] colorUsingType:NSColorTypeComponentBased];
154 switch (componentColor.colorSpace.colorSpaceModel)
156 case NSColorSpaceModelGray: {
158 [componentColor getWhite:&white alpha:&alpha];
161 case NSColorSpaceModelRGB: {
163 [componentColor getRed:&red green:&green blue:&blue alpha:&alpha];
166 case NSColorSpaceModelCMYK: {
168 [componentColor getCyan:&cyan magenta:&magenta yellow:&yellow black:&black alpha:&alpha];
172 qWarning(
"QNSColorPanelDelegate: Unsupported color space model");
180- (
void)showModelessPanel
193 dispatch_async(dispatch_get_main_queue(), ^{
194 [mColorPanel makeKeyAndOrderFront:mColorPanel];
198- (BOOL)runApplicationModalPanel
201 [mColorPanel setDelegate:self];
202 [mColorPanel setContinuous:YES];
211 [NSApp runModalForWindow:mColorPanel];
226- (BOOL)windowShouldClose:(
id)window
230 [
self updateQtColor];
232 [
self finishOffWithCode:NSModalResponseCancel];
250 [NSApp stopModalWithCode:code];
291 if (mDelegate->mHelper == helper)
292 mDelegate->mHelper =
nullptr;
301 return [
mDelegate runApplicationModalPanel];
320 return mDelegate->mQtColor;
327 if (
color.alpha() < 255)
328 [
mDelegate->mColorPanel setShowsAlpha:YES];
333 nsColor = [NSColor colorWithDeviceCyan:color.cyanF()
334 magenta:color.magentaF()
335 yellow:color.yellowF()
337 alpha:color.alphaF()];
339 nsColor = [NSColor colorWithCalibratedRed:color.redF()
342 alpha:color.alphaF()];
344 mDelegate->mQtColor =
color;
345 [
mDelegate->mColorPanel setColor:nsColor];
360 sharedColorPanel()->cleanup(
this);
365 if (sharedColorPanel()->
exec())
379 [[NSColorPanel sharedColorPanel] setShowsAlpha:
380 options()->testOption(QColorDialogOptions::ShowAlphaChannel)];
382 sharedColorPanel()->init(
this);
383 return sharedColorPanel()->show(windowModality,
parent);
388 sharedColorPanel()->hide();
393 sharedColorPanel()->init(
this);
394 sharedColorPanel()->setCurrentColor(
color);
399 return sharedColorPanel()->currentColor();
void restoreOriginalContentView()
virtual void wakeUp()=0
\threadsafe
bool show(Qt::WindowFlags windowFlags, Qt::WindowModality windowModality, QWindow *parent) override
~QCocoaColorDialogHelper()
void setCurrentColor(const QColor &) override
QColor currentColor() const override
QColor currentColor() const
void cleanup(QCocoaColorDialogHelper *helper)
void init(QCocoaColorDialogHelper *helper)
bool show(Qt::WindowModality windowModality, QWindow *parent)
void setCurrentColor(const QColor &color)
static void clearCurrentThreadCocoaEventDispatcherInterruptFlag()
The QColor class provides colors based on RGB, HSV or CMYK values.
Spec
The type of color specified, either RGB, extended RGB, HSV, CMYK or HSL.
void setRgbF(float r, float g, float b, float a=1.0)
Sets the color channels of this color to r (red), g (green), b (blue) and a (alpha,...
void setCmykF(float c, float m, float y, float k, float a=1.0)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static QAbstractEventDispatcher * eventDispatcher()
Returns a pointer to the event dispatcher object for the main thread.
QObject * parent() const
Returns a pointer to the parent object.
Combined button and popup list for selecting options.
BOOL mClosingDueToKnownButton
QNSPanelContentsWrapper * mPanelButtons
QCocoaColorDialogHelper * mHelper
NSView * mStolenContentView
#define QT_NAMESPACE_ALIAS_OBJC_CLASS(__KLASS__)
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
#define Q_GLOBAL_STATIC(TYPE, NAME,...)
GLfloat GLfloat GLfloat alpha
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent