diff options
| author | 2010-10-07 19:39:41 +0000 | |
|---|---|---|
| committer | 2010-10-07 19:39:41 +0000 | |
| commit | 8dd24ab63ee42d33bdf677f0bfe3481516a6c095 (patch) | |
| tree | 339095025d9cd7ad994442663377c4e31d988559 /src | |
| parent | cleaned code (diff) | |
| download | KVIrc-8dd24ab63ee42d33bdf677f0bfe3481516a6c095.tar.gz KVIrc-8dd24ab63ee42d33bdf677f0bfe3481516a6c095.tar.bz2 KVIrc-8dd24ab63ee42d33bdf677f0bfe3481516a6c095.zip | |
reverted r5041, r5038, r5036
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5044 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvirc/kernel/kvi_app.cpp | 42 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_frame.cpp | 28 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_frame.h | 4 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_input_editor.cpp | 27 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_irctoolbar.cpp | 1 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_ircview.cpp | 19 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_mdichild.cpp | 22 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_mdichild.h | 13 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_mdimanager.cpp | 3 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_menubar.cpp | 1 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_statusbar.cpp | 2 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_statusbarapplet.cpp | 1 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_themedcombobox.cpp | 7 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_themedlabel.cpp | 14 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_themedlineedit.cpp | 8 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_themedtreewidget.cpp | 11 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_topicw.cpp | 1 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_userlistview.cpp | 16 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_window.cpp | 1 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_windowlist_tree.cpp | 5 | ||||
| -rw-r--r-- | src/modules/options/optw_interfacelookglobal.cpp | 48 | ||||
| -rw-r--r-- | src/modules/options/optw_interfacelookglobal.h | 6 |
22 files changed, 183 insertions, 97 deletions
diff --git a/src/kvirc/kernel/kvi_app.cpp b/src/kvirc/kernel/kvi_app.cpp index 7bcceecae..1b15fbc3f 100644 --- a/src/kvirc/kernel/kvi_app.cpp +++ b/src/kvirc/kernel/kvi_app.cpp @@ -161,6 +161,10 @@ QPixmap * g_pActivityMeterPixmap = 0; KVIRC_API QPixmap * g_pShadedParentGlobalDesktopBackground = 0; // the pixmap that we use for MdiManager KVIRC_API QPixmap * g_pShadedChildGlobalDesktopBackground = 0; // the pixmap that we use for MdiChild + #if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) + #include <winuser.h> + #include <QDesktopWidget> + #endif #endif #ifdef COMPILE_CRYPT_SUPPORT @@ -1182,18 +1186,50 @@ void KviApp::updatePseudoTransparency() m_bUpdatePseudoTransparencyPending = false; if(KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency)) { +#if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) + //TODO this has been tested only under mingw! + //TODO this needs winxp: #if (_WIN32_WINNT >= 0x0501) + if(KVI_OPTION_BOOL(KviOption_boolUseWindowsDesktopForTransparency)) + { + QSize size = g_pApp->desktop()->screenGeometry(g_pApp->desktop()->primaryScreen()).size(); + // get the Program Manager + HWND hWnd = FindWindow ("Progman", "Program Manager"); + // Create and setup bitmap + HDC bitmap_dc = CreateCompatibleDC(qt_win_display_dc()); + HBITMAP bitmap = CreateCompatibleBitmap(qt_win_display_dc(), size.width(), size.height()); + HGDIOBJ null_bitmap = SelectObject(bitmap_dc, bitmap); + + PrintWindow (hWnd, bitmap_dc, 0); + + SelectObject(bitmap_dc, null_bitmap); + DeleteDC(bitmap_dc); + + QPixmap pix = QPixmap::fromWinHBITMAP(bitmap); + + DeleteObject(bitmap); + + createGlobalBackgrounds(&pix); + } else +#endif // COMPILE_ON_WINDOWS || COMPILE_ON_MINGW + if(KVI_OPTION_PIXMAP(KviOption_pixmapGlobalTransparencyBackground).pixmap()) { createGlobalBackgrounds(KVI_OPTION_PIXMAP(KviOption_pixmapGlobalTransparencyBackground).pixmap()); } else { //destroy pseudo transparency pixmaps - destroyPseudoTransparency(); - //if we get here, no pseudo transparency method can be used / is enabled. test real transparency methods + destroyPseudoTransparency(); + //if we get here, no pseudo transparency method can be used / is enabled. +#ifdef COMPILE_X11_SUPPORT + //under x11, we still have to check real transparency methods if(!KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency)) { //real transparency is off => turn off transparency support at all KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) = false; } +#else + // on other platforms, no way to proceed + KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) = false; +#endif // COMPILE_X11_SUPPORT } } else { //transparency is disabled @@ -1243,7 +1279,7 @@ void KviApp::loadRecentEntries() getLocalKvircDirectory(szTmp,Config,KVI_CONFIGFILE_RECENT); KviConfig cfg(szTmp,KviConfig::Read); *g_pRecentTopicList = cfg.readStringListEntry("RecentTopicList",QStringList()); - // *g_pBookmarkList = cfg.readStringListEntry("Bookmarks",QStringList()); + //*g_pBookmarkList = cfg.readStringListEntry("Bookmarks",QStringList()); } void KviApp::saveRecentEntries() diff --git a/src/kvirc/ui/kvi_frame.cpp b/src/kvirc/ui/kvi_frame.cpp index 1fa1f9bf4..e7d155aff 100644 --- a/src/kvirc/ui/kvi_frame.cpp +++ b/src/kvirc/ui/kvi_frame.cpp @@ -78,7 +78,6 @@ #ifdef COMPILE_PSEUDO_TRANSPARENCY #include <QPixmap> - #include <QPainter> // kvi_app.h extern QPixmap * g_pShadedParentGlobalDesktopBackground; extern QPixmap * g_pShadedChildGlobalDesktopBackground; @@ -94,6 +93,10 @@ KviFrame::KviFrame() : KviTalMainWindow(0,"kvirc_frame") { g_pFrame = this; + setAutoFillBackground(false); + setAttribute(Qt::WA_TranslucentBackground); + //disable this flag that gets enabled by qt when using Qt::WA_TranslucentBackground + setAttribute(Qt::WA_NoSystemBackground, false); setWindowIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_KVIRC))); m_pWinList = new KviPointerList<KviWindow>; @@ -836,7 +839,6 @@ void KviFrame::updatePseudoTransparency() #ifdef COMPILE_PSEUDO_TRANSPARENCY uint uOpacity = KVI_OPTION_UINT(KviOption_uintGlobalWindowOpacityPercent) < 50 ? 50 : KVI_OPTION_UINT(KviOption_uintGlobalWindowOpacityPercent); setWindowOpacity((float) uOpacity / 100); - if(g_pShadedParentGlobalDesktopBackground)m_pMdi->viewport()->update(); if(g_pShadedChildGlobalDesktopBackground) @@ -844,15 +846,6 @@ void KviFrame::updatePseudoTransparency() for(KviWindow * wnd = m_pWinList->first();wnd;wnd = m_pWinList->next())wnd->updateBackgrounds(); m_pWindowList->updatePseudoTransparency(); } - - if(KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency) && g_pApp->supportsCompositing()) - { - setAttribute(Qt::WA_TranslucentBackground); - setAttribute(Qt::WA_NoSystemBackground); - } else { - setAttribute(Qt::WA_TranslucentBackground, false); - setAttribute(Qt::WA_NoSystemBackground, false); - } #endif } @@ -1161,19 +1154,6 @@ void KviFrame::setUsesBigPixmaps(bool bUse) } } } - -#ifdef COMPILE_PSEUDO_TRANSPARENCY -void KviFrame::paintEvent(QPaintEvent *e) -{ - if(KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency) && g_pApp->supportsCompositing()) - { - QPainter *p = new QPainter(this); - p->fillRect(e->rect(), palette().brush(QPalette::Window)); - delete p; - } -} -#endif - #ifndef COMPILE_USE_STANDALONE_MOC_SOURCES #include "kvi_frame.moc" #endif //!COMPILE_USE_STANDALONE_MOC_SOURCES diff --git a/src/kvirc/ui/kvi_frame.h b/src/kvirc/ui/kvi_frame.h index 9a7e06e53..d9b31147a 100644 --- a/src/kvirc/ui/kvi_frame.h +++ b/src/kvirc/ui/kvi_frame.h @@ -205,9 +205,7 @@ protected: virtual bool focusNextPrevChild(bool next); virtual void changeEvent(QEvent * event); virtual void contextMenuEvent(QContextMenuEvent * event); -#ifdef COMPILE_PSEUDO_TRANSPARENCY - virtual void paintEvent ( QPaintEvent * event ); -#endif + void updatePseudoTransparency(); void installAccelerators(); protected slots: diff --git a/src/kvirc/ui/kvi_input_editor.cpp b/src/kvirc/ui/kvi_input_editor.cpp index e55d5db4f..dbf6f027e 100644 --- a/src/kvirc/ui/kvi_input_editor.cpp +++ b/src/kvirc/ui/kvi_input_editor.cpp @@ -111,6 +111,8 @@ KviInputEditor::KviInputEditor(QWidget * pPar, KviWindow * pWnd, KviUserListView setAttribute(Qt::WA_InputMethodEnabled, true); + setAutoFillBackground(false); + setFocusPolicy(Qt::StrongFocus); setAcceptDrops(true); @@ -231,28 +233,28 @@ QSize KviInputEditor::sizeHint() const void KviInputEditor::paintEvent(QPaintEvent *) { - QPainter *p = new QPainter(this); + QPainter p(this); #ifdef COMPILE_PSEUDO_TRANSPARENCY if(KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency) && g_pApp->supportsCompositing()) { - p->save(); - p->setCompositionMode(QPainter::CompositionMode_Source); + p.save(); + p.setCompositionMode(QPainter::CompositionMode_Source); QColor col=KVI_OPTION_COLOR(KviOption_colorGlobalTransparencyFade); col.setAlphaF((float)((float)KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) / (float)100)); - p->fillRect(contentsRect(), col); - p->restore(); + p.fillRect(contentsRect(), col); + p.restore(); } else if(g_pShadedChildGlobalDesktopBackground) { QPoint pnt = m_pKviWindow->mdiParent() ? mapTo(g_pFrame, contentsRect().topLeft() + g_pFrame->mdiManager()->scrollBarsOffset()) : mapTo(m_pKviWindow, contentsRect().topLeft()); - p->drawTiledPixmap(contentsRect(),*(g_pShadedChildGlobalDesktopBackground), pnt); + p.drawTiledPixmap(contentsRect(),*(g_pShadedChildGlobalDesktopBackground), pnt); } else { #endif - p->fillRect(contentsRect(),KVI_OPTION_COLOR(KviOption_colorInputBackground)); + p.fillRect(contentsRect(),KVI_OPTION_COLOR(KviOption_colorInputBackground)); QPixmap * pix = KVI_OPTION_PIXMAP(KviOption_pixmapLabelBackground).pixmap(); if(pix) - KviPixmapUtils::drawPixmapWithPainter(p,pix,KVI_OPTION_UINT(KviOption_uintTreeWindowListPixmapAlign),contentsRect(),contentsRect().width(),contentsRect().height()); + KviPixmapUtils::drawPixmapWithPainter(&p,pix,KVI_OPTION_UINT(KviOption_uintTreeWindowListPixmapAlign),contentsRect(),contentsRect().width(),contentsRect().height()); #ifdef COMPILE_PSEUDO_TRANSPARENCY } #endif @@ -271,7 +273,7 @@ void KviInputEditor::paintEvent(QPaintEvent *) //option.state &= ~(QStyle::State_HasFocus | QStyle::State_Active | QStyle::State_MouseOver); // kill any state that will cause an "active" frame to be painted option.features = QStyleOptionFrameV2::None; - style()->drawPrimitive(QStyle::PE_FrameLineEdit, &option, p, this); + style()->drawPrimitive(QStyle::PE_FrameLineEdit, &option, &p, this); QRect r = style()->subElementRect(QStyle::SE_LineEditContents, &option, this); @@ -280,11 +282,10 @@ void KviInputEditor::paintEvent(QPaintEvent *) r.setRight(r.right() - KVI_INPUT_MARGIN - KVI_INPUT_PADDING); r.setBottom(r.bottom() - KVI_INPUT_MARGIN - KVI_INPUT_PADDING); - p->setClipRect(r); + p.setClipRect(r); - p->translate(r.topLeft()); - drawContents(p); - delete p; + p.translate(r.topLeft()); + drawContents(&p); } void KviInputEditor::drawContents(QPainter * p) diff --git a/src/kvirc/ui/kvi_irctoolbar.cpp b/src/kvirc/ui/kvi_irctoolbar.cpp index 4c5d114e4..9b54eb0ff 100644 --- a/src/kvirc/ui/kvi_irctoolbar.cpp +++ b/src/kvirc/ui/kvi_irctoolbar.cpp @@ -69,6 +69,7 @@ KviToolBarGraphicalApplet::KviToolBarGraphicalApplet(QWidget * par,const char * g_pToolBarGraphicalAppletList->append(this); + setAutoFillBackground(false); setMouseTracking(true); m_bResizeMode = false; diff --git a/src/kvirc/ui/kvi_ircview.cpp b/src/kvirc/ui/kvi_ircview.cpp index e52410d57..8d8b47a07 100644 --- a/src/kvirc/ui/kvi_ircview.cpp +++ b/src/kvirc/ui/kvi_ircview.cpp @@ -223,12 +223,13 @@ KviIrcView::KviIrcView(QWidget *parent,KviFrame *pFrm,KviWindow *pWnd) : QWidget(parent) { setObjectName("irc_view"); - setAttribute(Qt::WA_NoSystemBackground); - setAttribute(Qt::WA_OpaquePaintEvent); - // Ok...here we go // initialize the initializable + setAttribute(Qt::WA_NoSystemBackground); // This disables automatic qt double buffering +// setAttribute(Qt::WA_OpaquePaintEvent); +// setAttribute(Qt::WA_PaintOnScreen); // disable qt backing store (that would force us to trigger repaint() instead of the 10 times faster paintEvent(0)) + m_iFlushTimer = 0; m_pToolsPopup = 0; m_pFirstLine = 0; @@ -284,6 +285,9 @@ KviIrcView::KviIrcView(QWidget *parent,KviFrame *pFrm,KviWindow *pWnd) m_pMessagesStoppedWhileSelecting = new KviPointerList<KviIrcViewLine>; m_pMessagesStoppedWhileSelecting->setAutoDelete(false); + // say qt to avoid erasing on repaint + setAutoFillBackground(false); + m_pFm = 0; // will be updated in the first paint event m_iFontDescent = 0; m_iFontLineSpacing = 0; @@ -293,6 +297,7 @@ KviIrcView::KviIrcView(QWidget *parent,KviFrame *pFrm,KviWindow *pWnd) // Create the scroll bar m_pScrollBar = new QScrollBar(Qt::Vertical,this); + m_pScrollBar->setAutoFillBackground(true); m_pScrollBar->setMaximum(0); m_pScrollBar->setMinimum(0); m_pScrollBar->setSingleStep(1); @@ -302,7 +307,7 @@ KviIrcView::KviIrcView(QWidget *parent,KviFrame *pFrm,KviWindow *pWnd) m_pScrollBar->setTracking(true); m_pScrollBar->show(); m_pScrollBar->setFocusProxy(this); - m_pScrollBar->setAutoFillBackground(true); + m_pToolsButton = new QToolButton(this); m_pToolsButton->setObjectName("btntools"); @@ -1029,13 +1034,14 @@ void KviIrcView::paintEvent(QPaintEvent *p) /* * Profane description: we start the real paint here: set some geometry, a font, and paint the background */ - int rectTop = r.y(); int rectHeight = r.height(); int rectBottom = rectTop + rectHeight; QPainter pa(this); + SET_ANTI_ALIASING(pa); + pa.setFont(font()); if(!m_pFm) { @@ -1044,7 +1050,6 @@ void KviIrcView::paintEvent(QPaintEvent *p) // by font(). recalcFontVariables(QFontMetrics(pa.font()),pa.fontInfo()); } - pa.setClipRect(0, 0, widgetWidth, widgetHeight); #ifdef COMPILE_PSEUDO_TRANSPARENCY if(KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency) && g_pApp->supportsCompositing()) @@ -1053,7 +1058,7 @@ void KviIrcView::paintEvent(QPaintEvent *p) pa.setCompositionMode(QPainter::CompositionMode_Source); QColor col=KVI_OPTION_COLOR(KviOption_colorGlobalTransparencyFade); col.setAlphaF((float)((float)KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) / (float)100)); - pa.fillRect(r, col); + pa.fillRect(rect(), col); pa.restore(); } else if(g_pShadedChildGlobalDesktopBackground) { diff --git a/src/kvirc/ui/kvi_mdichild.cpp b/src/kvirc/ui/kvi_mdichild.cpp index 76bef38a8..286b6fea5 100644 --- a/src/kvirc/ui/kvi_mdichild.cpp +++ b/src/kvirc/ui/kvi_mdichild.cpp @@ -66,6 +66,8 @@ KviMdiChild::KviMdiChild(KviMdiManager * par, const char * name) connect(systemMenu(), SIGNAL(aboutToShow()), this, SLOT(updateSystemPopup())); connect(this, SIGNAL(windowStateChanged(Qt::WindowStates, Qt::WindowStates)), this, SLOT(windowStateChangedEvent(Qt::WindowStates, Qt::WindowStates))); + + QTimer::singleShot( 0, this, SLOT(transparencyWorkaround())); } KviMdiChild::~KviMdiChild() @@ -78,6 +80,11 @@ KviMdiChild::~KviMdiChild() m_pManager->focusPreviousTopChild(); } +void KviMdiChild::transparencyWorkaround() +{ + setAutoFillBackground(true); +} + void KviMdiChild::setRestoredGeometry(const QRect &r) { setGeometry(r); @@ -203,6 +210,21 @@ void KviMdiChild::updateCaption() } } +void KviMdiChild::moveEvent(QMoveEvent *e) +{ +#ifdef COMPILE_PSEUDO_TRANSPARENCY + //this is not needed for real transparency using compositing + if(m_pClient && g_pShadedChildGlobalDesktopBackground) + { + if(m_pClient->inherits("KviWindow")) // actually this is always the case + { + ((KviWindow *)m_pClient)->updateBackgrounds(); + } + } +#endif + QMdiSubWindow::moveEvent(e); +} + void KviMdiChild::setClient(QWidget * w) { KVI_ASSERT(m_pClient==0); diff --git a/src/kvirc/ui/kvi_mdichild.h b/src/kvirc/ui/kvi_mdichild.h index 7cc9e37f0..65593b7f8 100644 --- a/src/kvirc/ui/kvi_mdichild.h +++ b/src/kvirc/ui/kvi_mdichild.h @@ -170,6 +170,12 @@ public: void activate(); protected: /** + * \brief Updates the widget background when moving + * \return void + */ + virtual void moveEvent(QMoveEvent * e); + + /** * \brief Hooks into close event to make user decisions possible * \return void */ @@ -209,6 +215,13 @@ private slots: * \return void */ void updateSystemPopup(); + + /** + * \brief This is an ugly woraround for qt 4.6.1 that otherway will display the first console window as transparent + * \return void + */ + void transparencyWorkaround(); + }; #endif //_KVI_MDICHILD_H_ diff --git a/src/kvirc/ui/kvi_mdimanager.cpp b/src/kvirc/ui/kvi_mdimanager.cpp index 2f80a9947..4e5565676 100644 --- a/src/kvirc/ui/kvi_mdimanager.cpp +++ b/src/kvirc/ui/kvi_mdimanager.cpp @@ -79,6 +79,9 @@ KviMdiManager::KviMdiManager(QWidget * parent,KviFrame * pFrm,const char *) m_pTileMethodPopup = new KviTalPopupMenu(this); connect(m_pTileMethodPopup,SIGNAL(activated(int)),this,SLOT(tileMethodMenuActivated(int))); connect(this, SIGNAL(subWindowActivated(QMdiSubWindow *)), this, SLOT(slotSubWindowActivated(QMdiSubWindow *))); + + setAutoFillBackground(false); + viewport()->setAutoFillBackground(false); setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); diff --git a/src/kvirc/ui/kvi_menubar.cpp b/src/kvirc/ui/kvi_menubar.cpp index 63c6b6ee3..5f7eb35ba 100644 --- a/src/kvirc/ui/kvi_menubar.cpp +++ b/src/kvirc/ui/kvi_menubar.cpp @@ -44,6 +44,7 @@ KviMenuBar::KviMenuBar(KviFrame * par,const char * name) : KviTalMenuBar(par,name) { + setAutoFillBackground(false); m_pFrm = par; KviTalPopupMenu * pop = new KviTalPopupMenu(this,"KVIrc"); diff --git a/src/kvirc/ui/kvi_statusbar.cpp b/src/kvirc/ui/kvi_statusbar.cpp index fcd10de98..512fda21f 100644 --- a/src/kvirc/ui/kvi_statusbar.cpp +++ b/src/kvirc/ui/kvi_statusbar.cpp @@ -54,6 +54,8 @@ KviStatusBar::KviStatusBar(KviFrame * pFrame) : QStatusBar(pFrame) { + setAutoFillBackground(false); + setProperty("name","statusbar"); m_pFrame = pFrame; // ugh :D diff --git a/src/kvirc/ui/kvi_statusbarapplet.cpp b/src/kvirc/ui/kvi_statusbarapplet.cpp index 7cacec194..3f4ff317c 100644 --- a/src/kvirc/ui/kvi_statusbarapplet.cpp +++ b/src/kvirc/ui/kvi_statusbarapplet.cpp @@ -103,6 +103,7 @@ void KviStatusBarAppletDescriptor::unregisterApplet(KviStatusBarApplet * a) KviStatusBarApplet::KviStatusBarApplet(KviStatusBar * pParent, KviStatusBarAppletDescriptor * pDescriptor) : QLabel(pParent), m_pStatusBar(pParent), m_pDescriptor(pDescriptor) { + setAutoFillBackground(false); m_pDescriptor->registerApplet(this); m_pStatusBar->registerApplet(this); } diff --git a/src/kvirc/ui/kvi_themedcombobox.cpp b/src/kvirc/ui/kvi_themedcombobox.cpp index 46a743f42..bd403281e 100644 --- a/src/kvirc/ui/kvi_themedcombobox.cpp +++ b/src/kvirc/ui/kvi_themedcombobox.cpp @@ -44,6 +44,7 @@ KviThemedComboBox::KviThemedComboBox(QWidget * par, KviWindow * pWindow, const c { setObjectName(name); m_pKviWindow = pWindow; + setAutoFillBackground(true); applyOptions(); } @@ -117,11 +118,11 @@ void KviThemedComboBox::paintEvent ( QPaintEvent * event ) p->setCompositionMode(QPainter::CompositionMode_Source); QColor col=KVI_OPTION_COLOR(KviOption_colorGlobalTransparencyFade); col.setAlphaF((float)((float)KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) / (float)100)); - p->fillRect(event->rect(), col); + p->fillRect(contentsRect(), col); } else if(g_pShadedChildGlobalDesktopBackground) { - QPoint pnt = m_pKviWindow->mdiParent() ? mapTo(g_pFrame, event->rect().topLeft() + g_pFrame->mdiManager()->scrollBarsOffset()) : mapTo(m_pKviWindow, event->rect().topLeft()); - p->drawTiledPixmap(event->rect(),*(g_pShadedChildGlobalDesktopBackground), pnt); + QPoint pnt = m_pKviWindow->mdiParent() ? mapTo(g_pFrame, contentsRect().topLeft() + g_pFrame->mdiManager()->scrollBarsOffset()) : mapTo(m_pKviWindow, contentsRect().topLeft()); + p->drawTiledPixmap(contentsRect(),*(g_pShadedChildGlobalDesktopBackground), pnt); } delete p; #endif diff --git a/src/kvirc/ui/kvi_themedlabel.cpp b/src/kvirc/ui/kvi_themedlabel.cpp index eba722d01..406d234a5 100644 --- a/src/kvirc/ui/kvi_themedlabel.cpp +++ b/src/kvirc/ui/kvi_themedlabel.cpp @@ -32,7 +32,6 @@ #include "kvi_mdimanager.h" #include <QPainter> -#include <QStyleOptionFrameV2> #ifdef COMPILE_PSEUDO_TRANSPARENCY extern QPixmap * g_pShadedChildGlobalDesktopBackground; @@ -45,6 +44,7 @@ KviThemedLabel::KviThemedLabel(QWidget * par, KviWindow * pWindow,const char * n m_pKviWindow = pWindow; setFrameStyle(QFrame::Sunken | QFrame::StyledPanel); setContentsMargins(2,2,2,2); + setAutoFillBackground(false); applyOptions(); } @@ -73,26 +73,24 @@ void KviThemedLabel::applyOptions() update(); } -void KviThemedLabel::paintEvent(QPaintEvent *event) +void KviThemedLabel::paintEvent(QPaintEvent *e) { #ifdef COMPILE_PSEUDO_TRANSPARENCY QPainter *p = new QPainter(this); - p->setClipRect(contentsRect()); - if(KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency) && g_pApp->supportsCompositing()) { p->setCompositionMode(QPainter::CompositionMode_Source); QColor col=KVI_OPTION_COLOR(KviOption_colorGlobalTransparencyFade); col.setAlphaF((float)((float)KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) / (float)100)); - p->fillRect(event->rect(), col); + p->fillRect(contentsRect(), col); } else if(g_pShadedChildGlobalDesktopBackground) { - QPoint pnt = m_pKviWindow->mdiParent() ? mapTo(g_pFrame, event->rect().topLeft() + g_pFrame->mdiManager()->scrollBarsOffset()) : mapTo(m_pKviWindow, event->rect().topLeft()); - p->drawTiledPixmap(event->rect(),*(g_pShadedChildGlobalDesktopBackground), pnt); + QPoint pnt = m_pKviWindow->mdiParent() ? mapTo(g_pFrame, contentsRect().topLeft() + g_pFrame->mdiManager()->scrollBarsOffset()) : mapTo(m_pKviWindow, contentsRect().topLeft()); + p->drawTiledPixmap(contentsRect(),*(g_pShadedChildGlobalDesktopBackground), pnt); } delete p; #endif - QLabel::paintEvent(event); + QLabel::paintEvent(e); } void KviThemedLabel::mouseDoubleClickEvent(QMouseEvent *) diff --git a/src/kvirc/ui/kvi_themedlineedit.cpp b/src/kvirc/ui/kvi_themedlineedit.cpp index 300cb7606..9cea83ea7 100644 --- a/src/kvirc/ui/kvi_themedlineedit.cpp +++ b/src/kvirc/ui/kvi_themedlineedit.cpp @@ -43,6 +43,7 @@ KviThemedLineEdit::KviThemedLineEdit(QWidget * par, KviWindow * pWindow,const ch { setObjectName(name); m_pKviWindow = pWindow; + setAutoFillBackground(false); setContentsMargins(2,2,2,2); applyOptions(); } @@ -103,15 +104,16 @@ void KviThemedLineEdit::paintEvent ( QPaintEvent * event ) p->setCompositionMode(QPainter::CompositionMode_Source); QColor col=KVI_OPTION_COLOR(KviOption_colorGlobalTransparencyFade); col.setAlphaF((float)((float)KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) / (float)100)); - p->fillRect(event->rect(), col); + p->fillRect(contentsRect(), col); + p->restore(); } else if(g_pShadedChildGlobalDesktopBackground) { QPoint pnt; if(m_pKviWindow) - pnt = m_pKviWindow->mdiParent() ? mapTo(g_pFrame, event->rect().topLeft() + g_pFrame->mdiManager()->scrollBarsOffset()) : mapTo(m_pKviWindow, event->rect().topLeft()); + pnt = m_pKviWindow->mdiParent() ? mapTo(g_pFrame, contentsRect().topLeft() + g_pFrame->mdiManager()->scrollBarsOffset()) : mapTo(m_pKviWindow, contentsRect().topLeft()); else pnt = mapToGlobal(event->rect().topLeft()); - p->drawTiledPixmap(event->rect(),*(g_pShadedChildGlobalDesktopBackground), pnt); + p->drawTiledPixmap(contentsRect(),*(g_pShadedChildGlobalDesktopBackground), pnt); } delete p; #endif diff --git a/src/kvirc/ui/kvi_themedtreewidget.cpp b/src/kvirc/ui/kvi_themedtreewidget.cpp index a8060a2d0..dd2042d65 100644 --- a/src/kvirc/ui/kvi_themedtreewidget.cpp +++ b/src/kvirc/ui/kvi_themedtreewidget.cpp @@ -40,6 +40,7 @@ KviThemedTreeWidget::KviThemedTreeWidget(QWidget * par, KviWindow * pWindow,cons { setObjectName(name); m_pKviWindow = pWindow; + setAutoFillBackground(false); applyOptions(); } @@ -68,7 +69,7 @@ void KviThemedTreeWidget::applyOptions() update(); } -void KviThemedTreeWidget::paintEvent(QPaintEvent *event) +void KviThemedTreeWidget::paintEvent(QPaintEvent *e) { #ifdef COMPILE_PSEUDO_TRANSPARENCY QPainter *p = new QPainter(this->viewport()); @@ -77,15 +78,15 @@ void KviThemedTreeWidget::paintEvent(QPaintEvent *event) p->setCompositionMode(QPainter::CompositionMode_Source); QColor col=KVI_OPTION_COLOR(KviOption_colorGlobalTransparencyFade); col.setAlphaF((float)((float)KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) / (float)100)); - p->fillRect(event->rect(), col); + p->fillRect(viewport()->contentsRect(), col); } else if(g_pShadedChildGlobalDesktopBackground) { - QPoint pnt = m_pKviWindow->mdiParent() ? viewport()->mapTo(g_pFrame, event->rect().topLeft() + viewport()->contentsRect().topLeft() + g_pFrame->mdiManager()->scrollBarsOffset()) : viewport()->mapTo(m_pKviWindow, event->rect().topLeft() + viewport()->contentsRect().topLeft()); - p->drawTiledPixmap(event->rect(),*(g_pShadedChildGlobalDesktopBackground), pnt); + QPoint pnt = m_pKviWindow->mdiParent() ? viewport()->mapTo(g_pFrame, contentsRect().topLeft() + viewport()->contentsRect().topLeft() + g_pFrame->mdiManager()->scrollBarsOffset()) : viewport()->mapTo(m_pKviWindow, contentsRect().topLeft() + viewport()->contentsRect().topLeft()); + p->drawTiledPixmap(contentsRect(),*(g_pShadedChildGlobalDesktopBackground), pnt); } delete p; #endif - QTreeWidget::paintEvent(event); + QTreeWidget::paintEvent(e); } #ifndef COMPILE_USE_STANDALONE_MOC_SOURCES diff --git a/src/kvirc/ui/kvi_topicw.cpp b/src/kvirc/ui/kvi_topicw.cpp index 5ec014b67..0cb5c6fc6 100644 --- a/src/kvirc/ui/kvi_topicw.cpp +++ b/src/kvirc/ui/kvi_topicw.cpp @@ -115,6 +115,7 @@ KviTopicWidget::KviTopicWidget(QWidget * par, KviChannel * pChannel, const char m_iCursorPosition = 0; m_pInput = 0; m_pLabel = 0; + setAutoFillBackground(false); m_pLabel = new KviThemedLabel(this, pChannel, "topic_label"); m_pLabel->setTextFormat(Qt::RichText); diff --git a/src/kvirc/ui/kvi_userlistview.cpp b/src/kvirc/ui/kvi_userlistview.cpp index 86e47053e..9cc1436fb 100644 --- a/src/kvirc/ui/kvi_userlistview.cpp +++ b/src/kvirc/ui/kvi_userlistview.cpp @@ -1625,15 +1625,11 @@ void KviUserListView::maybeTip(KviUserListToolTip * pTip, const QPoint & pnt) KviUserListViewArea::KviUserListViewArea(KviUserListView * pPar) : QWidget(pPar) { - setAttribute(Qt::WA_NoSystemBackground); - setAttribute(Qt::WA_OpaquePaintEvent); - m_pListView = pPar; + setAutoFillBackground(false); m_pScrollBar = new QScrollBar(Qt::Vertical,this); m_pScrollBar->setObjectName("scrollbar"); - m_pScrollBar->setAutoFillBackground(true); - m_pScrollBar->setRange(0,0); m_pScrollBar->setValue(0); connect(m_pScrollBar,SIGNAL(valueChanged(int)),this,SLOT(scrollBarMoved(int))); @@ -1707,18 +1703,14 @@ void KviUserListViewArea::scrollBarMoved(int iNewVal) void KviUserListViewArea::paintEvent(QPaintEvent * e) { - QPainter p(this); - // update the scroll bar int iWidth = width() - m_pScrollBar->width(); QRect r = e->rect(); if(r.right() > iWidth) - { r.setRight(iWidth); -// p.fillRect(iWidth, 0, m_pScrollBar->width(), m_pScrollBar->height(), palette().brush(backgroundRole())); - } - p.setClipRect(r); + + QPainter p(this); QFontMetrics fm(p.fontMetrics()); @@ -1748,6 +1740,8 @@ void KviUserListViewArea::paintEvent(QPaintEvent * e) } #endif + p.setClipRect(r); + KviUserListEntry * pEntry = m_pListView->m_pTopItem; int iTheY = KVI_USERLIST_BORDER_WIDTH - m_iTopItemOffset; diff --git a/src/kvirc/ui/kvi_window.cpp b/src/kvirc/ui/kvi_window.cpp index a3594cfbf..34eaded27 100644 --- a/src/kvirc/ui/kvi_window.cpp +++ b/src/kvirc/ui/kvi_window.cpp @@ -134,6 +134,7 @@ KviWindow::KviWindow(int type,KviFrame * lpFrm,const QString &name,KviConsole * m_pWindowListItem = 0; setMinimumSize(KVI_WINDOW_MIN_WIDTH,KVI_WINDOW_MIN_HEIGHT); + //setAutoFillBackground(false); setFocusPolicy(Qt::StrongFocus); connect(g_pApp,SIGNAL(reloadImages()),this,SLOT(reloadImages())); } diff --git a/src/kvirc/ui/kvi_windowlist_tree.cpp b/src/kvirc/ui/kvi_windowlist_tree.cpp index 751919f2f..c6fa105c7 100644 --- a/src/kvirc/ui/kvi_windowlist_tree.cpp +++ b/src/kvirc/ui/kvi_windowlist_tree.cpp @@ -171,14 +171,13 @@ KviTreeWindowListTreeWidget::KviTreeWindowListTreeWidget(QWidget * par) { setObjectName("tree_windowlist"); setRootIsDecorated(true); - setAttribute(Qt::WA_NoSystemBackground); - setAttribute(Qt::WA_OpaquePaintEvent); - setSelectionMode(QAbstractItemView::NoSelection); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setFont(KVI_OPTION_FONT(KviOption_fontTreeWindowList)); setFocusPolicy(Qt::NoFocus); setFrameShape(NoFrame); + setAutoFillBackground(false); + viewport()->setAutoFillBackground(false); } KviTreeWindowListTreeWidget::~KviTreeWindowListTreeWidget() diff --git a/src/modules/options/optw_interfacelookglobal.cpp b/src/modules/options/optw_interfacelookglobal.cpp index aa31c13c7..579045f62 100644 --- a/src/modules/options/optw_interfacelookglobal.cpp +++ b/src/modules/options/optw_interfacelookglobal.cpp @@ -99,20 +99,36 @@ KviThemeTransparencyOptionsWidget::KviThemeTransparencyOptionsWidget(QWidget * p KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency)); connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),c,SLOT(setEnabled(bool))); - m_pUseCompositingForTransparencyBoolSelector = addBoolSelector(0,5,1,5,__tr2qs_ctx("Use compositing for real transparency","options"),KviOption_boolUseCompositingForTransparency, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency)); + #ifdef COMPILE_X11_SUPPORT + m_pUseCompositingForTransparencyBoolSelector = addBoolSelector(0,5,1,5,__tr2qs_ctx("Use compositing for real transparency","options"),KviOption_boolUseCompositingForTransparency, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency)); + + m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0,6,1,6,__tr2qs_ctx("Transparency blend image:","options"),KviOption_pixmapGlobalTransparencyBackground, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && !KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency)); + layout()->setRowStretch(7,1); + + if(g_pApp->supportsCompositing()) + { + connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),m_pUseCompositingForTransparencyBoolSelector,SLOT(setEnabled(bool))); + connect(m_pUseCompositingForTransparencyBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableGlobalBackgroundPixmapSelector(bool))); + } else { + m_pUseCompositingForTransparencyBoolSelector->setEnabled(false); + m_pUseCompositingForTransparencyBoolSelector->setChecked(false); + enableGlobalBackgroundPixmapSelector(true); + } + + #elif defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) + m_pUseWindowsFakeDesktopTransparencyBoolSelector = addBoolSelector(0,5,1,5,__tr2qs_ctx("Use desktop background for transparency","options"),KviOption_boolUseWindowsDesktopForTransparency, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency)); + + m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0,6,1,6,__tr2qs_ctx("Transparency blend image:","options"),KviOption_pixmapGlobalTransparencyBackground, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && !KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency)); + layout()->setRowStretch(7,1); - m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0,6,1,6,__tr2qs_ctx("Transparency blend image:","options"),KviOption_pixmapGlobalTransparencyBackground, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && !KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency)); - layout()->setRowStretch(6,1); + connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),m_pUseWindowsFakeDesktopTransparencyBoolSelector,SLOT(setEnabled(bool))); + connect(m_pUseWindowsFakeDesktopTransparencyBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableGlobalBackgroundPixmapSelector(bool))); + + #else + m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0,5,1,5,__tr2qs_ctx("Transparency blend image:","options"),KviOption_pixmapGlobalTransparencyBackground, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency)); + layout()->setRowStretch(6,1); + #endif //!COMPILE_X11_SUPPORT - if(g_pApp->supportsCompositing()) - { - connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),m_pUseCompositingForTransparencyBoolSelector,SLOT(setEnabled(bool))); - connect(m_pUseCompositingForTransparencyBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableGlobalBackgroundPixmapSelector(bool))); - } else { - m_pUseCompositingForTransparencyBoolSelector->setEnabled(false); - m_pUseCompositingForTransparencyBoolSelector->setChecked(false); - enableGlobalBackgroundPixmapSelector(true); - } connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableGlobalBackgroundPixmapSelector(bool))); #else //!COMPILE_PSEUDO_TRANSPARENCY createLayout(); @@ -127,7 +143,13 @@ KviThemeTransparencyOptionsWidget::~KviThemeTransparencyOptionsWidget() void KviThemeTransparencyOptionsWidget::enableGlobalBackgroundPixmapSelector(bool) { #ifdef COMPILE_PSEUDO_TRANSPARENCY - m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked() && !(m_pUseCompositingForTransparencyBoolSelector->isChecked())); + #ifdef COMPILE_X11_SUPPORT + m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked() && !(m_pUseCompositingForTransparencyBoolSelector->isChecked())); + #elif defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) + m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked() && !(m_pUseWindowsFakeDesktopTransparencyBoolSelector->isChecked())); + #else + m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked()); + #endif #endif } diff --git a/src/modules/options/optw_interfacelookglobal.h b/src/modules/options/optw_interfacelookglobal.h index afa2b193c..da19fc819 100644 --- a/src/modules/options/optw_interfacelookglobal.h +++ b/src/modules/options/optw_interfacelookglobal.h @@ -60,7 +60,11 @@ protected: #ifdef COMPILE_PSEUDO_TRANSPARENCY KviPixmapSelector * m_pGlobalBackgroundPixmapSelector; KviBoolSelector * m_pUseTransparencyBoolSelector; - KviBoolSelector * m_pUseCompositingForTransparencyBoolSelector; + #ifdef COMPILE_X11_SUPPORT + KviBoolSelector * m_pUseCompositingForTransparencyBoolSelector; + #elif defined(COMPILE_ON_MINGW) // || defined(COMPILE_ON_WINDOWS) + KviBoolSelector * m_pUseWindowsFakeDesktopTransparencyBoolSelector; + #endif #endif protected slots: void enableGlobalBackgroundPixmapSelector(bool); |
