Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset db52892a in mainline for uspace/app/edit/edit.c


Ignore:
Timestamp:
2021-09-23T22:38:06Z (2 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
c1c7c20
Parents:
e2ca44f
Message:

Set color for selected text

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/edit/edit.c

    re2ca44f rdb52892a  
    9696        gfx_color_t *color;
    9797
     98        /** Selection color */
     99        gfx_color_t *sel_color;
     100
    98101        /* Pane dimensions */
    99102        int rows, columns;
     
    925928        gfx_rect_t arect;
    926929
     930        pane->control = NULL;
     931        pane->color = NULL;
     932        pane->sel_color = NULL;
     933
    927934        rc = ui_control_new(&pane_ctl_ops, (void *) pane, &pane->control);
    928935        if (rc != EOK)
    929                 return rc;
     936                goto error;
    930937
    931938        rc = gfx_color_new_ega(0x07, &pane->color);
    932         if (rc != EOK) {
    933                 ui_control_delete(pane->control);
    934                 return rc;
    935         }
     939        if (rc != EOK)
     940                goto error;
     941
     942        rc = gfx_color_new_ega(0x1e, &pane->sel_color);
     943        if (rc != EOK)
     944                goto error;
    936945
    937946        pane->res = ui_window_get_res(window);
     
    948957
    949958        return EOK;
     959error:
     960        if (pane->control != NULL) {
     961                ui_control_delete(pane->control);
     962                pane->control = NULL;
     963        }
     964
     965        if (pane->color != NULL) {
     966                gfx_color_delete(pane->color);
     967                pane->color = NULL;
     968        }
     969
     970        return rc;
    950971}
    951972
     
    960981        gfx_color_delete(pane->color);
    961982        pane->color = NULL;
     983        gfx_color_delete(pane->sel_color);
     984        pane->sel_color = NULL;
    962985        ui_control_delete(pane->control);
    963986        pane->control = NULL;
     
    11081131        /* Draw rows from the sheet. */
    11091132
    1110 //      console_set_pos(con, 0, 0);
    11111133        for (i = r0; i < r1; ++i) {
    11121134                tpos.x = pane->rect.p0.x;
     
    11301152                if (coord_cmp(&csel_start, &rbc) <= 0 &&
    11311153                    coord_cmp(&rbc, &csel_end) < 0) {
    1132 //                      console_flush(con);
    1133 //                      console_set_style(con, STYLE_SELECTED);
    1134 //                      console_flush(con);
     1154                        fmt.color = pane->sel_color;
    11351155                }
    11361156
    1137 //              console_set_pos(con, 0, i);
    11381157                size = str_size(row_buf);
    11391158                pos = 0;
    11401159                s_column = pane->sh_column;
    11411160                while (pos < size) {
    1142                         if ((csel_start.row == rbc.row) && (csel_start.column == s_column)) {
    1143 //                              console_flush(con);
    1144 //                              console_set_style(con, STYLE_SELECTED);
    1145 //                              console_flush(con);
    1146                         }
    1147 
    1148                         if ((csel_end.row == rbc.row) && (csel_end.column == s_column)) {
    1149 //                              console_flush(con);
    1150 //                              console_set_style(con, STYLE_NORMAL);
    1151 //                              console_flush(con);
    1152                         }
     1161                        if ((csel_start.row == rbc.row) && (csel_start.column == s_column))
     1162                                fmt.color = pane->sel_color;
     1163
     1164                        if ((csel_end.row == rbc.row) && (csel_end.column == s_column))
     1165                                fmt.color = pane->color;
    11531166
    11541167                        c = str_decode(row_buf, &pos, size);
     
    11871200                }
    11881201
    1189                 if ((csel_end.row == rbc.row) && (csel_end.column == s_column)) {
    1190 //                      console_flush(con);
    1191 //                      console_set_style(con, STYLE_NORMAL);
    1192 //                      console_flush(con);
    1193                 }
     1202                if ((csel_end.row == rbc.row) && (csel_end.column == s_column))
     1203                        fmt.color = pane->color;
    11941204
    11951205                /* Fill until the end of display area. */
Note: See TracChangeset for help on using the changeset viewer.