re-enable alphablend
[enigma2.git] / lib / gui / ewidgetdesktop.cpp
index d8de2aec2ad7d56c6e9b04b8a0c88d94f5a1a397..78c9fbcfec4123f947b8932383e86ab1baab04e1 100644 (file)
@@ -18,7 +18,7 @@ void eWidgetDesktop::addRootWidget(eWidget *root)
        
        for (;;)
        {
-               if ((insert_position == m_root.end()) || (invert_sense ^ (insert_position->m_z_position >= root->m_z_position)))
+               if ((insert_position == m_root.end()) || (invert_sense ^ (insert_position->m_z_position < root->m_z_position)))
                {
                        m_root.insert(insert_position, root);
                        break;
@@ -227,7 +227,6 @@ void eWidgetDesktop::paintBackground(eWidgetDesktopCompBuffer *comp)
        painter.resetClip(comp->m_dirty_region);
        painter.setBackgroundColor(comp->m_background_color);
        painter.clear();
-       painter.flush();
        
        comp->m_dirty_region = gRegion();
 }
@@ -287,6 +286,11 @@ void eWidgetDesktop::setRedrawTask(eMainloop &ml)
                m_timer->start(0, 1);
 }
 
+void eWidgetDesktop::makeCompatiblePixmap(ePtr<gPixmap> &pm)
+{
+       makeCompatiblePixmap(*(pm.operator->()));
+}
+
 void eWidgetDesktop::makeCompatiblePixmap(gPixmap &pm)
 {
        if (m_comp_mode != cmImmediate)
@@ -299,14 +303,17 @@ void eWidgetDesktop::makeCompatiblePixmap(gPixmap &pm)
                return;
        }
 
-       ePtr<gDC> pixmap_dc = new gDC(&pm);
-       gPainter pixmap_painter(pixmap_dc);
-       
        ePtr<gPixmap> target_pixmap;
        m_screen.m_dc->getPixmap(target_pixmap);
        
        assert(target_pixmap);
        
+       if (target_pixmap->surface && target_pixmap->surface->bpp > 8)
+               return;
+
+       ePtr<gDC> pixmap_dc = new gDC(&pm);
+       gPainter pixmap_painter(pixmap_dc);
+       
        pixmap_painter.mergePalette(target_pixmap);
 }
 
@@ -327,6 +334,7 @@ eWidgetDesktop::eWidgetDesktop(eSize size): m_mainloop(0), m_timer(0)
        m_screen.m_dirty_region = gRegion(eRect(ePoint(0, 0), size));
        m_screen.m_screen_size = size;
        m_require_redraw = 0;
+       m_style_id = 0;
 
        CONNECT(gRC::getInstance()->notify, eWidgetDesktop::notify);
        setCompositionMode(cmImmediate);