Bool apc_pointer_set_visible( Handle self, Bool visible) { /* maintaining hide/show count */ if ( visible) { if ( guts. pointer_invisible_count == 0) return true; if ( ++guts. pointer_invisible_count < 0) return true; } else { if ( guts. pointer_invisible_count-- < 0) return true; } /* setting pointer for widget under cursor */ { Point p = apc_pointer_get_pos( application); Handle wij = apc_application_get_widget_from_point( application, p); if ( wij) { X(wij)-> flags. pointer_obscured = (visible ? 0 : 1); XDefineCursor( DISP, X(wij)-> udrawable, visible ? (( X(wij)-> pointer_id == crUser) ? X(wij)-> user_pointer : X(wij)-> actual_pointer) : prima_null_pointer()); } } XFlush( DISP); if ( guts. grab_widget) apc_widget_set_capture( guts. grab_widget, true, guts. grab_confine); return true; }
void Application_HintTimer_handle_event( Handle timer, PEvent event) { CComponent-> handle_event( timer, event); if ( event-> cmd == cmTimer) { Handle self = application; CTimer(timer)-> stop( timer); if ( var-> hintActive == 1) { Event ev = {cmHint}; if ( !var->hintUnder || apc_application_get_widget_from_point( self, my-> get_pointerPos(self)) != var->hintUnder || PObject( var-> hintUnder)-> stage != csNormal) return; ev. gen. B = true; ev. gen. H = var-> hintUnder; var-> hintVisible = 1; if (( PWidget( var-> hintUnder)-> stage == csNormal) && ( CWidget( var-> hintUnder)-> message( var-> hintUnder, &ev))) hshow( self); } else if ( var-> hintActive == -1) var-> hintActive = 0; } }