blob: d1ae736959e4a3507c0ecba69c43df290ef9167c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
#ifdef HAVE_CONFIG_H
# include "../config.h"
#endif
#include "appwidget.hh"
#include "application.hh"
#include "property.hh"
extern "C" {
#include <X11/Xlib.h>
}
namespace otk {
AppWidget::AppWidget(Application *app, Direction direction,
Cursor cursor, int bevel_width)
: Widget(app, app->getStyle(), direction, cursor, bevel_width),
_application(app)
{
assert(app);
_wm_protocols = Property::atoms.wm_protocols;
_wm_delete = Property::atoms.wm_protocols;
// set WM Protocols on the window
Atom protocols[2];
protocols[0] = _wm_protocols;
protocols[1] = _wm_delete;
XSetWMProtocols(**display, window(), protocols, 2);
}
AppWidget::~AppWidget()
{
}
void AppWidget::show(void)
{
Widget::show(true);
_application->_appwidget_count++;
}
void AppWidget::hide(void)
{
Widget::hide();
_application->_appwidget_count--;
}
void AppWidget::clientMessageHandler(const XClientMessageEvent &e)
{
EventHandler::clientMessageHandler(e);
if (e.message_type == _wm_protocols &&
static_cast<Atom>(e.data.l[0]) == _wm_delete)
hide();
}
}
|