Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/src/rbutton.c

    rff6e91b rb433f68  
    186186}
    187187
    188 /** Paint radio button in graphics mode.
     188/** Paint radio button.
    189189 *
    190190 * @param rbutton Radio button
    191191 * @return EOK on success or an error code
    192192 */
    193 errno_t ui_rbutton_paint_gfx(ui_rbutton_t *rbutton)
     193errno_t ui_rbutton_paint(ui_rbutton_t *rbutton)
    194194{
    195195        gfx_coord2_t pos;
     
    202202        center.y = rbutton->rect.p0.y + rbutton_oframe_r;
    203203
    204         /* Paint radio button frame */
     204        /* Paint rbutton frame */
    205205
    206206        rc = gfx_set_color(rbutton->group->res->gc,
     
    244244                goto error;
    245245
    246         /* Paint radio button interior */
     246        /* Paint rbutton interior */
    247247        depressed = rbutton->held && rbutton->inside;
    248248
     
    296296}
    297297
    298 /** Paint radio button in text mode.
    299  *
    300  * @param rbutton Radio button
    301  * @return EOK on success or an error code
    302  */
    303 errno_t ui_rbutton_paint_text(ui_rbutton_t *rbutton)
    304 {
    305         gfx_coord2_t pos;
    306         gfx_text_fmt_t fmt;
    307         bool depressed;
    308         errno_t rc;
    309 
    310         /* Paint radio button */
    311 
    312         depressed = rbutton->held && rbutton->inside;
    313 
    314         pos.x = rbutton->rect.p0.x;
    315         pos.y = rbutton->rect.p0.y;
    316 
    317         gfx_text_fmt_init(&fmt);
    318         fmt.color = depressed ? rbutton->group->res->entry_act_bg_color :
    319             rbutton->group->res->wnd_text_color;
    320         fmt.halign = gfx_halign_left;
    321         fmt.valign = gfx_valign_top;
    322 
    323         rc = gfx_puttext(rbutton->group->res->font, &pos, &fmt,
    324             rbutton->group->selected == rbutton ? "(\u2022)" : "( )");
    325         if (rc != EOK)
    326                 goto error;
    327 
    328         /* Paint radio button label */
    329 
    330         pos.x += 4;
    331 
    332         fmt.color = rbutton->group->res->wnd_text_color;
    333 
    334         rc = gfx_puttext(rbutton->group->res->font, &pos, &fmt,
    335             rbutton->caption);
    336         if (rc != EOK)
    337                 goto error;
    338 
    339         rc = gfx_update(rbutton->group->res->gc);
    340         if (rc != EOK)
    341                 goto error;
    342 
    343         return EOK;
    344 error:
    345         return rc;
    346 }
    347 
    348 /** Paint radio button.
    349  *
    350  * @param rbutton Radio button
    351  * @return EOK on success or an error code
    352  */
    353 errno_t ui_rbutton_paint(ui_rbutton_t *rbutton)
    354 {
    355         if (rbutton->group->res->textmode)
    356                 return ui_rbutton_paint_text(rbutton);
    357         else
    358                 return ui_rbutton_paint_gfx(rbutton);
    359 }
    360 
    361298/** Press down button.
    362299 *
     
    379316void ui_rbutton_release(ui_rbutton_t *rbutton)
    380317{
     318        ui_rbutton_t *old_selected;
     319
    381320        if (!rbutton->held)
    382321                return;
     
    386325        if (rbutton->inside) {
    387326                /* Activate radio button */
    388                 ui_rbutton_select(rbutton);
     327                old_selected = rbutton->group->selected;
     328
     329                if (old_selected != rbutton) {
     330                        rbutton->group->selected = rbutton;
     331                        ui_rbutton_paint(old_selected);
     332                }
     333
     334                /* Repaint and notify */
     335                (void) ui_rbutton_paint(rbutton);
     336
     337                if (old_selected != rbutton)
     338                        ui_rbutton_selected(rbutton);
    389339        }
    390340}
     
    418368}
    419369
    420 /** Select radio button.
    421  *
    422  * @param rbutton Radio button
    423  */
    424 void ui_rbutton_select(ui_rbutton_t *rbutton)
    425 {
    426         ui_rbutton_t *old_selected;
    427 
    428         old_selected = rbutton->group->selected;
    429 
    430         if (old_selected != rbutton) {
    431                 rbutton->group->selected = rbutton;
    432                 ui_rbutton_paint(old_selected);
    433         }
    434 
    435         /* Repaint and notify */
    436         (void) ui_rbutton_paint(rbutton);
    437 
    438         if (old_selected != rbutton)
    439                 ui_rbutton_selected(rbutton);
    440 }
    441 
    442 /** Notify that button was selected.
     370/** Button was selected.
    443371 *
    444372 * @param rbutton Radio button
Note: See TracChangeset for help on using the changeset viewer.