aboutsummaryrefslogtreecommitdiff
path: root/src/FbTk/FbWindow.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/FbTk/FbWindow.cc')
-rw-r--r--src/FbTk/FbWindow.cc32
1 files changed, 4 insertions, 28 deletions
diff --git a/src/FbTk/FbWindow.cc b/src/FbTk/FbWindow.cc
index 2209835..5417c09 100644
--- a/src/FbTk/FbWindow.cc
+++ b/src/FbTk/FbWindow.cc
@@ -19,9 +19,10 @@
19// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 19// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20// DEALINGS IN THE SOFTWARE. 20// DEALINGS IN THE SOFTWARE.
21 21
22// $Id: FbWindow.cc,v 1.37 2004/08/31 15:26:39 rathnor Exp $ 22// $Id: FbWindow.cc,v 1.38 2004/09/09 14:29:10 akir Exp $
23 23
24#include "FbWindow.hh" 24#include "FbWindow.hh"
25#include "FbPixmap.hh"
25 26
26#include "EventManager.hh" 27#include "EventManager.hh"
27#include "Color.hh" 28#include "Color.hh"
@@ -43,31 +44,6 @@
43 44
44namespace FbTk { 45namespace FbTk {
45 46
46namespace {
47Pixmap getRootPixmap(int screen_num) {
48 Pixmap root_pm = 0;
49 // get root pixmap for transparency
50 Display *disp = FbTk::App::instance()->display();
51 Atom real_type;
52 int real_format;
53 unsigned long items_read, items_left;
54 unsigned int *data;
55 if (XGetWindowProperty(disp, RootWindow(disp, screen_num),
56 XInternAtom(disp, "_XROOTPMAP_ID", false),
57 0L, 1L,
58 false, XA_PIXMAP, &real_type,
59 &real_format, &items_read, &items_left,
60 (unsigned char **) &data) == Success &&
61 items_read) {
62 root_pm = (Pixmap) (*data);
63 XFree(data);
64 }
65
66 return root_pm;
67}
68
69}; // end anonymous namespace
70
71Display *FbWindow::s_display = 0; 47Display *FbWindow::s_display = 0;
72 48
73FbWindow::FbWindow():m_parent(0), m_screen_num(0), m_window(0), m_x(0), m_y(0), 49FbWindow::FbWindow():m_parent(0), m_screen_num(0), m_window(0), m_x(0), m_y(0),
@@ -207,7 +183,7 @@ void FbWindow::updateTransparent(int the_x, int the_y, unsigned int the_width, u
207 return; 183 return;
208 184
209 // update source and destination if needed 185 // update source and destination if needed
210 Pixmap root = getRootPixmap(screenNumber()); 186 Pixmap root = FbPixmap::getRootPixmap(screenNumber());
211 if (m_transparent->source() != root) 187 if (m_transparent->source() != root)
212 m_transparent->setSource(root, screenNumber()); 188 m_transparent->setSource(root, screenNumber());
213 189
@@ -245,7 +221,7 @@ void FbWindow::updateTransparent(int the_x, int the_y, unsigned int the_width, u
245void FbWindow::setAlpha(unsigned char alpha) { 221void FbWindow::setAlpha(unsigned char alpha) {
246#ifdef HAVE_XRENDER 222#ifdef HAVE_XRENDER
247 if (m_transparent.get() == 0 && alpha < 255) { 223 if (m_transparent.get() == 0 && alpha < 255) {
248 m_transparent.reset(new Transparent(getRootPixmap(screenNumber()), window(), alpha, screenNumber())); 224 m_transparent.reset(new Transparent(FbPixmap::getRootPixmap(screenNumber()), window(), alpha, screenNumber()));
249 } else if (alpha < 255 && alpha != m_transparent->alpha()) 225 } else if (alpha < 255 && alpha != m_transparent->alpha())
250 m_transparent->setAlpha(alpha); 226 m_transparent->setAlpha(alpha);
251 else if (alpha == 255) 227 else if (alpha == 255)