/* control processing procedure for TextEdit */ short NATEctrlp(na_win *winp, Point p, short part, short mods, ControlHandle ctrl) #ifndef THINK_C #pragma unused (mods) #endif { short value; if (part) { value = GetCtlValue(ctrl); switch (part) { case inThumb: part = TrackControl(ctrl, p, (ProcPtr) NULL); if (part && (value -= GetCtlValue(ctrl))) { TEHandle hTE = teinfo->hTE; if (ctrl == teinfo->vctrl) { TEScroll(0, value * teinfo->lheight, hTE); } else if (ctrl == teinfo->hctrl) { TEScroll(value, 0, hTE); } } break; default: (void) TrackControl(ctrl, p, (ProcPtr) (ctrl == teinfo->vctrl ? vscroll : hscroll)); break; } } return (NA_PROCESSED); }
void shellscroll (boolean flvert, hdlscrollbar sb, short part, Point pt) { // register WindowPtr w = shellwindow; register long oldscrollbarcurrent; #if TARGET_API_MAC_CARBON != 1 register long ctscroll; tydirection dir; #endif //pushclip ((*w).portRect); /*allow drawing in whole window%/ if (part == kControlIndicatorPart) { oldscrollbarcurrent = getscrollbarcurrent (sb); #if TARGET_API_MAC_CARBON == 1 gControl = sb; flverticalscroll = flvert; gStartValue = oldscrollbarcurrent; BeginThumbTracking (sb); TrackControl (sb, pt, (ControlActionUPP) shelllivescrollupp); EndThumbTracking (); #else TrackControl (sb, pt, nil); ctscroll = getscrollbarcurrent (sb) - oldscrollbarcurrent; dir = scrolldirection (flvert, ctscroll > 0); (*shellglobals.scrollroutine) (dir, false, abs (ctscroll)); #endif } else { if (flvert) TrackControl (sb, pt, shellvertscrollUPP); else TrackControl (sb, pt, shellhorizscrollUPP); } /* popclip (); */ } /*shellscroll*/
void doInContent(EventRecord *eventStrucPtr,WindowRef windowRef) { ControlPartCode controlPartCode; ControlRef controlRef; SetPortWindowPort(windowRef); GlobalToLocal(&eventStrucPtr->where); if(controlRef = FindControlUnderMouse(eventStrucPtr->where,windowRef,&controlPartCode)) { #if TARGET_API_MAC_CARBON TrackControl(controlRef,eventStrucPtr->where,(ControlActionUPP) -1); #else if (controlPartCode == kControlIndicatorPart) TrackControl(controlRef,eventStrucPtr->where,NULL); else TrackControl(controlRef,eventStrucPtr->where,gActionFunctionScrollUPP); #endif window_invalidate(windowRef); } }
Boolean TActiveScroller::HandleMouseClick(Point inPoint) { #if TARGET_API_MAC_CARBON==1 UPortSaver safe(GetControlOwner(scrollBar)); #else UPortSaver safe((**scrollBar).contrlOwner); #endif short partCode; if (partCode=TestControl(scrollBar,inPoint)) { switch (partCode) { case kControlUpButtonPart: case kControlDownButtonPart: case kControlPageDownPart: case kControlPageUpPart: case kControlIndicatorPart: SetupScroll(); if (partCode==kControlIndicatorPart) { // Dim the thumb HiliteControl(scrollBar,kControlIndicatorPart); IndicatorProc(inPoint); // Undim the thumb HiliteControl(scrollBar,kControlNoPart); } else { // Must call this to pass the current object to the tracking proc SetTrackingObject(this); TrackControl(scrollBar,inPoint,scrollBarProcUPP); } ShutdownScroll(); return true; break; } } return false; // missed the scroll bar }
void InAdditionsContent(EventRecord* evt, WindowPtr wCurrPtr) { Point localPt; Rect r, currCellRect, checkbox; ControlPartCode part; int i; Cell currCell; UInt8 hiliteVal; PixPatHandle ppH; GrafPtr oldPort; GetPort(&oldPort); SetPort(wCurrPtr); localPt = evt->where; GlobalToLocal( &localPt); /* Mouse Up */ /* scroll */ SetRect(&r, gControls->aw->compListBox.right, gControls->aw->compListBox.top, gControls->aw->compListBox.right + kScrollBarWidth, gControls->aw->compListBox.bottom); if ((evt->what == mouseUp) && (PtInRect( localPt, &r))) { LClick(localPt, evt->modifiers, gControls->aw->compList); SetRect(&r, gControls->aw->compListBox.left, gControls->aw->compListBox.top, gControls->aw->compListBox.right + 1, gControls->aw->compListBox.bottom); FrameRect(&r); } /* or un/check components */ if ((evt->what == mouseUp) && (PtInRect( localPt, &gControls->aw->compListBox))) { LClick(localPt, evt->modifiers, gControls->aw->compList); AddUpdateRowHighlight(localPt); /* invert the checkbox rect */ for (i=0; i<numRows; i++) { SetPt(&currCell, 0, i); LRect(&currCellRect, currCell, gControls->aw->compList); if (PtInRect(localPt, &currCellRect)) { SetRect(&checkbox, currCellRect.left+4, currCellRect.top+2, currCellRect.left+16, currCellRect.top+14); INVERT_HIGHLIGHT(&checkbox); break; } } AddSetOptInfo(false); } /* Mouse Down */ if ((evt->what == mouseDown) && (PtInRect( localPt, &gControls->aw->compListBox))) { /* show depressed button state */ for (i=0; i<numRows; i++) { SetPt(&currCell, 0, i); LRect(&currCellRect, currCell, gControls->aw->compList); if (PtInRect(localPt, &currCellRect)) { SetRect(&checkbox, currCellRect.left+4, currCellRect.top+2, currCellRect.left+16, currCellRect.top+14); ppH = GetPixPat(rGrayPixPattern); FillCRect(&checkbox, ppH); FrameRect(&checkbox); if (gControls->cfg->comp[rowToComp[i]].selected) { /* draw check mark */ MoveTo(checkbox.left+1, checkbox.top+1); LineTo(checkbox.right-2, checkbox.bottom-2); MoveTo(checkbox.right-2, checkbox.top+1); LineTo(checkbox.left+1, checkbox.bottom-2); } /* create 3D depression */ MoveTo(checkbox.left+1, checkbox.top+1); LineTo(checkbox.left+1, checkbox.bottom-1); MoveTo(checkbox.left+1, checkbox.top+1); LineTo(checkbox.right-1, checkbox.top+1); ForeColor(whiteColor); MoveTo(checkbox.right-1, checkbox.top+1); LineTo(checkbox.right-1, checkbox.bottom-1); MoveTo(checkbox.left+1, checkbox.bottom-1); LineTo(checkbox.right-1, checkbox.bottom-1); ForeColor(blackColor); if (ppH) DisposePixPat(ppH); break; } } } HLock((Handle)gControls->backB); r = (**(gControls->backB)).contrlRect; HUnlock((Handle)gControls->backB); if (PtInRect( localPt, &r)) { /* reset all rows to be not highlighted */ for (i=1; i<numRows; i++) gControls->cfg->comp[rowToComp[i]].highlighted = false; part = TrackControl(gControls->backB, evt->where, NULL); if (part) { /* extra handling since we used DrawString for static text msg * and framed our own listbox etc. */ gControls->aw->compListBox.top = 0; EraseRect(&gControls->aw->compListBox); ClearDiskSpaceMsgs(); KillControls(gWPtr); ShowComponentsWin(); return; } } HLock((Handle)gControls->nextB); r = (**(gControls->nextB)).contrlRect; HUnlock((Handle)gControls->nextB); if (PtInRect( localPt, &r)) { /* reset all rows to be not highlighted */ for (i=0; i<numRows; i++) gControls->cfg->comp[rowToComp[i]].highlighted = false; part = TrackControl(gControls->nextB, evt->where, NULL); if (part) { if (!VerifyDiskSpace()) return; gControls->aw->compListBox.top = 0; EraseRect(&gControls->aw->compListBox); ClearDiskSpaceMsgs(); KillControls(gWPtr); ShowTerminalWin(); return; } } SetPort(oldPort); }
/* VARARGS ARGSUSED */ void TclpPanic TCL_VARARGS_DEF(CONST char *, format) { va_list varg; char msg[256]; WindowRef macWinPtr, foundWinPtr; Rect macRect; Rect buttonRect = PANIC_BUTTON_RECT; Rect iconRect = PANIC_ICON_RECT; Rect textRect = PANIC_TEXT_RECT; ControlHandle okButtonHandle; EventRecord event; Handle stopIconHandle; int part; Boolean done = false; va_start(varg, format); vsprintf(msg, format, varg); va_end(varg); /* * Put up an alert without using the Resource Manager (there may * be no resources to load). Use the Window and Control Managers instead. * We want the window centered on the main monitor. The following * should be tested with multiple monitors. Look and see if there is a way * not using qd.screenBits. */ macRect.top = (qd.screenBits.bounds.top + qd.screenBits.bounds.bottom) / 2 - (PANICHEIGHT / 2); macRect.bottom = (qd.screenBits.bounds.top + qd.screenBits.bounds.bottom) / 2 + (PANICHEIGHT / 2); macRect.left = (qd.screenBits.bounds.left + qd.screenBits.bounds.right) / 2 - (PANICWIDTH / 2); macRect.right = (qd.screenBits.bounds.left + qd.screenBits.bounds.right) / 2 + (PANICWIDTH / 2); macWinPtr = NewWindow(NULL, &macRect, "\p", true, dBoxProc, (WindowRef) -1, false, 0); if (macWinPtr == NULL) { goto exitNow; } okButtonHandle = NewControl(macWinPtr, &buttonRect, "\pOK", true, 0, 0, 1, pushButProc, 0); if (okButtonHandle == NULL) { CloseWindow(macWinPtr); goto exitNow; } SelectWindow(macWinPtr); SetCursor(&qd.arrow); stopIconHandle = GetIcon(kStopIcon); while (!done) { if (WaitNextEvent(mDownMask | keyDownMask | updateMask, &event, 0, NULL)) { switch(event.what) { case mouseDown: part = FindWindow(event.where, &foundWinPtr); if ((foundWinPtr != macWinPtr) || (part != inContent)) { SysBeep(1); } else { SetPortWindowPort(macWinPtr); GlobalToLocal(&event.where); part = FindControl(event.where, macWinPtr, &okButtonHandle); if ((kControlButtonPart == part) && (TrackControl(okButtonHandle, event.where, NULL))) { done = true; } } break; case keyDown: switch (event.message & charCodeMask) { case ENTERCODE: case RETURNCODE: HiliteControl(okButtonHandle, 1); HiliteControl(okButtonHandle, 0); done = true; } break; case updateEvt: SetPortWindowPort(macWinPtr); TextFont(systemFont); BeginUpdate(macWinPtr); if (stopIconHandle != NULL) { PlotIcon(&iconRect, stopIconHandle); } TETextBox(msg, strlen(msg), &textRect, teFlushDefault); DrawControls(macWinPtr); EndUpdate(macWinPtr); } } } CloseWindow(macWinPtr); exitNow: #ifdef TCL_DEBUG Debugger(); #else abort(); #endif }
void InTerminalContent(EventRecord* evt, WindowPtr wCurrPtr) { Point localPt; Rect r; ControlPartCode part; ControlHandle currCntl; short checkboxVal; GrafPtr oldPort; GetPort(&oldPort); SetPort(wCurrPtr); localPt = evt->where; GlobalToLocal( &localPt); if (gControls->tw->siteSelector) { HLock((Handle)gControls->tw->siteSelector); r = (**(gControls->tw->siteSelector)).contrlRect; HUnlock((Handle)gControls->tw->siteSelector); if (PtInRect(localPt, &r)) { part = FindControl(localPt, gWPtr, &currCntl); part = TrackControl(currCntl, localPt, (ControlActionUPP) -1); gControls->opt->siteChoice = GetControlValue(currCntl); return; } } if (gControls->tw->saveBitsCheckbox) { HLock((Handle)gControls->tw->saveBitsCheckbox); r = (**(gControls->tw->saveBitsCheckbox)).contrlRect; HUnlock((Handle)gControls->tw->saveBitsCheckbox); if (PtInRect(localPt, &r)) { part = FindControl(localPt, gWPtr, &currCntl); part = TrackControl(currCntl, localPt, (ControlActionUPP) -1); checkboxVal = GetControlValue(currCntl); SetControlValue(currCntl, 1 - checkboxVal); if (checkboxVal) // was selected so now toggling off gControls->opt->saveBits = false; else // was not selected so now toggling on gControls->opt->saveBits = true; return; } } if (gControls->tw->proxySettingsBtn) { HLock((Handle)gControls->tw->proxySettingsBtn); r = (**(gControls->tw->proxySettingsBtn)).contrlRect; HUnlock((Handle)gControls->tw->proxySettingsBtn); if (PtInRect(localPt, &r)) { part = TrackControl(gControls->tw->proxySettingsBtn, evt->where, NULL); if (part != 0) OpenProxySettings(); return; } } HLock((Handle)gControls->backB); SetRect(&r, (**(gControls->backB)).contrlRect.left, (**(gControls->backB)).contrlRect.top, (**(gControls->backB)).contrlRect.right, (**(gControls->backB)).contrlRect.bottom); HUnlock((Handle)gControls->backB); if (PtInRect( localPt, &r)) { part = TrackControl(gControls->backB, evt->where, NULL); if (part) { /* before install has started */ if (gControls->state == eInstallNotStarted) { KillControls(gWPtr); if (&gControls->tw->startMsgBox) { EraseRect(&gControls->tw->startMsgBox); InvalRect(&gControls->tw->startMsgBox); } else { ErrorHandler(eParam, nil); return; } ClearSaveBitsMsg(); /* treat last setup type selection as custom */ if (gControls->opt->instChoice == gControls->cfg->numSetupTypes) { if (gControls->cfg->bAdditionsExist) ShowAdditionsWin(); else ShowComponentsWin(); } else ShowSetupTypeWin(); return; } /* pause button pressed */ else if (gControls->state == eDownloading || gControls->state == eResuming) { SetPausedState(); } } } HLock((Handle)gControls->nextB); SetRect(&r, (**(gControls->nextB)).contrlRect.left, (**(gControls->nextB)).contrlRect.top, (**(gControls->nextB)).contrlRect.right, (**(gControls->nextB)).contrlRect.bottom); HUnlock((Handle)gControls->nextB); if (PtInRect( localPt, &r)) { part = TrackControl(gControls->nextB, evt->where, NULL); if (part) { BeginInstall(); } } SetPort(oldPort); }
void InLicenseContent(EventRecord* evt, WindowPtr wCurrPtr) { Point localPt; Rect r; ControlPartCode part; short code, value; ControlHandle scrollBar; ControlActionUPP scrollActionFunctionUPP; GrafPtr oldPort; GetPort(&oldPort); SetPort(gWPtr); localPt = evt->where; GlobalToLocal( &localPt); code = FindControl(localPt, wCurrPtr, &scrollBar); switch (code) { case kControlUpButtonPart: case kControlDownButtonPart: case kControlPageUpPart: case kControlPageDownPart: scrollActionFunctionUPP = NewControlActionUPP(DoScrollProc); value = TrackControl(scrollBar, localPt, scrollActionFunctionUPP); return; case kControlIndicatorPart: value = GetControlValue(scrollBar); code = TrackControl(scrollBar, localPt, nil); if (code) { value -= GetControlValue(scrollBar); if (value) { TEScroll(0, value * kScrollAmount, gControls->lw->licTxt); ShowTxt(); } } return; } HLock((Handle)gControls->backB); r = (**(gControls->backB)).contrlRect; HUnlock((Handle)gControls->backB); if (PtInRect( localPt, &r)) { part = TrackControl(gControls->backB, evt->where, NULL); if (part) gDone = true; /* Decline pressed */ } HLock((Handle)gControls->nextB); r = (**(gControls->nextB)).contrlRect; HUnlock((Handle)gControls->nextB); if (PtInRect( localPt, &r)) { part = TrackControl(gControls->nextB, evt->where, NULL); if (part) { KillControls(gWPtr); ShowSetupTypeWin(); return; } } ShowTxt(); // TO DO SetPort(oldPort); }