| 1075 | } |
| 1076 | |
| 1077 | void Control::pushFormEvent(FormEventType type, Event *parentEvent) |
| 1078 | { |
| 1079 | FormsEvent *event = nullptr; |
| 1080 | switch (type) |
| 1081 | { |
| 1082 | // Mouse events fall-through |
| 1083 | case FormEventType::MouseEnter: |
| 1084 | case FormEventType::MouseLeave: |
| 1085 | // Only mouseEnter/mouseLeave could cause a state change (e.g. stop highlighting a |
| 1086 | // button) |
| 1087 | this->setDirty(); |
| 1088 | // Fall-though |
| 1089 | case FormEventType::MouseMove: |
| 1090 | { |
| 1091 | event = new FormsEvent(); |
| 1092 | event->forms().RaisedBy = shared_from_this(); |
| 1093 | event->forms().EventFlag = type; |
| 1094 | event->forms().MouseInfo = parentEvent->mouse(); |
| 1095 | event->forms().MouseInfo.X -= resolvedLocation.x; |
| 1096 | event->forms().MouseInfo.Y -= resolvedLocation.y; |
| 1097 | fw().pushEvent(event); |
| 1098 | break; |
| 1099 | } |
| 1100 | case FormEventType::MouseDown: |
| 1101 | case FormEventType::MouseUp: |
| 1102 | case FormEventType::MouseClick: |
| 1103 | { |
| 1104 | event = new FormsEvent(); |
| 1105 | event->forms().RaisedBy = shared_from_this(); |
| 1106 | event->forms().EventFlag = type; |
| 1107 | event->forms().MouseInfo = parentEvent->mouse(); |
| 1108 | event->forms().MouseInfo.X -= resolvedLocation.x; |
| 1109 | event->forms().MouseInfo.Y -= resolvedLocation.y; |
| 1110 | fw().pushEvent(event); |
| 1111 | this->setDirty(); |
| 1112 | break; |
| 1113 | } |
| 1114 | // Keyboard events fall-through |
| 1115 | case FormEventType::KeyDown: |
| 1116 | case FormEventType::KeyUp: |
| 1117 | case FormEventType::KeyPress: |
| 1118 | { |
| 1119 | event = new FormsEvent(); |
| 1120 | event->forms().RaisedBy = shared_from_this(); |
| 1121 | event->forms().EventFlag = type; |
| 1122 | event->forms().KeyInfo = parentEvent->keyboard(); |
| 1123 | fw().pushEvent(event); |
| 1124 | this->setDirty(); |
| 1125 | break; |
| 1126 | } |
| 1127 | // Input event special |
| 1128 | case FormEventType::TextInput: |
| 1129 | { |
| 1130 | event = new FormsEvent(); |
| 1131 | event->forms().RaisedBy = shared_from_this(); |
| 1132 | event->forms().EventFlag = type; |
| 1133 | event->forms().Input = parentEvent->text(); |
| 1134 | fw().pushEvent(event); |
no test coverage detected