new_event.event в этой функции оказывается неинициализированным, из-за чего происходит падение программы.
ну в данном случае, пофигу, обнулил new_event ( memset( &new_event, 0 ,sizeof( new_event ) ), эффект тотже =)
с нажатием, отжатием, тоже пробовал, не работало
но я не выставлял
new_event.event.subtype = Ph_EV_RELEASE_REAL;
в итоге заработало в таком варианте
struct{
PhEvent_t event;
PhRect_t rect;
PhPointerEvent_t pevent;
} new_event;
memset( &new_event, 0 ,sizeof( new_event ) );
memset( &new_event.rect, -1 ,sizeof( new_event.rect ) );
if( event ) {
new_event.event = *event;
}
new_event.event.processing_flags = Ph_FAKE_EVENT;
new_event.event.type = Ph_EV_BUT_PRESS;
new_event.pevent.click_count = 1;
new_event.pevent.buttons = Ph_BUTTON_SELECT;
new_event.event.num_rects = 1;
PtSendEventToWidget( widget, (PhEvent_t *) &new_event);
new_event.event.processing_flags = Ph_FAKE_EVENT;
new_event.event.type = Ph_EV_BUT_RELEASE;
new_event.event.subtype = Ph_EV_RELEASE_REAL;
new_event.pevent.click_count = 1;
new_event.pevent.buttons = Ph_BUTTON_SELECT;
new_event.event.num_rects = 1;
PtSendEventToWidget( widget, (PhEvent_t *) &new_event);
В чем тогда разница?
Ph_EV_RELEASE_REAL
Emitted at the current position of the pointer (that is, where the user actually released the button).
Ph_EV_RELEASE_PHANTOM
Emitted where the user pressed the button.
или как описано в главе "Events" нужно сначала нажать потом отжать а потом еще раз отжать через Ph_EV_RELEASE_PHANTOM?