MCPcopy Create free account
hub / github.com/LibreSprite/LibreSprite / onProcessMessage

Method onProcessMessage

src/ui/listbox.cpp:141–278  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

139}
140
141bool ListBox::onProcessMessage(Message* msg)
142{
143 switch (msg->type()) {
144
145 case kOpenMessage:
146 centerScroll();
147 break;
148
149 case kMouseDownMessage:
150 captureMouse();
151
152 case kMouseMoveMessage:
153 if (hasCapture()) {
154 gfx::Point mousePos = static_cast<MouseMessage*>(msg)->position();
155 int select = getSelectedIndex();
156 View* view = View::getView(this);
157 bool pick_item = true;
158
159 if (view) {
160 gfx::Rect vp = view->viewportBounds();
161
162 if (mousePos.y < vp.y) {
163 int num = MAX(1, (vp.y - mousePos.y) / 8);
164 selectIndex(select-num);
165 pick_item = false;
166 }
167 else if (mousePos.y >= vp.y + vp.h) {
168 int num = MAX(1, (mousePos.y - (vp.y+vp.h-1)) / 8);
169 selectIndex(select+num);
170 pick_item = false;
171 }
172 }
173
174 if (pick_item) {
175 Widget* picked;
176
177 if (view) {
178 picked = view->viewport()->pick(mousePos);
179 }
180 else {
181 picked = pick(mousePos);
182 }
183
184 /* if the picked widget is a child of the list, select it */
185 if (picked && hasChild(picked)) {
186 if (ListItem* pickedItem = dynamic_cast<ListItem*>(picked))
187 selectChild(pickedItem);
188 }
189 }
190
191 return true;
192 }
193 break;
194
195 case kMouseUpMessage:
196 releaseMouse();
197 break;
198

Callers

nothing calls this directly

Calls 11

viewportBoundsMethod · 0.80
pickMethod · 0.80
viewportMethod · 0.80
typeMethod · 0.45
positionMethod · 0.45
viewScrollMethod · 0.45
wheelDeltaMethod · 0.45
setViewScrollMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45
scancodeMethod · 0.45

Tested by

no test coverage detected