Page Menu
Home
GnuPG
Search
Configure Global Search
Log In
Files
F34504843
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Size
5 KB
Subscribers
None
View Options
diff --git a/src/ui/kdhorizontalline.cpp b/src/ui/kdhorizontalline.cpp
index 00a72de4..e07d6f65 100644
--- a/src/ui/kdhorizontalline.cpp
+++ b/src/ui/kdhorizontalline.cpp
@@ -1,156 +1,156 @@
/* -*- Mode: C++ -*-
KD Tools - a set of useful widgets for Qt
*/
/****************************************************************************
** SPDX-FileCopyrightText: 2005 Klarälvdalens Datakonsult AB. All rights reserved.
**
** This file is part of the KD Tools library.
**
** SPDX-License-Identifier: GPL-2.0-or-later
**
**********************************************************************/
#include "kdhorizontalline.h"
#include <QPainter>
#include <QStyle>
#ifdef QT_ACCESSIBILITY_SUPPORT
#include <QAccessible>
#endif
#include <QApplication>
#include <QFontMetrics>
#include <QPaintEvent>
KDHorizontalLine::KDHorizontalLine(QWidget *parent, const char *name, Qt::WindowFlags f)
: QFrame(parent, f)
, mAlign(Qt::AlignLeft)
, mLenVisible(0)
{
setObjectName(QLatin1String(name));
QFrame::setFrameStyle(HLine | Sunken);
}
KDHorizontalLine::KDHorizontalLine(const QString &title, QWidget *parent, const char *name, Qt::WindowFlags f)
: QFrame(parent, f)
, mAlign(Qt::AlignLeft)
, mLenVisible(0)
{
setObjectName(QLatin1String(name));
QFrame::setFrameStyle(HLine | Sunken);
setTitle(title);
}
KDHorizontalLine::~KDHorizontalLine()
{
}
void KDHorizontalLine::setFrameStyle(int style)
{
QFrame::setFrameStyle((style & ~Shape_Mask) | HLine); // force HLine
}
void KDHorizontalLine::setTitle(const QString &title)
{
if (mTitle == title) {
return;
}
mTitle = title;
calculateFrame();
update();
updateGeometry();
#ifdef QT_ACCESSIBILITY_SUPPORT
QAccessible::updateAccessibility(this, 0, QAccessible::NameChanged);
#endif
}
void KDHorizontalLine::calculateFrame()
{
mLenVisible = mTitle.length();
#if 0
if (mLenVisible) {
const QFontMetrics fm = fontMetrics();
while (mLenVisible) {
const int tw = fm.width(mTitle, mLenVisible) + 4 * fm.width(QChar(' '));
if (tw < width()) {
break;
}
mLenVisible--;
}
qDebug("mLenVisible = %d (of %d)", mLenVisible, mTitle.length());
if (mLenVisible) { // but do we also have a visible label?
QRect r = rect();
const int va = style().styleHint(QStyle::SH_GroupBox_TextLabelVerticalAlignment, this);
if (va & Qt::AlignVCenter) {
r.setTop(fm.height() / 2); // frame rect should be
} else if (va & Qt::AlignTop) {
r.setTop(fm.ascent());
}
setFrameRect(r); // smaller than client rect
return;
}
}
// no visible label
setFrameRect(QRect(0, 0, 0, 0)); // then use client rect
#endif
}
QSizePolicy KDHorizontalLine::sizePolicy() const
{
return {QSizePolicy::Minimum, QSizePolicy::Fixed};
}
QSize KDHorizontalLine::sizeHint() const
{
return minimumSizeHint();
}
QSize KDHorizontalLine::minimumSizeHint() const
{
const int w = fontMetrics().horizontalAdvance(mTitle, mLenVisible) + fontMetrics().boundingRect(QLatin1Char(' ')).width();
const int h = fontMetrics().height();
- return QSize(qMax(w, indentHint()), h).expandedTo(qApp->globalStrut());
+ return QSize(qMax(w, indentHint()), h);
}
void KDHorizontalLine::paintEvent(QPaintEvent *e)
{
QPainter paint(this);
if (mLenVisible) { // draw title
const QFontMetrics &fm = paint.fontMetrics();
const int h = fm.height();
const int tw = fm.horizontalAdvance(mTitle, mLenVisible) + fm.horizontalAdvance(QLatin1Char(' '));
int x;
if (mAlign & Qt::AlignHCenter) { // center alignment
x = frameRect().width() / 2 - tw / 2;
} else if (mAlign & Qt::AlignRight) { // right alignment
x = frameRect().width() - tw;
} else if (mAlign & Qt::AlignLeft) { // left alignment
x = 0;
} else { // auto align
if (QApplication::isRightToLeft()) {
x = frameRect().width() - tw;
} else {
x = 0;
}
}
QRect r(x, 0, tw, h);
int va = style()->styleHint(QStyle::SH_GroupBox_TextLabelVerticalAlignment, nullptr, this);
if (va & Qt::AlignTop) {
r.translate(0, fm.descent());
}
const QColor pen((QRgb)style()->styleHint(QStyle::SH_GroupBox_TextLabelColor, nullptr, this));
if (!style()->styleHint(QStyle::SH_UnderlineShortcut, nullptr, this)) {
va |= Qt::TextHideMnemonic;
}
style()->drawItemText(&paint, r, Qt::TextShowMnemonic | Qt::AlignHCenter | va, palette(), isEnabled(), mTitle);
paint.setClipRegion(e->region().subtracted(r)); // clip everything but title
}
drawFrame(&paint);
}
// static
int KDHorizontalLine::indentHint()
{
return 30;
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Mon, Jan 12, 11:48 PM (20 h, 16 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
7c/a6/43574e717efcf68a27246b84d2ea
Attached To
rLIBKLEO Libkleo
Event Timeline
Log In to Comment