X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ea8a96991a3948502eda1c4cd685ee7d8b841a30..86f8d1a8bbb08c7e74bb2819d5380ec6d40b73a5:/src/generic/colrdlgg.cpp diff --git a/src/generic/colrdlgg.cpp b/src/generic/colrdlgg.cpp index bc7ea6f7eb..cfa539241f 100644 --- a/src/generic/colrdlgg.cpp +++ b/src/generic/colrdlgg.cpp @@ -5,11 +5,11 @@ // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "colrdlgg.h" #endif @@ -58,61 +58,64 @@ END_EVENT_TABLE() * Generic wxColourDialog */ -#define NUM_COLS 48 -static wxString wxColourDialogNames[NUM_COLS]={wxT("ORANGE"), - wxT("GOLDENROD"), - wxT("WHEAT"), - wxT("SPRING GREEN"), - wxT("SKY BLUE"), - wxT("SLATE BLUE"), - wxT("MEDIUM VIOLET RED"), - wxT("PURPLE"), - - wxT("RED"), - wxT("YELLOW"), - wxT("MEDIUM SPRING GREEN"), - wxT("PALE GREEN"), - wxT("CYAN"), - wxT("LIGHT STEEL BLUE"), - wxT("ORCHID"), - wxT("LIGHT MAGENTA"), - - wxT("BROWN"), - wxT("YELLOW"), - wxT("GREEN"), - wxT("CADET BLUE"), - wxT("MEDIUM BLUE"), - wxT("MAGENTA"), - wxT("MAROON"), - wxT("ORANGE RED"), - - wxT("FIREBRICK"), - wxT("CORAL"), - wxT("FOREST GREEN"), - wxT("AQUAMARINE"), - wxT("BLUE"), - wxT("NAVY"), - wxT("THISTLE"), - wxT("MEDIUM VIOLET RED"), - - wxT("INDIAN RED"), - wxT("GOLD"), - wxT("MEDIUM SEA GREEN"), - wxT("MEDIUM BLUE"), - wxT("MIDNIGHT BLUE"), - wxT("GREY"), - wxT("PURPLE"), - wxT("KHAKI"), - - wxT("BLACK"), - wxT("MEDIUM FOREST GREEN"), - wxT("KHAKI"), - wxT("DARK GREY"), - wxT("SEA GREEN"), - wxT("LIGHT GREY"), - wxT("MEDIUM SLATE BLUE"), - wxT("WHITE") - }; +// don't change the number of elements (48) in this array, the code below is +// hardcoded to use it +static const wxChar *wxColourDialogNames[] = +{ + wxT("ORANGE"), + wxT("GOLDENROD"), + wxT("WHEAT"), + wxT("SPRING GREEN"), + wxT("SKY BLUE"), + wxT("SLATE BLUE"), + wxT("MEDIUM VIOLET RED"), + wxT("PURPLE"), + + wxT("RED"), + wxT("YELLOW"), + wxT("MEDIUM SPRING GREEN"), + wxT("PALE GREEN"), + wxT("CYAN"), + wxT("LIGHT STEEL BLUE"), + wxT("ORCHID"), + wxT("LIGHT MAGENTA"), + + wxT("BROWN"), + wxT("YELLOW"), + wxT("GREEN"), + wxT("CADET BLUE"), + wxT("MEDIUM BLUE"), + wxT("MAGENTA"), + wxT("MAROON"), + wxT("ORANGE RED"), + + wxT("FIREBRICK"), + wxT("CORAL"), + wxT("FOREST GREEN"), + wxT("AQUAMARINE"), + wxT("BLUE"), + wxT("NAVY"), + wxT("THISTLE"), + wxT("MEDIUM VIOLET RED"), + + wxT("INDIAN RED"), + wxT("GOLD"), + wxT("MEDIUM SEA GREEN"), + wxT("MEDIUM BLUE"), + wxT("MIDNIGHT BLUE"), + wxT("GREY"), + wxT("PURPLE"), + wxT("KHAKI"), + + wxT("BLACK"), + wxT("MEDIUM FOREST GREEN"), + wxT("KHAKI"), + wxT("DARK GREY"), + wxT("SEA GREEN"), + wxT("LIGHT GREY"), + wxT("MEDIUM SLATE BLUE"), + wxT("WHITE") +}; wxGenericColourDialog::wxGenericColourDialog() { @@ -141,8 +144,7 @@ void wxGenericColourDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) bool wxGenericColourDialog::Create(wxWindow *parent, wxColourData *data) { if ( !wxDialog::Create(parent, -1, wxT("Colour"), - wxPoint(0, 0), wxSize(900, 900), - wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL) ) + wxPoint(0, 0), wxSize(900, 900)) ) return FALSE; dialogParent = parent; @@ -171,6 +173,13 @@ void wxGenericColourDialog::OnMouseEvent(wxMouseEvent& event) int x = (int)event.GetX(); int y = (int)event.GetY(); +#ifdef __WXPM__ + // Handle OS/2's reverse coordinate system and account for the dialog title + int nClientHeight; + + GetClientSize(NULL, &nClientHeight); + y = (nClientHeight - y) + 20; +#endif if ((x >= standardColoursRect.x && x <= (standardColoursRect.x + standardColoursRect.width)) && (y >= standardColoursRect.y && y <= (standardColoursRect.y + standardColoursRect.height))) { @@ -196,7 +205,7 @@ void wxGenericColourDialog::OnMouseEvent(wxMouseEvent& event) void wxGenericColourDialog::OnPaint(wxPaintEvent& event) { -#if !defined(__WXMOTIF__) && !defined(__WXMAC__) && !defined(__WXPM__) +#if !defined(__WXMOTIF__) && !defined(__WXMAC__) && !defined(__WXPM__) && !defined(__WXCOCOA__) wxDialog::OnPaint(event); #endif @@ -219,7 +228,11 @@ void wxGenericColourDialog::CalculateMeasurements() sectionSpacing = 15; standardColoursRect.x = 10; +#ifdef __WXPM__ + standardColoursRect.y = 15 + 20; /* OS/2 needs to account for dialog titlebar */ +#else standardColoursRect.y = 15; +#endif standardColoursRect.width = (8*smallRectangleSize.x) + (7*gridSpacing); standardColoursRect.height = (6*smallRectangleSize.y) + (5*gridSpacing); @@ -286,18 +299,18 @@ void wxGenericColourDialog::CreateWidgets() void wxGenericColourDialog::InitializeColours(void) { - int i; + size_t i; - for (i = 0; i < 48; i++) + for (i = 0; i < WXSIZEOF(wxColourDialogNames); i++) { - wxColour *col = wxTheColourDatabase->FindColour(wxColourDialogNames[i]); - if (col) - standardColours[i].Set(col->Red(), col->Green(), col->Blue()); + wxColour col = wxTheColourDatabase->Find(wxColourDialogNames[i]); + if (col.Ok()) + standardColours[i].Set(col.Red(), col.Green(), col.Blue()); else standardColours[i].Set(0, 0, 0); } - for (i = 0; i < 16; i++) + for (i = 0; i < WXSIZEOF(customColours); i++) { customColours[i] = colourData.GetCustomColour(i); } @@ -307,7 +320,7 @@ void wxGenericColourDialog::InitializeColours(void) { bool initColourFound = FALSE; - for (i = 0; i < 48; i++) + for (i = 0; i < WXSIZEOF(wxColourDialogNames); i++) { if ( standardColours[i] == curr && !initColourFound ) { @@ -319,13 +332,12 @@ void wxGenericColourDialog::InitializeColours(void) } if ( !initColourFound ) { - for ( i = 0; i < 16; i++ ) + for ( i = 0; i < WXSIZEOF(customColours); i++ ) { if ( customColours[i] == curr ) { whichKind = 2; colourSelection = i; - initColourFound = TRUE; break; } }