@@ -54,8 +54,11 @@ static void _apps_image_paint(twin_custom_widget_t *custom)
5454}
5555
5656static twin_dispatch_result_t _apps_image_dispatch (twin_widget_t * widget ,
57- twin_event_t * event )
57+ twin_event_t * event ,
58+ void * closure )
5859{
60+ (void ) closure ; /* unused parameter */
61+
5962 twin_custom_widget_t * custom = twin_widget_get_custom (widget );
6063 if (!custom )
6164 return TwinDispatchContinue ;
@@ -70,15 +73,16 @@ static twin_dispatch_result_t _apps_image_dispatch(twin_widget_t *widget,
7073 return TwinDispatchContinue ;
7174}
7275
73- static void _apps_image_button_signal ( twin_button_t * button ,
74- twin_button_signal_t signal ,
75- void * closure )
76+ static twin_dispatch_result_t _apps_image_button_clicked ( twin_widget_t * widget ,
77+ twin_event_t * event ,
78+ void * data )
7679{
77- (void ) button ; /* unused parameter */
78- if (signal != TwinButtonSignalDown )
79- return ;
80+ (void ) widget ; /* unused parameter */
81+
82+ if (event -> kind != TwinEventButtonSignalUp )
83+ return TwinDispatchContinue ;
8084
81- twin_custom_widget_t * custom = closure ;
85+ twin_custom_widget_t * custom = data ;
8286 apps_image_data_t * img =
8387 (apps_image_data_t * ) twin_custom_widget_data (custom );
8488 const int n = sizeof (tvg_files ) / sizeof (tvg_files [0 ]);
@@ -87,10 +91,11 @@ static void _apps_image_button_signal(twin_button_t *button,
8791 twin_pixmap_t * pix = twin_tvg_to_pixmap_scale (
8892 tvg_files [img -> image_idx ], TWIN_ARGB32 , APP_WIDTH , APP_HEIGHT );
8993 if (!pix )
90- return ;
94+ return TwinDispatchContinue ;
9195 img -> pixes [img -> image_idx ] = pix ;
9296 }
9397 twin_custom_widget_queue_paint (custom );
98+ return TwinDispatchDone ;
9499}
95100
96101static twin_custom_widget_t * _apps_image_init (twin_box_t * parent )
@@ -113,8 +118,8 @@ static twin_custom_widget_t *_apps_image_init(twin_box_t *parent)
113118 twin_button_create (parent , "Next Image" , 0xFF482722 , D (10 ),
114119 TwinStyleBold | TwinStyleOblique );
115120 twin_widget_set (& button -> label .widget , 0xFFFEE4CE );
116- button -> signal = _apps_image_button_signal ;
117- button -> closure = custom ;
121+ twin_widget_set_callback ( & button -> label . widget , _apps_image_button_clicked ,
122+ custom ) ;
118123 button -> label .widget .shape = TwinShapeRectangle ;
119124
120125 return custom ;
0 commit comments