OtkWidget::OtkWidget(OtkWidget *parent, Direction direction)
: OtkEventHandler(),
_dirty(false), _focused(false),
- _parent(parent), _style(parent->getStyle()), _direction(direction),
- _cursor(parent->getCursor()), _bevel_width(parent->getBevelWidth()),
+ _parent(parent), _style(parent->style()), _direction(direction),
+ _cursor(parent->cursor()), _bevel_width(parent->bevelWidth()),
_ignore_config(0),
_visible(false), _grabbed_mouse(false),
_grabbed_keyboard(false), _stretchable_vert(false),
_stretchable_horz(false), _texture(0), _bg_pixmap(0), _bg_pixel(0),
- _bcolor(0), _bwidth(0), _screen(parent->getScreen()), _fixed_width(false),
- _fixed_height(false), _event_dispatcher(parent->getEventDispatcher())
+ _bcolor(0), _bwidth(0), _screen(parent->screen()), _fixed_width(false),
+ _fixed_height(false), _event_dispatcher(parent->eventDispatcher())
{
assert(parent);
parent->addChild(this);
void OtkWidget::create(void)
{
const ScreenInfo *scr_info = otk::OBDisplay::screenInfo(_screen);
- Window p_window = _parent ? _parent->getWindow() : scr_info->getRootWindow();
+ Window p_window = _parent ? _parent->window() : scr_info->rootWindow();
_rect.setRect(0, 0, 1, 1); // just some initial values
unsigned long create_mask = CWBackPixmap | CWBorderPixel | CWEventMask;
attrib_create.background_pixmap = None;
- attrib_create.colormap = scr_info->getColormap();
+ attrib_create.colormap = scr_info->colormap();
attrib_create.event_mask = ButtonPressMask | ButtonReleaseMask |
ButtonMotionMask | ExposureMask | StructureNotifyMask;
_window = XCreateWindow(otk::OBDisplay::display, p_window, _rect.x(),
_rect.y(), _rect.width(), _rect.height(), 0,
- scr_info->getDepth(), InputOutput,
- scr_info->getVisual(), create_mask, &attrib_create);
+ scr_info->depth(), InputOutput,
+ scr_info->visual(), create_mask, &attrib_create);
_ignore_config++;
}
void OtkWidget::focus(void)
{
-/* if (! _visible)
- return;
-
- XSetInputFocus(otk::OBDisplay::display, _window, RevertToPointerRoot,
- CurrentTime);*/
-
_focused = true;
OtkWidget::OtkWidgetList::iterator it = _children.begin(),
void OtkWidget::render(void)
{
if (!_texture) return;
-
+
_bg_pixmap = _texture->render(_rect.width(), _rect.height(), _bg_pixmap);
- if (_bg_pixmap)
+ if (_bg_pixmap) {
XSetWindowBackgroundPixmap(otk::OBDisplay::display, _window, _bg_pixmap);
- else {
+ _bg_pixel = None;
+ } else {
unsigned int pix = _texture->color().pixel();
if (pix != _bg_pixel) {
_bg_pixel = pix;
void OtkWidget::update(void)
{
if (_dirty) {
- if (! _unmanaged)
adjust();
render();
XClearWindow(OBDisplay::display, _window);
_style = style;
_dirty = true;
- // reset textures/colors
- if (_focused) {
- unfocus();
- focus();
- } else {
- focus();
- unfocus();
- }
-
OtkWidgetList::iterator it, end = _children.end();
for (it = _children.begin(); it != end; ++it)
(*it)->setStyle(style);