Показать сообщение отдельно
Старый 15.04.2011, 19:13   #96
wolfhound512
Знающий
 
Аватар для wolfhound512
 
Регистрация: 18.02.2008
Сообщений: 276
Написано 121 полезных сообщений
(для 299 пользователей)
Ответ: AlbaLynx [Xors3D GUI]

Все дело в том, что если клик пришелся между вызовами
GUI->Update() и Context->Open(), то сначала открывается меню, а потом ГУИ узнает о клике, видит что клик за пределами контекстного меню и сразу закрывает его.
Соответственно чем между кода между этими функциями, тем меньше вероятность такой ситуации.
Вариант решения:
If MouseDown(2) Then
	If (pressed < 2) Then
		pressed = pressed + 1
		alOpenContext(context, 0, 0, MouseX(), MouseY(), width, height, alGetValueI(fm_point_pos), alGetValueI(fm_point_menu));
	EndIf
Else
	pressed = 0
EndIf
pressed < 2 - Чтобы если случилась выше описанная ситуация, то контекст мог открыться повторно, когда ГУИ уже знает о клике и не станет закрывать контекст
Если бы FlushMouse() работал, то так мудрить не пришлось бы
__________________
GUI, GUIw512, AlbaLynx, Форум

Последний раз редактировалось wolfhound512, 15.04.2011 в 19:29. Причина: Исправил ошибку в условии
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Amatsu (15.04.2011)