Commit 116e1fa7373987ff8840f51b66b34267171e97ed

Changes: Bumped changelog + initial support for in-scene statusbar
RevBy: TrustMe
  
1duicompositor (0.3.6~1) karmic; urgency=low
2
3 * New version [UNRELEASED]
4
5 -- Abdiel Janulgue <abj@codefuassasin.research.nokia.com> Sat, 13 Mar 2010 17:20:01 +0200
6
17duicompositor (0.3.5-1) unstable; urgency=low
28
39 * Fixes: NB#157682 Screen blanks with pin query, doesnot revert back to UI either
  
111111
112112 // DUI-specific
113113 _DUI_DECORATOR_WINDOW,
114 _DUI_STATUSBAR_OVERLAY,
114115#ifdef WINDOW_DEBUG
115116 _DUI_WM_INFO,
116117 _DUI_WM_WINDOW_ZVALUE,
126126 static DuiCompAtoms* instance();
127127 Type windowType(Window w);
128128 bool isDecorator(Window w);
129 bool statusBarOverlayed(Window w);
129130 int getPid(Window w);
130131 long getWmState(Window w);
131132 Atom getState(Window w);
204204 atoms[_NET_ACTIVE_WINDOW] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
205205 atoms[_NET_CLOSE_WINDOW] = XInternAtom(dpy, "_NET_CLOSE_WINDOW", False);
206206 atoms[_DUI_DECORATOR_WINDOW] = XInternAtom(dpy, "_DUI_DECORATOR_WINDOW", False);
207 // remove this when statusbar in-scene approach is done
208 atoms[_DUI_STATUSBAR_OVERLAY] = XInternAtom(dpy, "_DUI_STATUSBAR_OVERLAY", False);
207209
208210#ifdef WINDOW_DEBUG
209211 // custom properties for CITA
251251{
252252 return (intValueProperty(w, atoms[_DUI_DECORATOR_WINDOW]) == 1);
253253}
254
255// Remove this when statusbar in-scene approach is done
256bool DuiCompAtoms::statusBarOverlayed(Window w)
257{
258 return (intValueProperty(w, atoms[_DUI_STATUSBAR_OVERLAY]) == 1);
259}
254260
255261int DuiCompAtoms::getPid(Window w)
256262{
487487 }
488488}
489489
490static bool need_geometry_modify(Window window)
491{
492 DuiCompAtoms* atom = DuiCompAtoms::instance();
493
494 if ((atom->getState(window) == ATOM(_NET_WM_STATE_FULLSCREEN)) ||
495 (atom->statusBarOverlayed(window)))
496 return false;
497
498 return true;
499}
500
490501DuiCompositeManagerPrivate::DuiCompositeManagerPrivate(QObject *p)
491502 : QObject(p),
492503 glwidget(0),
742742 return;
743743
744744 // dock changed
745 if (hasDock && (atom->windowType(e->window) == DuiCompAtoms::DOCK)
746 && (atom->getState(e->window) != ATOM(_NET_WM_STATE_FULLSCREEN))){
745 if (hasDock && (atom->windowType(e->window) == DuiCompAtoms::DOCK)) {
747746 dock_region = QRegion(e->x, e->y, e->width, e->height);
748747 QRect r = (QRegion(QApplication::desktop()->screenGeometry()) - dock_region).boundingRect();
749 if (stack[DESKTOP_LAYER])
748 if (stack[DESKTOP_LAYER] && need_geometry_modify(stack[DESKTOP_LAYER]))
750749 XMoveResizeWindow(QX11Info::display(), stack[DESKTOP_LAYER], r.x(), r.y(), r.width(), r.height());
751750
752 if (stack[APPLICATION_LAYER])
751 if (stack[APPLICATION_LAYER] && need_geometry_modify(stack[APPLICATION_LAYER]))
753752 XMoveResizeWindow(QX11Info::display(), stack[APPLICATION_LAYER], r.x(), r.y(), r.width(), r.height());
754753
755 if (stack[INPUT_LAYER])
754 if (stack[INPUT_LAYER] && need_geometry_modify(stack[INPUT_LAYER]))
756755 XMoveResizeWindow(QX11Info::display(), stack[INPUT_LAYER], r.x(), r.y(), r.width(), r.height());
757756 }
758757
811811 || atom->windowType(e->window) == DuiCompAtoms::DESKTOP
812812 || atom->windowType(e->window) == DuiCompAtoms::INPUT)
813813 && (atom->windowType(e->window) != DuiCompAtoms::DOCK)) {
814 if (hasDock && ((dock_region.boundingRect().width() <= a.width) &&
815 (dock_region.boundingRect().height() <= a.height))) {
816 QRect r = (QRegion(a.x, a.y, a.width, a.height) - dock_region).boundingRect();
814 if (hasDock) {
815 QRect r = (QRegion(QApplication::desktop()->screenGeometry()) - dock_region).boundingRect();
817816 if(availScreenRect != r)
818817 availScreenRect = r;
819 if(atom->getState(e->window) != ATOM(_NET_WM_STATE_FULLSCREEN))
818 if(need_geometry_modify(e->window))
820819 XMoveResizeWindow(dpy, e->window, r.x(), r.y(), r.width(), r.height());
821820 } else if ((a.width != xres) && (a.height != yres)) {
822821 XResizeWindow(dpy, e->window, xres, yres);
16111611 // here exactly before compositing was enabled
16121612 // Ensure the changes are visualized immediately
16131613
1614 glwidget->setAttribute(Qt::WA_PaintOutsidePaintEvent);
16151614 QPainter m(glwidget);
16161615 m.drawPixmap(0, 0, QPixmap::grabWindow(QX11Info::appRootWindow()));
16171616 glwidget->update();
16181617 QCoreApplication::flush();
1619 XSync(QX11Info::display(), False);
16201618
16211619 // Freeze painting of framebuffer as of this point
16221620 scene()->views()[0]->setUpdatesEnabled(false);
1623 XMoveWindow(QX11Info::display(), localwin, -2, -2);
16241621 XMapWindow(QX11Info::display(), xoverlay);
1625 XSync(QX11Info::display(), False);
16261622}
16271623
16281624void DuiCompositeManagerPrivate::enableRedirection()
17711771
17721772void DuiCompositeManager::setGLWidget(QGLWidget *glw)
17731773{
1774 glw->setAttribute(Qt::WA_PaintOutsidePaintEvent);
17741775 d->glwidget = glw;
17751776}
17761777
  
4141 view.setWindowFlags(Qt::X11BypassWindowManagerHint);
4242 view.setAttribute(Qt::WA_NoSystemBackground);
4343#if QT_VERSION >= 0x040600
44 view.move(-2, -2);
4544 view.setViewportUpdateMode(QGraphicsView::NoViewportUpdate);
4645 view.setOptimizationFlags(QGraphicsView::IndirectPainting);
4746#endif