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); }
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); }
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(); }
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()); } }
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); }
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(); }
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); }