X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/d50c2df3a49fc88945948331821b4eb09e2919f8..08a58231abed9e9ae14f0bbfd68a588ba327bdd5:/mac/macctrls.c diff --git a/mac/macctrls.c b/mac/macctrls.c index 16c6ee11..b4e3c7d0 100644 --- a/mac/macctrls.c +++ b/mac/macctrls.c @@ -1,4 +1,4 @@ -/* $Id: macctrls.c,v 1.33 2003/04/13 14:37:07 ben Exp $ */ +/* $Id: macctrls.c,v 1.38 2003/04/14 23:28:58 ben Exp $ */ /* * Copyright (c) 2003 Ben Harris * All rights reserved. @@ -27,6 +27,7 @@ #include #include +#include #include #include #include @@ -259,7 +260,7 @@ void macctrl_layoutbox(struct controlbox *cb, WindowPtr window, curstate.width = 160; panellist.listbox.type = CTRL_LISTBOX; panellist.listbox.handler = &panellist_handler; - panellist.listbox.height = 15; + panellist.listbox.height = 20; panellist.listbox.percentwidth = 100; macctrl_listbox(mcs, window, &curstate, &panellist); @@ -623,6 +624,7 @@ static pascal SInt32 macctrl_sys7_editbox_cdef(SInt16 variant, FrameRect(&rect); InsetRect(&rect, 3, 3); } + EraseRect(&rect); (*(TEHandle)(*control)->contrlData)->viewRect = rect; TEUpdate(&rect, (TEHandle)(*control)->contrlData); } @@ -869,7 +871,7 @@ static void macctrl_listbox(struct macctrls *mcs, WindowPtr window, bounds.left = curstate->pos.h; bounds.right = bounds.left + curstate->width; bounds.top = curstate->pos.v; - bounds.bottom = bounds.top + 20 * ctrl->listbox.height; + bounds.bottom = bounds.top + 16 * ctrl->listbox.height + 2; if (mac_gestalts.apprvers >= 0x100) { InsetRect(&bounds, 3, 3); @@ -903,7 +905,7 @@ static void macctrl_listbox(struct macctrls *mcs, WindowPtr window, #endif } add234(mcs->byctrl, mc); - curstate->pos.v += 6 + 20 * ctrl->listbox.height; + curstate->pos.v += 6 + 16 * ctrl->listbox.height + 2; mc->generic.next = mcs->panels[curstate->panelnum]; mcs->panels[curstate->panelnum] = mc; ctrlevent(mcs, mc, EVENT_REFRESH); @@ -1264,7 +1266,14 @@ void macctrl_key(WindowPtr window, EventRecord *event) HandleControlKey(control, (event->message & keyCodeMask) >> 8, event->message & charCodeMask, event->modifiers); mc = (union macctrl *)GetControlReference(control); - ctrlevent(mcs, mc, EVENT_VALCHANGE); + switch (mc->generic.type) { + case MACCTRL_LISTBOX: + ctrlevent(mcs, mc, EVENT_SELCHANGE); + break; + default: + ctrlevent(mcs, mc, EVENT_VALCHANGE); + break; + } } } #if !TARGET_API_MAC_CARBON @@ -1939,14 +1948,34 @@ void printer_finish_enum(printer_enum *pe) void dlg_coloursel_start(union control *ctrl, void *dlg, int r, int g, int b) { + struct macctrls *mcs = dlg; + union macctrl *mc = findbyctrl(mcs, ctrl); + Point where = {-1, -1}; /* Screen with greatest colour depth */ + RGBColor incolour; + if (HAVE_COLOR_QD()) { + incolour.red = r * 0x0101; + incolour.green = g * 0x0101; + incolour.blue = b * 0x0101; + mcs->gotcolour = GetColor(where, "\pModify Colour:", &incolour, + &mcs->thecolour); + ctrlevent(mcs, mc, EVENT_CALLBACK); + } else + dlg_beep(dlg); } int dlg_coloursel_results(union control *ctrl, void *dlg, int *r, int *g, int *b) { + struct macctrls *mcs = dlg; - return 0; + if (mcs->gotcolour) { + *r = mcs->thecolour.red >> 8; + *g = mcs->thecolour.green >> 8; + *b = mcs->thecolour.blue >> 8; + return 1; + } else + return 0; } /*