aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kvirc/ui/kvi_channel.cpp10
-rw-r--r--src/kvirc/ui/kvi_frame.cpp6
-rw-r--r--src/kvirc/ui/kvi_input.cpp66
-rw-r--r--src/kvirc/ui/kvi_input.h1
-rw-r--r--src/kvirc/ui/kvi_menubar.cpp2
-rw-r--r--src/kvirc/ui/kvi_query.cpp5
-rw-r--r--src/kvirc/ui/kvi_query.h2
-rw-r--r--src/kvirc/ui/kvi_userlistview.cpp41
-rw-r--r--src/modules/notifier/notifier_vc05.vcproj8
9 files changed, 105 insertions, 36 deletions
diff --git a/src/kvirc/ui/kvi_channel.cpp b/src/kvirc/ui/kvi_channel.cpp
index 6a1fd2660..a18a12e39 100644
--- a/src/kvirc/ui/kvi_channel.cpp
+++ b/src/kvirc/ui/kvi_channel.cpp
@@ -193,6 +193,8 @@ KviChannel::KviChannel(KviFrame * lpFrm,KviConsole * lpConsole,const char * name
#ifndef COMPILE_USE_QT4
m_pHideToolsButton->setUsesBigPixmap(false);
+#else
+ m_pHideToolsButton->setAutoRaise(true);
#endif
m_pHideToolsButton->setFixedWidth(10);
@@ -543,11 +545,19 @@ QPixmap * KviChannel::myIconPtr()
void KviChannel::resizeEvent(QResizeEvent *e)
{
+#ifdef COMPILE_USE_QT4
+ int hght = m_pInput->heightHint();
+ int hght2 = m_pTopicWidget->sizeHint().height();
+ m_pButtonBox->setGeometry(0,0,width(),hght2);
+ m_pSplitter->setGeometry(0,hght2,width(),height() - (hght + hght2));
+ m_pInput->setGeometry(0,height() - hght,width(),hght);
+#else
int hght = m_pInput->heightHint();
int hght2 = m_pButtonBox->sizeHint().height();
m_pButtonBox->setGeometry(0,0,width(),hght2);
m_pSplitter->setGeometry(0,hght2,width(),height() - (hght + hght2));
m_pInput->setGeometry(0,height() - hght,width(),hght);
+#endif
}
QSize KviChannel::sizeHint() const
diff --git a/src/kvirc/ui/kvi_frame.cpp b/src/kvirc/ui/kvi_frame.cpp
index c69e1150b..362e6595c 100644
--- a/src/kvirc/ui/kvi_frame.cpp
+++ b/src/kvirc/ui/kvi_frame.cpp
@@ -127,12 +127,12 @@ KviFrame::KviFrame()
setUsesBigPixmaps(KVI_OPTION_BOOL(KviOption_boolUseBigIcons));
- // This theoretically had to exists before KviMdiManager (that uses enterSdiMode)
- m_pMenuBar = new KviMenuBar(this,"main_menu_bar");
-
m_pMdi = new KviMdiManager(m_pSplitter,this,"mdi_manager");
connect(m_pMdi,SIGNAL(enteredSdiMode()),this,SLOT(enteredSdiMode()));
connect(m_pMdi,SIGNAL(leftSdiMode()),this,SLOT(leftSdiMode()));
+
+ // This theoretically had to exists before KviMdiManager (that uses enterSdiMode)
+ m_pMenuBar = new KviMenuBar(this,"main_menu_bar");
if(KVI_OPTION_BOOL(KviOption_boolStatusBarVisible))
{
diff --git a/src/kvirc/ui/kvi_input.cpp b/src/kvirc/ui/kvi_input.cpp
index 108330fda..93ebe749d 100644
--- a/src/kvirc/ui/kvi_input.cpp
+++ b/src/kvirc/ui/kvi_input.cpp
@@ -98,6 +98,8 @@ extern KviTextIconWindow * g_pTextIconWindow;
extern KviHistoryWindow * g_pHistoryWindow;
extern KviTalPopupMenu * g_pInputPopup;
+static QFontMetrics * g_pLastFontMetrics = 0;
+
#ifdef COMPILE_PSEUDO_TRANSPARENCY
extern QPixmap * g_pShadedChildGlobalDesktopBackground;
@@ -228,6 +230,8 @@ KviInputEditor::KviInputEditor(QWidget * par,KviWindow *wnd,KviUserListView * vi
KviInputEditor::~KviInputEditor()
{
+ if(g_pLastFontMetrics) delete g_pLastFontMetrics;
+ g_pLastFontMetrics = 0;
if(m_pIconMenu)delete m_pIconMenu;
delete m_pHistory;
if(m_iCursorTimer)killTimer(m_iCursorTimer);
@@ -348,10 +352,15 @@ void KviInputEditor::drawContents(QPainter *p)
QPixmap * pDoubleBufferPixmap = doublebuffer.pixmap();
QPainter pa(pDoubleBufferPixmap);
+ SET_ANTI_ALIASING(pa);
pa.setFont(KVI_OPTION_FONT(KviOption_fontInput));
QFontMetrics fm(pa.fontMetrics());
+
+ if(!g_pLastFontMetrics)
+ g_pLastFontMetrics = new QFontMetrics(pa.fontMetrics());
+
if(g_bInputFontMetricsDirty)
recalcFontMetrics(&fm);
@@ -403,8 +412,8 @@ void KviInputEditor::drawContents(QPainter *p)
// TODO Refactor: write a function to combine this with the code determining iIMStart and iIMSelectionStart
if(iSelStart < m_iFirstVisibleChar)iSelStart = m_iFirstVisibleChar;
- int xLeft = xPositionFromCharIndex(iSelStart,TRUE);
- int xRight = xPositionFromCharIndex(m_iSelectionEnd + 1,TRUE);
+ int xLeft = xPositionFromCharIndex(fm,iSelStart,TRUE);
+ int xRight = xPositionFromCharIndex(fm,m_iSelectionEnd + 1,TRUE);
// pa.setRasterOp(Qt::NotROP);
pa.fillRect(xLeft,frameWidth(),xRight - xLeft,widgetWidth,KVI_OPTION_COLOR(KviOption_colorInputSelectionBackground));
@@ -422,8 +431,8 @@ void KviInputEditor::drawContents(QPainter *p)
// TODO Write a function to combine IM selection drawing code. maybe the preedit area too.
int iIMSelectionStart = m_iIMSelectionBegin;
if(iIMSelectionStart < m_iFirstVisibleChar) iIMSelectionStart = m_iFirstVisibleChar;
- int xIMSelectionLeft = xPositionFromCharIndex(iIMSelectionStart,TRUE);
- int xIMSelectionRight = xPositionFromCharIndex(iIMSelectionStart + m_iIMSelectionLength,TRUE);
+ int xIMSelectionLeft = xPositionFromCharIndex(fm,iIMSelectionStart,TRUE);
+ int xIMSelectionRight = xPositionFromCharIndex(fm,iIMSelectionStart + m_iIMSelectionLength,TRUE);
// pa.setRasterOp(Qt::NotROP);
pa.fillRect(xIMSelectionLeft,0,xIMSelectionRight - xIMSelectionLeft, widgetWidth,KVI_OPTION_COLOR(KviOption_colorInputSelectionBackground));
// pa.setRasterOp(Qt::CopyROP);
@@ -431,8 +440,8 @@ void KviInputEditor::drawContents(QPainter *p)
// highlight the IM selection
int iIMStart = m_iIMStart;
if(m_iIMStart < m_iFirstVisibleChar) m_iIMStart = m_iFirstVisibleChar;
- int xIMLeft = xPositionFromCharIndex(iIMStart,TRUE);
- int xIMRight = xPositionFromCharIndex(iIMStart + m_iIMLength,TRUE);
+ int xIMLeft = xPositionFromCharIndex(fm,iIMStart,TRUE);
+ int xIMRight = xPositionFromCharIndex(fm,iIMStart + m_iIMLength,TRUE);
// underline the IM preedit
// Maybe should be put in drawTextBlock, similar to drawing underlined text
@@ -455,10 +464,7 @@ void KviInputEditor::drawContents(QPainter *p)
pa.drawText(curXPos + 2,textBaseline,s,1);
- pa.drawLine(curXPos,top,curXPos+m_iBlockWidth-1,top);
- pa.drawLine(curXPos,top,curXPos,bottom);
- pa.drawLine(curXPos,bottom,curXPos+m_iBlockWidth,bottom);
- pa.drawLine(curXPos+m_iBlockWidth-1,top,curXPos+m_iBlockWidth-1,bottom);
+ pa.drawRect(curXPos,top,m_iBlockWidth-1,bottom);
} else {
if(m_iSelectionBegin!=-1)
{
@@ -521,14 +527,14 @@ void KviInputEditor::drawContents(QPainter *p)
{
QChar c = m_szTextBuffer.at(m_iBlockLen);
#ifdef COMPILE_USE_QT4
- m_iLastCursorXPosition+= fm.width(c);
+ m_iLastCursorXPosition+= c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);
#else
m_iLastCursorXPosition+= (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : fm.width(c);
#endif
m_iBlockLen++;
}
-// m_iLastCursorXPosition = xPositionFromCharIndex(m_iCursorPosition);
+ //m_iLastCursorXPosition = cur1XPos;
if(m_bCursorOn)
{
@@ -643,7 +649,7 @@ void KviInputEditor::extractNextBlock(int idx,QFontMetrics & fm,int curXPos,int
{
m_iBlockLen++;
#ifdef COMPILE_USE_QT4
- int xxx = fm.width(c);
+ int xxx = c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);;
#else
int xxx = (c.unicode() < 256 ? g_iInputFontCharWidth[c.unicode()] : fm.width(c));
#endif
@@ -2067,7 +2073,7 @@ void KviInputEditor::moveRightFirstVisibleCharToShowCursor()
QChar c = m_szTextBuffer.at(m_iCursorPosition);
#ifdef COMPILE_USE_QT4
- m_iLastCursorXPosition += fm.width(c);
+ m_iLastCursorXPosition += c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);;
#else
m_iLastCursorXPosition += (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : fm.width(c);
#endif
@@ -2075,7 +2081,7 @@ void KviInputEditor::moveRightFirstVisibleCharToShowCursor()
{
c = m_szTextBuffer.at(m_iFirstVisibleChar);
#ifdef COMPILE_USE_QT4
- m_iLastCursorXPosition -= fm.width(c);
+ m_iLastCursorXPosition -= c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);;
#else
m_iLastCursorXPosition -= (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : fm.width(c);
#endif
@@ -2110,7 +2116,7 @@ int KviInputEditor::charIndexFromXPosition(int xPos)
{
QChar c = m_szTextBuffer.at(curChar);
#ifdef COMPILE_USE_QT4
- int widthCh = fm.width(c);
+ int widthCh = c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);;
#else
int widthCh = (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : fm.width(c);
#endif
@@ -2124,17 +2130,16 @@ int KviInputEditor::charIndexFromXPosition(int xPos)
return curChar;
}
-int KviInputEditor::xPositionFromCharIndex(int chIdx,bool bContentsCoords)
+int KviInputEditor::xPositionFromCharIndex(QFontMetrics& fm,int chIdx,bool bContentsCoords)
{
// FIXME: this could use fm.width(m_szTextBuffer,chIdx)
int curXPos = bContentsCoords ? KVI_INPUT_MARGIN : frameWidth()+KVI_INPUT_MARGIN;
int curChar = m_iFirstVisibleChar;
- QFontMetrics fm(KVI_OPTION_FONT(KviOption_fontInput));
while(curChar < chIdx)
{
QChar c = m_szTextBuffer.at(curChar);
#ifdef COMPILE_USE_QT4
- curXPos += fm.width(c);
+ curXPos += c.unicode() < 32 ? fm.width(getSubstituteChar(c.unicode())) + 3 : fm.width(c);;
#else
curXPos += (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : fm.width(c);
#endif
@@ -2143,6 +2148,26 @@ int KviInputEditor::xPositionFromCharIndex(int chIdx,bool bContentsCoords)
return curXPos;
}
+int KviInputEditor::xPositionFromCharIndex(int chIdx,bool bContentsCoords)
+{
+ // FIXME: this could use fm.width(m_szTextBuffer,chIdx)
+ int curXPos = bContentsCoords ? KVI_INPUT_MARGIN : frameWidth()+KVI_INPUT_MARGIN;
+ int curChar = m_iFirstVisibleChar;
+ debug("%i",g_pLastFontMetrics);
+ if(!g_pLastFontMetrics) g_pLastFontMetrics = new QFontMetrics(KVI_OPTION_FONT(KviOption_fontInput));
+ while(curChar < chIdx)
+ {
+ QChar c = m_szTextBuffer.at(curChar);
+#ifdef COMPILE_USE_QT4
+ curXPos += c.unicode() < 32 ? g_pLastFontMetrics->width(getSubstituteChar(c.unicode())) + 3 : g_pLastFontMetrics->width(c);
+#else
+ curXPos += (c.unicode() < 256) ? g_iInputFontCharWidth[c.unicode()] : g_pLastFontMetrics->width(c);
+#endif
+ curChar++;
+ }
+ return curXPos;
+}
+
/*
@doc: texticons
@type:
@@ -2592,6 +2617,9 @@ void KviInput::insertText(const QString& text)
void KviInput::applyOptions()
{
+ if(g_pLastFontMetrics) delete g_pLastFontMetrics;
+ g_pLastFontMetrics = 0;
+
if(KVI_OPTION_BOOL(KviOption_boolDisableInputHistory))//G&N mar 2005
{
QIconSet is1;
diff --git a/src/kvirc/ui/kvi_input.h b/src/kvirc/ui/kvi_input.h
index f1c11d595..2477db2f8 100644
--- a/src/kvirc/ui/kvi_input.h
+++ b/src/kvirc/ui/kvi_input.h
@@ -164,6 +164,7 @@ private:
void repaintWithCursorOn();
void selectOneChar(int pos);
int charIndexFromXPosition(int xPos);
+ int xPositionFromCharIndex(QFontMetrics& fm,int chIdx,bool bContentsCoords=FALSE);
int xPositionFromCharIndex(int chIdx,bool bContentsCoords=FALSE);
void killDragTimer();
void handleDragSelection();
diff --git a/src/kvirc/ui/kvi_menubar.cpp b/src/kvirc/ui/kvi_menubar.cpp
index b406cb9c9..6407bcf5d 100644
--- a/src/kvirc/ui/kvi_menubar.cpp
+++ b/src/kvirc/ui/kvi_menubar.cpp
@@ -80,7 +80,7 @@ KviMenuBar::KviMenuBar(KviFrame * par,const char * name)
connect(pop,SIGNAL(aboutToShow()),this,SLOT(setupSettingsPopup()));
addDefaultItem(__tr2qs("&Settings"),pop);
- //addDefaultItem(__tr2qs("&Window"),par->mdiManager()->windowPopup());
+ addDefaultItem(__tr2qs("&Window"),par->mdiManager()->windowPopup());
pop = new KviTalPopupMenu(this,"help");
connect(pop,SIGNAL(aboutToShow()),this,SLOT(setupHelpPopup()));
diff --git a/src/kvirc/ui/kvi_query.cpp b/src/kvirc/ui/kvi_query.cpp
index edd2acd69..bfaf14147 100644
--- a/src/kvirc/ui/kvi_query.cpp
+++ b/src/kvirc/ui/kvi_query.cpp
@@ -79,10 +79,9 @@ KviQuery::KviQuery(KviFrame * lpFrm,KviConsole * lpConsole,const QString &nick)
// The button box on the right
//KviTalHBox * box = new KviTalHBox(m_pTopSplitter,"button_box");
if(KVI_OPTION_BOOL(KviOption_boolShowExtendedInfoInQueryLabel))
- m_pButtonGrid= new KviTalGrid(2,Qt::Vertical,m_pButtonBox);
+ m_pButtonGrid= (QFrame*) new KviTalGrid(2,Qt::Horizontal,m_pButtonBox);
else
- m_pButtonGrid= new KviTalGrid(1,Qt::Vertical,m_pButtonBox);
-
+ m_pButtonGrid= (QFrame*) new KviTalGrid(1,Qt::Horizontal,m_pButtonBox);
createTextEncodingButton(m_pButtonGrid);
diff --git a/src/kvirc/ui/kvi_query.h b/src/kvirc/ui/kvi_query.h
index 96f141991..2603d1066 100644
--- a/src/kvirc/ui/kvi_query.h
+++ b/src/kvirc/ui/kvi_query.h
@@ -52,7 +52,7 @@ protected:
KviWindowToolPageButton * m_pListViewButton;
int m_iFlags;
KviThemedLabel * m_pLabel;
- KviTalGrid * m_pButtonGrid;
+ QFrame * m_pButtonGrid;
protected:
virtual QPixmap * myIconPtr();
virtual void fillCaptionBuffers();
diff --git a/src/kvirc/ui/kvi_userlistview.cpp b/src/kvirc/ui/kvi_userlistview.cpp
index 9e9811480..b39fc404d 100644
--- a/src/kvirc/ui/kvi_userlistview.cpp
+++ b/src/kvirc/ui/kvi_userlistview.cpp
@@ -153,7 +153,7 @@ void KviUserListEntry::recalcSize()
{
KviAvatar * av = m_pGlobalData->avatar();
m_iHeight = m_pListView->m_iFontHeight;
- if(KVI_OPTION_BOOL(KviOption_boolShowUserChannelIcons) && (m_iHeight < 22))m_iHeight = 22;
+ if(KVI_OPTION_BOOL(KviOption_boolShowUserChannelIcons) && (m_iHeight < 20))m_iHeight = 20;
if(!KVI_OPTION_BOOL(KviOption_boolDisableAvatars))//G&N 2005
{
@@ -1421,6 +1421,10 @@ void KviUserListViewArea::paintEvent(QPaintEvent *ev)
SET_ANTI_ALIASING(p);
p.setFont(KVI_OPTION_FONT(KviOption_fontUserListView));
+#ifdef COMPILE_USE_QT4
+ QFontMetrics fm(p.fontMetrics());
+#endif
+
#ifdef COMPILE_PSEUDO_TRANSPARENCY
if(g_pShadedChildGlobalDesktopBackground)
{
@@ -1680,10 +1684,18 @@ void KviUserListViewArea::paintEvent(QPaintEvent *ev)
KVI_SMALLICON_VOICE : KVI_SMALLICON_USEROP)))) \
) \
);
- p.drawPixmap(theX,theY,*ico);
+#ifdef COMPILE_USE_QT4
+ p.drawPixmap(theX,theY+(fm.lineSpacing()-16/*size of small icon*/)/2,*ico);
+#else
+ p.drawPixmap(theX,theY+(m_pListView->m_iFontHeight-16/*size of small icon*/)/2,*ico);
+#endif
}
theX +=18;
- p.drawText(iAvatarAndTextX,theY,wdth - theX,m_pListView->m_iFontHeight,Qt::AlignLeft|Qt::AlignVCenter,e->m_szNick);
+#ifdef COMPILE_USE_QT4
+ p.drawText(iAvatarAndTextX,theY,wdth - theX,fm.lineSpacing(),Qt::AlignLeft|Qt::AlignVCenter,e->m_szNick);
+#else
+ p.drawText(iAvatarAndTextX,theY,wdth - theX,m_pListView->m_iFontHeight,Qt::AlignLeft|Qt::AlignVCenter,e->m_szNick);
+#endif
} else {
char flag = m_pListView->getUserFlag(e);
@@ -1691,9 +1703,17 @@ void KviUserListViewArea::paintEvent(QPaintEvent *ev)
{
QString ttt = QChar(flag);
ttt += e->m_szNick;
+#ifdef COMPILE_USE_QT4
+ p.drawText(iAvatarAndTextX,theY,wdth - theX,fm.lineSpacing(),Qt::AlignLeft|Qt::AlignVCenter,ttt);
+#else
p.drawText(iAvatarAndTextX,theY,wdth - theX,m_pListView->m_iFontHeight,Qt::AlignLeft|Qt::AlignVCenter,ttt);
+#endif
} else {
+#ifdef COMPILE_USE_QT4
+ p.drawText(iAvatarAndTextX,theY,wdth - theX,fm.lineSpacing(),Qt::AlignLeft|Qt::AlignVCenter,e->m_szNick);
+#else
p.drawText(iAvatarAndTextX,theY,wdth - theX,m_pListView->m_iFontHeight,Qt::AlignLeft|Qt::AlignVCenter,e->m_szNick);
+#endif
}
}
if(bColorAllocated) delete pClrFore;
@@ -1703,12 +1723,15 @@ void KviUserListViewArea::paintEvent(QPaintEvent *ev)
e = e->m_pNext;
}
- p.setPen(colorGroup().dark());
- p.drawLine(0,0,wdth,0);
- p.drawLine(0,0,0,height());
- p.setPen(colorGroup().light());
- p.drawLine(1,height()-1,wdth,height()-1);
- p.drawLine(wdth - 1,1,wdth - 1,height());
+ //we really do not need any self-draw borders.
+ //if we will need it, we will draw a better one with system style
+
+ //p.setPen(colorGroup().dark());
+ //p.drawLine(0,0,wdth,0);
+ //p.drawLine(0,0,0,height());
+ //p.setPen(colorGroup().light());
+ //p.drawLine(1,height()-1,wdth,height()-1);
+ //p.drawLine(wdth - 1,1,wdth - 1,height());
#ifdef COMPILE_USE_QT4
QPainter qt4SuxBecauseOfThisAdditionalPainter(this);
diff --git a/src/modules/notifier/notifier_vc05.vcproj b/src/modules/notifier/notifier_vc05.vcproj
index 70292afef..1300756ef 100644
--- a/src/modules/notifier/notifier_vc05.vcproj
+++ b/src/modules/notifier/notifier_vc05.vcproj
@@ -223,6 +223,10 @@
>
</File>
<File
+ RelativePath=".\notifierwindowprogressbar.cpp"
+ >
+ </File>
+ <File
RelativePath=".\notifierwindowtabs.cpp"
>
</File>
@@ -271,6 +275,10 @@
>
</File>
<File
+ RelativePath=".\notifierwindowprogressbar.h"
+ >
+ </File>
+ <File
RelativePath=".\notifierwindowtabs.h"
>
<FileConfiguration