bool VMdEditor::isBlockVisible(const QTextBlock &p_block) { if (!p_block.isValid() || !p_block.isVisible()) { return false; } QScrollBar *vbar = verticalScrollBar(); if (!vbar || !vbar->isVisible()) { // No vertical scrollbar. return true; } int height = rect().height(); QScrollBar *hbar = horizontalScrollBar(); if (hbar && hbar->isVisible()) { height -= hbar->height(); } QAbstractTextDocumentLayout *layout = document()->documentLayout(); QRectF rect = layout->blockBoundingRect(p_block); int y = GETVISUALOFFSETY; int rectHeight = (int)rect.height(); return (y >= 0 && y < height) || (y < 0 && y + rectHeight > 0); }
QWidgetList QAccessibleAbstractScrollArea::accessibleChildren() const { QWidgetList children; // Viewport. QWidget * viewport = abstractScrollArea()->viewport(); if (viewport) children.append(viewport); // Horizontal scrollBar container. QScrollBar *horizontalScrollBar = abstractScrollArea()->horizontalScrollBar(); if (horizontalScrollBar && horizontalScrollBar->isVisible()) { children.append(horizontalScrollBar->parentWidget()); } // Vertical scrollBar container. QScrollBar *verticalScrollBar = abstractScrollArea()->verticalScrollBar(); if (verticalScrollBar && verticalScrollBar->isVisible()) { children.append(verticalScrollBar->parentWidget()); } // CornerWidget. QWidget *cornerWidget = abstractScrollArea()->cornerWidget(); if (cornerWidget && cornerWidget->isVisible()) children.append(cornerWidget); return children; }
void UserViewItemBase::paintCell(QPainter *p, const QColorGroup &cg, int, int width, int) { UserListBase *view = static_cast<UserListBase*>(listView()); width = view->width() - 4; QScrollBar *vBar = view->verticalScrollBar(); if (vBar->isVisible()) width -= vBar->width(); if (width < 1) width = 1; QPixmap bg(width, height()); QPainter pp(&bg); int margin = 0; if (isSelected() && view->hasFocus() && CorePlugin::m_plugin->getUseDblClick()){ pp.fillRect(QRect(0, 0, width, height()), cg.highlight()); pp.setPen(cg.highlightedText()); }else{ pp.fillRect(QRect(0, 0, width, height()), cg.base()); PaintView pv; pv.p = &pp; pv.pos = view->viewport()->mapToParent(view->itemRect(this).topLeft()); pv.size = QSize(width, height()); pv.win = view; pv.isStatic = false; pv.height = height(); pv.margin = 0; if (CorePlugin::m_plugin->getUseSysColors()){ pp.setPen(cg.text()); }else{ pp.setPen(QColor(CorePlugin::m_plugin->getColorOnline())); } Event e(EventPaintView, &pv); e.process(); view->setStaticBackground(pv.isStatic); margin = pv.margin; } view->drawItem(this, &pp, cg, width, margin); pp.end(); if (view->m_pressedItem == this){ p->drawPixmap(QPoint(1, 1), bg); if (CorePlugin::m_plugin->getUseSysColors()){ p->setPen(cg.text()); }else{ p->setPen(QColor(CorePlugin::m_plugin->getColorOnline())); } p->moveTo(0, 0); p->lineTo(width - 1, 0); p->lineTo(width - 1, height() - 1); p->lineTo(0, height() - 1); p->lineTo(0, 0); p->setPen(cg.shadow()); p->moveTo(width - 2, 1); p->lineTo(1, 1); p->lineTo(1, height() - 2); }else{ p->drawPixmap(QPoint(0, 0), bg); } }
void ShortcutsConfig::adjustColumns() { QScrollBar *bar = lstKeys->verticalScrollBar(); int wScroll = 0; if (bar && bar->isVisible()) wScroll = bar->width(); lstKeys->setColumnWidth(0, lstKeys->width() - lstKeys->columnWidth(2) - lstKeys->columnWidth(1) - 4 - wScroll); }
void TabsView::showTab( TabsItem *tab ) { if( tab ) { QString tabText = tab->getTabData(); if( tabText.length() > 0 ) { tabText.replace( "\n", "<br></br>", Qt::CaseInsensitive ); QFont tabFont( "monospace"); tabFont.setStyleHint( QFont::Courier ); tabFont.setStyleStrategy( QFont::PreferAntialias ); tabFont.setWeight( QFont::Normal ); tabFont.setPointSize( QFont().pointSize() ); QFont headingFont( "sans-serif" ); headingFont.setPointSize( tabFont.pointSize() + 2 ); headingFont.setStyleHint( QFont::SansSerif ); headingFont.setStyleStrategy( QFont::PreferAntialias ); headingFont.setWeight( QFont::Black ); QString linkColor = The::paletteHandler()->palette().link().color().name(); QString textColor = The::paletteHandler()->palette().text().color().name(); int headingWeight = 600; QString htmlData = "<html>"; htmlData += "<body style=\"font-family:'" + tabFont.family() + "';"; htmlData += "font-size:" + QString::number( tabFont.pointSize() ) + "pt;"; htmlData += "font-weight:" + QString::number( tabFont.weight() ) + ";"; htmlData += "color:" + textColor + ";\">"; // tab heading + tab source htmlData += "<p><span style=\"font-family:'" + headingFont.family() + "';"; htmlData += "font-size:" + QString::number( headingFont.pointSize() ) + "pt;"; htmlData += "font-weight:" + QString::number( headingWeight ) + ";\">"; htmlData += tab->getTabTitle(); htmlData += " (" + i18n( "tab provided from: " ) + "<a href=\"" + tab->getTabUrl() + "\">"; htmlData += "<span style=\"text-decoration: underline; color:" + linkColor + ";\">"; htmlData += tab->getTabSource() + "</a>"; htmlData += ")</span></p>"; // tab data htmlData += tabText + "</body></html>"; // backup current scrollbar position QScrollBar *vbar = m_tabTextBrowser->nativeWidget()->verticalScrollBar(); int scrollPosition = vbar->isVisible() ? vbar->value() : vbar->minimum(); m_tabTextBrowser->nativeWidget()->setHtml( htmlData ); // re-apply scrollbar position vbar->setSliderPosition( scrollPosition ); } } }
gboolean packet_list_check_end(void) { if (gbl_cur_packet_list) { QScrollBar *sb = gbl_cur_packet_list->verticalScrollBar(); if (sb && sb->isVisible() && sb->value() == sb->maximum()) { return TRUE; } } return FALSE; }
QPoint CodeCompleterListView::infoFramePos() const { const QRect &r = rectForIndex(currentIndex()); int xoffset = this->frameWidth()+3; int yoffset = this->frameWidth()-verticalOffset(); QScrollBar *vsb = this->verticalScrollBar(); if (vsb && vsb->isVisible()) xoffset += this->horizontalScrollBar()->sizeHint().height(); QPoint pt = this->mapToGlobal(r.topRight()); pt.rx() += xoffset; pt.ry() += yoffset; return pt; }
void tst_QAbstractScrollArea::setScrollBars2() { QAbstractScrollArea scrollArea; scrollArea.resize(300, 300); QScrollBar *hbar = new QScrollBar; scrollArea.setHorizontalScrollBar(hbar); qApp->processEvents(); QCOMPARE(scrollArea.horizontalScrollBar(), hbar); QScrollBar *vbar = new QScrollBar; scrollArea.setVerticalScrollBar(vbar); qApp->processEvents(); QCOMPARE(scrollArea.verticalScrollBar(), vbar); scrollArea.horizontalScrollBar()->setRange(0, 100); scrollArea.verticalScrollBar()->setRange(0, 100); scrollArea.show(); // Make sure scroll bars are not explicitly hidden by QAbstractScrollArea itself. QVERIFY(hbar->isVisible()); QVERIFY(vbar->isVisible()); // Hide the OLD scroll bar and ensure that the NEW one is hidden. hbar->hide(); scrollArea.setHorizontalScrollBar(new QScrollBar); qApp->processEvents(); QVERIFY(!scrollArea.horizontalScrollBar()->isVisible()); vbar->hide(); scrollArea.setVerticalScrollBar(new QScrollBar); qApp->processEvents(); QVERIFY(!scrollArea.verticalScrollBar()->isVisible()); scrollArea.verticalScrollBar()->show(); scrollArea.horizontalScrollBar()->show(); // Hide the NEW scroll bar and ensure that it's visible // (because the OLD one is visible). hbar = new QScrollBar; hbar->hide(); scrollArea.setHorizontalScrollBar(hbar); qApp->processEvents(); QVERIFY(hbar->isVisible()); vbar = new QScrollBar; vbar->hide(); scrollArea.setVerticalScrollBar(vbar); qApp->processEvents(); QVERIFY(vbar->isVisible()); vbar->setRange(0, 0); qApp->processEvents(); QVERIFY(!vbar->isVisible()); hbar->setRange(0, 0); qApp->processEvents(); QVERIFY(!hbar->isVisible()); }
void QGraphicsCompleter::showPopup(const QRect& rect) { Qt::LayoutDirection dir = Qt::LeftToRight; const int maxVisibleItems = 7; QPointF pos; int rh, w; const QRect screen = p_proxyPopup->scene()->views().at(0)->viewport()->geometry(); QAbstractItemView *popup = static_cast<QAbstractItemView *>(p_proxyPopup->widget()); int h = (popup->sizeHintForRow(0) * qMin(maxVisibleItems, popup->model()->rowCount()) + 3) + 3; QScrollBar *hsb = popup->horizontalScrollBar(); if (hsb && hsb->isVisible()) h += popup->horizontalScrollBar()->sizeHint().height(); if (rect.isValid()) { rh = rect.height(); w = rect.width(); pos = rect.bottomLeft(); } else { rh = graphicsItem()->boundingRect().height(); pos = graphicsItem()->mapRectToScene( graphicsItem()->boundingRect()).bottomLeft(); w = popup->width(); } if (w > screen.width()) w = screen.width(); if ((pos.x() + w) > (screen.x() + screen.width())) pos.setX(screen.x() + screen.width() - w); if (pos.x() < screen.x()) pos.setX(screen.x()); int top = pos.y() - rh - screen.top() + 2; int bottom = screen.bottom() - pos.y(); h = qMax(h, popup->minimumHeight()); if (h > bottom) { h = qMin(qMax(top, bottom), h); if (top > bottom) pos.setY(pos.y() - h - rh+ 2); } popup->setGeometry(pos.x(), pos.y(), w, h+5); p_proxyPopup->update(); if (!p_proxyPopup->isVisible()) p_proxyPopup->show(); }
void ListView::adjustColumn() { if (m_expandingColumn >= 0){ int w = width(); QScrollBar *vBar = verticalScrollBar(); if (vBar->isVisible()) w -= vBar->width(); for (int i = 0; i < columns(); i++){ if (i == m_expandingColumn) continue; w -= columnWidth(i); } if (w < 40) w = 40; setColumnWidth(m_expandingColumn, w - 4); viewport()->repaint(); } }
void QCompleterPrivate::showPopup(const QRect& rect) { const QRect screen = QApplication::desktop()->availableGeometry(widget); Qt::LayoutDirection dir = widget->layoutDirection(); QPoint pos; int rh, w; int h = (popup->sizeHintForRow(0) * qMin(maxVisibleItems, popup->model()->rowCount()) + 3) + 3; QScrollBar *hsb = popup->horizontalScrollBar(); if (hsb && hsb->isVisible()) h += popup->horizontalScrollBar()->sizeHint().height(); if (rect.isValid()) { rh = rect.height(); w = rect.width(); pos = widget->mapToGlobal(dir == Qt::RightToLeft ? rect.bottomRight() : rect.bottomLeft()); } else { rh = widget->height(); pos = widget->mapToGlobal(QPoint(0, widget->height() - 2)); w = widget->width(); } if (w > screen.width()) w = screen.width(); if ((pos.x() + w) > (screen.x() + screen.width())) pos.setX(screen.x() + screen.width() - w); if (pos.x() < screen.x()) pos.setX(screen.x()); int top = pos.y() - rh - screen.top() + 2; int bottom = screen.bottom() - pos.y(); h = qMax(h, popup->minimumHeight()); if (h > bottom) { h = qMin(qMax(top, bottom), h); if (top > bottom) pos.setY(pos.y() - h - rh + 2); } popup->setGeometry(pos.x(), pos.y(), w, h); if (!popup->isVisible()) popup->show(); }
void line_edit_autocomplete::show_popup() { QWidget* widget=this; QRect rect; const QRect screen = QApplication::desktop()->availableGeometry(widget); Qt::LayoutDirection dir = widget->layoutDirection(); QPoint pos; int rw, rh, w; int h = (popup->sizeHintForRow(0) * qMin(7, popup->model()->rowCount()) + 3) + 3; QScrollBar *hsb = popup->horizontalScrollBar(); if (hsb && hsb->isVisible()) h += popup->horizontalScrollBar()->sizeHint().height(); if (rect.isValid()) { rh = rect.height(); w = rw = rect.width(); pos = widget->mapToGlobal(dir == Qt::RightToLeft ? rect.bottomRight() : rect.bottomLeft()); } else { rh = widget->height(); rw = widget->width(); pos = widget->mapToGlobal(QPoint(0, widget->height() - 2)); w = widget->width(); } if ((pos.x() + rw) > (screen.x() + screen.width())) pos.setX(screen.x() + screen.width() - w); if (pos.x() < screen.x()) pos.setX(screen.x()); if (((pos.y() + rh) > (screen.y() + screen.height())) && ((pos.y() - h - rh) >= 0)) pos.setY(pos.y() - qMax(h, popup->minimumHeight()) - rh + 2); popup->setGeometry(pos.x(), pos.y(), w, h); if (!popup->isVisible()) { popup->show(); } }
void ReportViewWidget::ScrollArea::wheelEvent(QWheelEvent * ev) { if(ev->orientation() == Qt::Vertical) { if(ev->modifiers() == Qt::ControlModifier) { int delta = ev->delta(); emit zoomOnWheel(delta, ev->pos()); ev->accept(); return; } else { QScrollBar *sb = verticalScrollBar(); if(sb) { if(sb->value() == sb->minimum() && ev->delta() > 0) { emit showPreviousPage(); ev->accept(); return; } if(sb->value() == sb->maximum() && ev->delta() < 0) { emit showNextPage(); ev->accept(); return; } } if(!sb || !sb->isVisible()) { /// pokud neni scroll bar, nemuzu se spolehnout na funkci verticalScrollBarValueChanged(), protoze value je pro oba smery == 0 //qfInfo() << e->delta(); if(ev->delta() < 0) { emit showNextPage(); } else { emit showPreviousPage(); } ev->accept(); return; } } } QScrollArea::wheelEvent(ev); }
void ListView::adjustColumn() { #ifdef WIN32 if (inResize()){ if (!m_resizeTimer->isActive()) m_resizeTimer->start(500); return; } #endif m_resizeTimer->stop(); if (m_expandingColumn >= 0){ int w = width(); QScrollBar *vBar = verticalScrollBar(); if (vBar->isVisible()) w -= vBar->width(); for (int i = 0; i < columnCount(); i++){ if (i == m_expandingColumn) continue; w -= columnWidth(i); } int minW = 40; for (int i = 0; i < topLevelItemCount(); i++){ ListViewItem *item = static_cast<ListViewItem*>(topLevelItem(i)); QFontMetrics fm(font()); int ww = fm.width(item->text(m_expandingColumn)); const QPixmap pict = item->pixmap(m_expandingColumn); if (!pict.isNull()) ww += pict.width() + 2; if (ww > minW) minW = ww + 8; } if (w < minW) w = minW; setColumnWidth(m_expandingColumn, w - 4); viewport()->repaint(); } }
void ListView::adjustColumn() { #ifdef WIN32 if (inResize()){ if (!m_resizeTimer->isActive()) m_resizeTimer->start(500); return; } #endif m_resizeTimer->stop(); if (m_expandingColumn >= 0){ int w = width(); QScrollBar *vBar = verticalScrollBar(); if (vBar->isVisible()) w -= vBar->width(); for (int i = 0; i < columnCount(); i++){ if (i == m_expandingColumn) continue; w -= columnWidth(i); } resizeColumnToContents(m_expandingColumn); viewport()->repaint(); } }