Changeset 25eec4e in mainline for uspace/lib/gui/window.c


Ignore:
Timestamp:
2013-04-19T18:38:18Z (12 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
6d717a4
Parents:
a1e2df13 (diff), 289cb7dd (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.
Message:

Merge mainline chages.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/gui/window.c

    ra1e2df13 r25eec4e  
    3434 */
    3535
    36 #include <bool.h>
     36#include <stdbool.h>
    3737#include <errno.h>
    3838#include <stdio.h>
     
    6666
    6767static pixel_t border_color = PIXEL(255, 0, 0, 0);
    68 static pixel_t header_bgcolor = PIXEL(255, 25, 25, 112);
    69 static pixel_t header_fgcolor = PIXEL(255, 255, 255, 255);
     68static pixel_t header_bg_focus_color = PIXEL(255, 25, 25, 112);
     69static pixel_t header_fg_focus_color = PIXEL(255, 255, 255, 255);
     70static pixel_t header_bg_unfocus_color = PIXEL(255, 70, 130, 180);
     71static pixel_t header_fg_unfocus_color = PIXEL(255, 255, 255, 255);
    7072
    7173static void paint_internal(widget_t *w)
     
    9496            w->vpos + w->height - border_thickness, w->width, border_thickness);
    9597
    96         source_set_color(&source, header_bgcolor);
     98        source_set_color(&source,
     99            w->window->is_focused ? header_bg_focus_color : header_bg_unfocus_color);
    97100        drawctx_transfer(&drawctx,
    98101            w->hpos + border_thickness, w->vpos + border_thickness,
     
    106109        char cls_pict[] = "x";
    107110        font_get_box(&font, cls_pict, &cls_width, &cls_height);
    108         source_set_color(&source, header_fgcolor);
     111        source_set_color(&source,
     112            w->window->is_focused ? header_fg_focus_color : header_fg_unfocus_color);
    109113        sysarg_t cls_x = ((close_width - cls_width) / 2) + w->hpos + w->width -
    110114            border_thickness - close_width;
     
    447451                        break;
    448452                case ET_POSITION_EVENT:
     453                        if (!win->is_focused) {
     454                                win->is_focused = true;
     455                                handle_refresh(win);
     456                        }
    449457                        deliver_position_event(win, event->data.pos);
    450458                        break;
     
    454462                case ET_WINDOW_RESIZE:
    455463                        handle_resize(win, event->data.rsz.width, event->data.rsz.height);
     464                        break;
     465                case ET_WINDOW_FOCUS:
     466                        if (!win->is_focused) {
     467                                win->is_focused = true;
     468                                handle_refresh(win);
     469                        }
     470                        break;
     471                case ET_WINDOW_UNFOCUS:
     472                        if (win->is_focused) {
     473                                win->is_focused = false;
     474                                handle_refresh(win);
     475                        }
    456476                        break;
    457477                case ET_WINDOW_REFRESH:
     
    514534}
    515535
    516 window_t *window_open(char *winreg, bool is_main, bool is_decorated, const char *caption)
     536window_t *window_open(char *winreg, bool is_main, bool is_decorated,
     537    const char *caption, sysarg_t x_offset, sysarg_t y_offset)
    517538{
    518539        int rc;
     
    525546        win->is_main = is_main;
    526547        win->is_decorated = is_decorated;
     548        win->is_focused = true;
    527549        prodcons_initialize(&win->events);
    528550        fibril_mutex_initialize(&win->guard);
     
    557579        service_id_t out_dsid;
    558580       
    559         rc = win_register(reg_sess, &in_dsid, &out_dsid);
     581        rc = win_register(reg_sess, &in_dsid, &out_dsid, x_offset, y_offset);
    560582        async_hangup(reg_sess);
    561583        if (rc != EOK) {
Note: See TracChangeset for help on using the changeset viewer.