diff options
| author | Cinder Biscuits <cinder.roxley@phoenixviewer.com> | 2014-04-18 20:06:39 +0000 | 
|---|---|---|
| committer | Cinder Biscuits <cinder.roxley@phoenixviewer.com> | 2014-04-18 20:06:39 +0000 | 
| commit | b533844945a648ab1613a305c072809bbd6d76a8 (patch) | |
| tree | 556adc347c14678752d9f66864bc59c7bfa27268 | |
| parent | 7e966f28da79d2d24f93a2615c8807421300700c (diff) | |
STORM-2023: Restore system color picker on OSX
| -rwxr-xr-x | indra/llwindow/llwindowmacosx.cpp | 33 | 
1 files changed, 29 insertions, 4 deletions
| diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 11c0b51086..832e08d181 100755 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -39,6 +39,7 @@  #include "indra_constants.h"  #include <OpenGL/OpenGL.h> +#include <Carbon/Carbon.h>  #include <CoreServices/CoreServices.h>  extern BOOL gDebugWindowProc; @@ -1743,16 +1744,40 @@ LLSD LLWindowMacOSX::getNativeKeyData()  	return result;  } -  BOOL LLWindowMacOSX::dialogColorPicker( F32 *r, F32 *g, F32 *b)  { -	// Is this even used anywhere?  Do we really need an OS color picker?  	BOOL	retval = FALSE; -	//S32		error = 0; +	OSErr	error = noErr; +	NColorPickerInfo	info; +	 +	memset(&info, 0, sizeof(info)); +	info.theColor.color.rgb.red = (UInt16)(*r * 65535.f); +	info.theColor.color.rgb.green = (UInt16)(*g * 65535.f); +	info.theColor.color.rgb.blue = (UInt16)(*b * 65535.f); +	info.placeWhere = kCenterOnMainScreen; +	 +	if(gWindowImplementation != NULL) +		gWindowImplementation->beforeDialog(); +	 +	error = NPickColor(&info); +	 +	if(gWindowImplementation != NULL) +		gWindowImplementation->afterDialog(); +	 +	if (error == noErr) +	{ +		retval = info.newColorChosen; +		if (info.newColorChosen) +		{ +			*r = ((float) info.theColor.color.rgb.red) / 65535.0; +			*g = ((float) info.theColor.color.rgb.green) / 65535.0; +			*b = ((float) info.theColor.color.rgb.blue) / 65535.0; +		} +	} +  	return (retval);  } -  void *LLWindowMacOSX::getPlatformWindow()  {  	// NOTE: this will be NULL in fullscreen mode.  Plan accordingly. | 
