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; }
Point Widget_pointerPos( Handle self, Bool set, Point p) { if ( !set) { p = apc_pointer_get_pos( self); apc_widget_map_points( self, false, 1, &p); return p; } apc_widget_map_points( self, true, 1, &p); apc_pointer_set_pos( self, p. x, p. y); return p; }