Beispiel #1
0
static void reparent(client_t *c, strut_t *s)
{
    XSetWindowAttributes pattr;
    geom_t f;

    f = frame_geom(c);
    pattr.override_redirect = True;
    pattr.background_pixel = bg.pixel;
    pattr.border_pixel = bd.pixel;
    pattr.event_mask = SubMask|ButtonPressMask|ExposureMask|EnterWindowMask;
    c->frame = XCreateWindow(dpy, root, f.x, f.y, f.w, f.h, BW(c),
        DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen),
        CWOverrideRedirect|CWBackPixel|CWBorderPixel|CWEventMask, &pattr);

#ifdef SHAPE
    if (shape) {
        XShapeSelectInput(dpy, c->win, ShapeNotifyMask);
        set_shape(c);
    }
#endif

#ifdef XFT
    c->xftdraw = XftDrawCreate(dpy, (Drawable)c->frame,
        DefaultVisual(dpy, DefaultScreen(dpy)),
        DefaultColormap(dpy, DefaultScreen(dpy)));
#endif

    XAddToSaveSet(dpy, c->win);
    XSelectInput(dpy, c->win, ColormapChangeMask|PropertyChangeMask);
    XSetWindowBorderWidth(dpy, c->win, 0);
    XResizeWindow(dpy, c->win, c->geom.w, c->geom.h);
    XReparentWindow(dpy, c->win, c->frame, 0, frame_height(c));

    send_config(c);
}
Beispiel #2
0
void Text_Display::geom(const Box2i & in)
{
    Abstract_Text_Widget::geom(in);

    const Box2i & geom = frame_geom();

    _widget->resize(geom.x, geom.y, geom.w, geom.h);
}
Beispiel #3
0
void Magnify_Widget::geom(const Box2i & in)
{
    Frame::geom(in);

    _data.set(Pixel_Data_Info(frame_geom().size, Pixel::RGB_U8));
    _data.zero();
    
    _buffer.reset();
}
Beispiel #4
0
void Frame::geom(const Box2i & in)
{
    Fl_Widget::resize(in.x, in.y, in.w, in.h);

    Layout_Item::geom(in);

    if (layout())
    {
        layout()->geom(frame_geom());
    }
}
Beispiel #5
0
void Int_Slider::draw()
{
    const Box2i & geom = this->geom();

    const bool inside = Abstract_Widget::inside();

    fl_color(FL_BACKGROUND2_COLOR);
    fl_rectf(geom.x, geom.y, geom.w, geom.h);

    Abstract_Slider::draw();

    handle_draw(
        min() != max() ?
        ((get() - min()) / static_cast<double>(max() - min())) :
        0.0,
        frame_geom(),
        inside);
}
Beispiel #6
0
void Magnify_Widget::draw()
{
    const Box2i & geom = frame_geom();

    const int w = _data.w();
    const int h = _data.h();
    const int c = _data.channels();

    fl_draw_image(
        _data.data(),
        geom.x,
        geom.y,
        w,
        h,
        c,
        static_cast<int>(_data.bytes_scanline()));

    Frame::draw();
}
Beispiel #7
0
int Int_Slider::handle(int in)
{
    const Box2i & box = frame_geom();

    switch (in)
    {
    case FL_PUSH:
    case FL_DRAG:
    {
        take_focus();

        const int size = handle_size();

        const double v = (
                             Fl::event_x() - box.x - ((size - 1) / 2) +
                             ((box.w - size - 1) / static_cast<double>(max() - min()) / 2)) /
                         static_cast<double>(box.w - size - 1);

        set(min() + static_cast<int>(v * (max() - min())));
    }

    return 1;

    case FL_KEYBOARD:
        if (! Fl::event_state(FL_SHIFT | FL_CTRL | FL_ALT))
        {
            switch (Fl::event_key())
            {
            case FL_Home:
                min_action();
                return 1;

            case FL_End:
                max_action();
                return 1;

            case FL_Left:
            case FL_Down:
                dec_small_action();
                return 1;

            case FL_Right:
            case FL_Up:
                inc_small_action();
                return 1;

            case FL_Page_Down:
                dec_large_action();
                return 1;

            case FL_Page_Up:
                inc_large_action();
                return 1;
            }
        }

        break;
    }

    if (Abstract_Int_Input::handle(in, visible_focus()))
    {
        return 1;
    }

    return Abstract_Slider::handle(in);
}