Beispiel #1
0
		void sendmouse(Cursor::Mousestate mst, vector2d<int16_t> pos)
		{
			cursor.setposition(pos);

			if (focused != Element::NONE)
			{
				if (elements[focused]->isactive())
					elements[focused]->sendmouse(mst == Cursor::MST_CLICKING, pos);
				else
					focused = Element::NONE;
			}

			if (focused == Element::NONE)
			{
				UIElement* front = nullptr;
				if (enabled)
				{
					for (auto& elit : elements)
					{
						if (elit.second->isactive() && elit.second->bounds().contains(pos))
						{
							if (front)
							{
								front->sendmouse(false, pos);
							}
							front = elit.second.get();
						}
					}
				}

				if (front)
				{
					mst = front->sendmouse(mst == Cursor::MST_CLICKING, pos);
				}
				else
				{
					mst = Cursor::MST_IDLE;
				}
			}

			cursor.setstate(mst);
		}