Changeset 8a9a41e in mainline for uspace/lib/ui/src/rbutton.c


Ignore:
Timestamp:
2021-10-24T08:28:43Z (2 years ago)
Author:
GitHub <noreply@…>
Children:
f628215
Parents:
2ce943a (diff), cd981f2a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
Erik Kučák <35500848+Riko196@…> (2021-10-24 08:28:43)
git-committer:
GitHub <noreply@…> (2021-10-24 08:28:43)
Message:

Merge branch 'HelenOS:master' into master

File:
1 edited

Legend:

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

    r2ce943a r8a9a41e  
    186186}
    187187
    188 /** Paint radio button.
     188/** Paint radio button in graphics mode.
    189189 *
    190190 * @param rbutton Radio button
    191191 * @return EOK on success or an error code
    192192 */
    193 errno_t ui_rbutton_paint(ui_rbutton_t *rbutton)
     193errno_t ui_rbutton_paint_gfx(ui_rbutton_t *rbutton)
    194194{
    195195        gfx_coord2_t pos;
     
    202202        center.y = rbutton->rect.p0.y + rbutton_oframe_r;
    203203
    204         /* Paint rbutton frame */
     204        /* Paint radio button frame */
    205205
    206206        rc = gfx_set_color(rbutton->group->res->gc,
     
    244244                goto error;
    245245
    246         /* Paint rbutton interior */
     246        /* Paint radio button 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 */
     303errno_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;
     344error:
     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 */
     353errno_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
    298361/** Press down button.
    299362 *
     
    316379void ui_rbutton_release(ui_rbutton_t *rbutton)
    317380{
    318         ui_rbutton_t *old_selected;
    319 
    320381        if (!rbutton->held)
    321382                return;
     
    325386        if (rbutton->inside) {
    326387                /* Activate radio button */
    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);
     388                ui_rbutton_select(rbutton);
    339389        }
    340390}
     
    368418}
    369419
    370 /** Button was selected.
     420/** Select radio button.
     421 *
     422 * @param rbutton Radio button
     423 */
     424void 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.
    371443 *
    372444 * @param rbutton Radio button
Note: See TracChangeset for help on using the changeset viewer.