all repos — openbox @ 010e12c42ac2a1a21886785f3c882c38eeebc66e

openbox fork - make it a bit more like ryudo

only show() if the dialog is not already visible
Dana Jansens danakj@orodu.net
commit

010e12c42ac2a1a21886785f3c882c38eeebc66e

parent

7a41f7730dfa7e5733720f98f89c5a5906f1e786

1 files changed, 16 insertions(+), 3 deletions(-)

jump to
M otk/messagedialog.ccotk/messagedialog.cc

@@ -101,7 +101,8 @@ }

const DialogButton& MessageDialog::run() { - show(); + if (!visible()) + show(); while (visible()) { dispatcher()->dispatchEvents();

@@ -118,11 +119,17 @@ for (it = _buttons.begin(); it != end; ++it)

_button_widgets.push_back(new DialogButtonWidget(_button_holder, this, *it)); + Rect r; + + if (parent()) + r = parent()->area(); + else + r = Rect(Point(0, 0), display->screenInfo(screen())->size()); + XSizeHints size; - size.flags = PMinSize; + size.flags = PMinSize | PPosition; size.min_width = minSize().width(); size.min_height = minSize().height(); - XSetWMNormalHints(**display, window(), &size); Size dest = area().size(); if (dest.width() < 200 || dest.height() < 100) {

@@ -132,6 +139,12 @@ else dest = Size(dest.width(), 100);

resize(dest); } + // center it above its parent + move(Point(r.x() + (r.width() - dest.width()) / 2, + r.y() + (r.height() - dest.height()) / 2)); + + XSetWMNormalHints(**display, window(), &size); + Widget::show(); }