home *** CD-ROM | disk | FTP | other *** search
- // Zinc Interface Library - D_WIN2.CPP
- // COPYRIGHT (C) 1990, 1991. All Rights Reserved.
- // Zinc Software Incorporated. Pleasant Grove, Utah USA
-
- #include "ui_dsn.hpp"
- #include <fcntl.h>
- #include <string.h>
-
- UI_WINDOW_OBJECT *_currentObject = NULL;
-
- int UI_WINDOW_OBJECT::Editor(const UI_EVENT &event)
- {
- static USHORT time = 0;
-
- int ccode = UI_WINDOW_OBJECT::LogicalEvent(event, ID_WINDOW_OBJECT);
- switch (ccode)
- {
- case L_SELECT:
- case L_BEGIN_SELECT:
- if (ccode == L_SELECT || ui_time() - time < 8)
- {
- _currentObject = this;
- UI_EVENT tEvent;
- tEvent.type = S_EDIT_OBJECT;
- this->Editor(tEvent);
- time = 0;
- break;
- }
- time = ui_time();
- // Continue to L_VIEW.
-
- case L_VIEW:
- int border = (display->isText) ? 0 : 6;
- UI_WINDOW_OBJECT *object = this;
- while (object->parent && FlagSet(object->woFlags, WOF_NON_FIELD_REGION))
- object = object->parent;
-
- int sizeFlags = 0;
- if (event.position.column - border <= object->true.left)
- sizeFlags |= M_LEFT_CHANGE;
- else if (event.position.column + border >= object->true.right)
- sizeFlags |= M_RIGHT_CHANGE;
- if (event.position.line - border <= object->true.top)
- sizeFlags |= M_TOP_CHANGE;
- else if (event.position.line + border >= object->true.bottom)
- sizeFlags |= M_BOTTOM_CHANGE;
- if (FlagSet(woAdvancedFlags, WOAF_NO_SIZE))
- sizeFlags = 0;
- else if (!FlagSet(object->woFlags, WOF_NON_FIELD_REGION))
- sizeFlags &= ~(M_LEFT_CHANGE | M_TOP_CHANGE);
-
- UI_EVENT tEvent = event;
- if (!sizeFlags)
- tEvent.rawCode = (parent && !FlagSet(woFlags, WOF_NON_FIELD_REGION)) ?
- DM_SMALL_MOVE : DM_MOVE;
- else if (FlagsSet(sizeFlags, M_LEFT_CHANGE | M_TOP_CHANGE) ||
- FlagsSet(sizeFlags, M_RIGHT_CHANGE | M_BOTTOM_CHANGE))
- tEvent.rawCode = (parent && !FlagSet(woFlags, WOF_NON_FIELD_REGION)) ?
- DM_SMALL_DIAGONAL_ULLR : DM_DIAGONAL_ULLR;
- else if (FlagsSet(sizeFlags, M_LEFT_CHANGE | M_BOTTOM_CHANGE) ||
- FlagsSet(sizeFlags, M_RIGHT_CHANGE | M_TOP_CHANGE))
- tEvent.rawCode = DM_DIAGONAL_LLUR;
- else if (FlagSet(sizeFlags, M_LEFT_CHANGE | M_RIGHT_CHANGE))
- tEvent.rawCode = (parent && !FlagSet(woFlags, WOF_NON_FIELD_REGION)) ?
- DM_SMALL_HORIZONTAL : DM_HORIZONTAL;
- else if (FlagSet(sizeFlags, M_TOP_CHANGE | M_BOTTOM_CHANGE))
- tEvent.rawCode = (parent && !FlagSet(woFlags, WOF_NON_FIELD_REGION)) ?
- DM_SMALL_VERTICAL : DM_VERTICAL;
- eventManager->Event(tEvent);
-
- if (ccode == L_BEGIN_SELECT)
- {
- _currentObject = object;
- tEvent.type = sizeFlags ? S_SIZE_CURRENT : S_MOVE_CURRENT;
- tEvent.rawCode = sizeFlags;
- eventManager->Put(tEvent, Q_BEGIN);
- }
- break;
-
- default:
- ccode = S_UNKNOWN;
- }
-
- // Return the control code.
- return (ccode);
- }
-