public override void HandleEvent(ref Event Event) { base.HandleEvent(ref Event); if (Event.What == Event.MouseDown) { FocusLink(ref Event); } else if (Event.What == Event.KeyDown) { char C = HotKey(Text); if ((Drivers.GetAltCode(C) == (char)Event.KeyCode) || ((C != '\x0000') && (Owner.Phase == Phases.phPostProcess) && (char.ToUpper((char)Event.CharCode) == C))) { FocusLink(ref Event); } } else { if (Event.What == Event.Broadcast) { if (((Event.Command == cmReceivedFocus) || (Event.Command == cmReleasedFocus)) && (Link != null)) { Light = (Link.State & StateFlags.Focused) != 0; DrawView(); } } } }
public override void HandleEvent(ref Event Event) { Point Mouse; bool Down; char C; Rect ClickRect = GetExtent(); ClickRect.A.X++; ClickRect.B.X--; ClickRect.B.Y--; if (Event.What == Event.MouseDown) { Mouse = MakeLocal(Event.Where); if (!ClickRect.Contains(Mouse)) { ClearEvent(ref Event); } } if ((Flags & ButtonFlags.GrabFocus) != 0) { base.HandleEvent(ref Event); } switch (Event.What) { case Event.MouseDown: { if ((State & StateFlags.Disabled) == 0) { ClickRect.B.X++; Down = false; do { Mouse = MakeLocal(Event.Where); if (Down != ClickRect.Contains(Mouse)) { Down = !Down; DrawState(Down); } }while(MouseEvent(ref Event, Event.MouseMove)); if (Down) { Press(); DrawState(false); } } ClearEvent(ref Event); } break; case Event.KeyDown: if (Title != "") { C = HotKey(Title); if ((Event.KeyCode == (KeyboardKeys)Drivers.GetAltCode(C)) || ((Owner.Phase == Phases.phPostProcess) && (C != '\x00') && (char.ToUpper((char)Event.CharCode) == C)) || (((State & StateFlags.Focused) != 0) && (Event.CharCode == ' '))) { Press(); ClearEvent(ref Event); } } break; case Event.Broadcast: switch (Event.Command) { case cmDefault: if (AmDefault && ((State & StateFlags.Disabled) == 0)) { Press(); ClearEvent(ref Event); } break; case cmGrabDefault: case cmReleaseDefault: if ((Flags & ButtonFlags.Default) != 0) { AmDefault = Event.Command == cmReleaseDefault; DrawView(); } break; case cmCommandSetChanged: { SetState(StateFlags.Disabled, !CommandEnabled(Command)); DrawView(); } break; } break; } }
public override void HandleEvent(ref Event Event) { Point Mouse; base.HandleEvent(ref Event); if ((Options & OptionFlags.ofSelectable) == 0) { return; } if (Event.What == Event.MouseDown) { Mouse = MakeLocal(Event.Where); int I = FindSel(Mouse); if (I != -1) { if (ButtonState(I)) { Sel = I; } } DrawView(); do { Mouse = MakeLocal(Event.Where); if (FindSel(Mouse) == Sel) { ShowCursor(); } else { HideCursor(); } } while (MouseEvent(ref Event, Event.MouseMove)); ShowCursor(); Mouse = MakeLocal(Event.Where); if ((FindSel(Mouse) == Sel) && (ButtonState(Sel))) { Press(Sel); DrawView(); } ClearEvent(ref Event); } else if (Event.What == Event.KeyDown) { int S = Sel; switch (Drivers.CtrlToArrow(Event.KeyCode)) { case KeyboardKeys.Up: if ((State & StateFlags.Focused) != 0) { int I = 0; do { I++; S--; if (S < 0) { S = Strings.Count - 1; } }while(!(ButtonState(S) || (I > Strings.Count))); MoveSel(I, S); ClearEvent(ref Event); } break; case KeyboardKeys.Down: if ((State & StateFlags.Focused) != 0) { int I = 0; do { I++; S++; if (S >= Strings.Count) { S = 0; } } while (!(ButtonState(S) || (I > Strings.Count))); MoveSel(I, S); ClearEvent(ref Event); } break; case KeyboardKeys.Right: if ((State & StateFlags.Focused) != 0) { int I = 0; do { I++; S += Size.Y; if (S > Strings.Count) { S = (S + 1) % Size.Y; if (S >= Strings.Count) { S = 0; } } } while (!(ButtonState(S) || (I > Strings.Count))); MoveSel(I, S); ClearEvent(ref Event); } break; case KeyboardKeys.Left: if ((State & StateFlags.Focused) != 0) { int I = 0; do { I++; if (S > 0) { S -= Size.Y; if (S < 0) { S = ((Strings.Count + Size.Y - 1) / Size.Y) * Size.Y + S - 1; if (S >= Strings.Count) { S = Strings.Count - 1; } } } else { S = Strings.Count - 1; } } while (!(ButtonState(S) || (I > Strings.Count))); MoveSel(I, S); ClearEvent(ref Event); } break; default: { for (int I = 0; I < Strings.Count; I++) { char C = HotKey(Strings[I]); if ((Drivers.GetAltCode(C) == (uint)Event.KeyCode) || (((Owner.Phase == Phases.phPostProcess) || ((State & StateFlags.Focused) != 0)) && (C != '\x0000') && (char.ToUpper((char)Event.CharCode) == C))) { if (ButtonState(I)) { if (Focus()) { Sel = I; MovedTo(Sel); Press(Sel); DrawView(); } ClearEvent(ref Event); } return; } } if ((Event.CharCode == ' ') && ((State & StateFlags.Focused) != 0) && ButtonState(Sel)) { Press(Sel); DrawView(); ClearEvent(ref Event); } } break; } } }