Esempio n. 1
0
void NotificationScrollArea::findPreviousWidget()
{
    int value = 0;
    GenericChatroomWidget* next = nullptr;
    QHash<GenericChatroomWidget*, Visibility>::iterator i = trackedWidgets.begin();

    // Find the first next, to avoid nullptr.
    for (; i != trackedWidgets.end(); ++i)
    {
        if (i.value() == Above)
        {
            next = i.key();
            value = next->mapTo(viewport(), QPoint()).y();
            break;
        }
    }

    // Try finding a closer one.
    for (; i != trackedWidgets.end(); ++i)
    {
        if (i.value() == Above)
        {
            int y = i.key()->mapTo(viewport(), QPoint()).y();
            if (y > value)
            {
                next = i.key();
                value = y;
            }
        }
    }

    if (next != nullptr)
        ensureWidgetVisible(next, 0, referencesAbove != 1 ? topEdge->height() : 0);
}
/*!
    \reimp
 */
bool QScrollArea::focusNextPrevChild(bool next)
{
    if (QWidget::focusNextPrevChild(next)) {
        if (QWidget *fw = focusWidget())
            ensureWidgetVisible(fw);
        return true;
    }
    return false;
}
Esempio n. 3
0
void ImagesList::keyPressEvent(QKeyEvent* e)
{
#ifndef QT_NO_DEBUG
//	qDebug("ImagesList::keyPressEvent()");
#endif

	switch (e->key()) {
		case Qt::Key_Up:
			if (current>0) {
				current--;
				ensureWidgetVisible(images_l[current],0,0);
				emit selected(current);
			}
			e->accept();
			break;
		case Qt::Key_Down:
			if (current<(images_l.size()-1)) {
				current++;
				ensureWidgetVisible(images_l[current],0,0);
				emit selected(current);
			}
			e->accept();
			break;

/*
		case Qt::Key_Home:
			e->accept();
			current= (images_l.size()) ? 0 : -1;
			emit selected(current);
			break;
		case Qt::Key_End:
			e->accept();
			current=images_l.size()-1;
			emit selected(current);
			break;
*/

		case Qt::Key_Escape:
			QScrollArea::keyPressEvent(e);
			break;
		default:
			e->ignore();
	}
}
/*!
    \reimp
 */
bool QScrollArea::eventFilter(QObject *o, QEvent *e)
{
    Q_D(QScrollArea);
#ifdef QT_KEYPAD_NAVIGATION
    if (d->widget && o != d->widget && e->type() == QEvent::FocusIn
            && QApplication::keypadNavigationEnabled()) {
        if (o->isWidgetType())
            ensureWidgetVisible(static_cast<QWidget *>(o));
    }
#endif
    if (o == d->widget && e->type() == QEvent::Resize)
        d->updateScrollBars();

    return QAbstractScrollArea::eventFilter(o, e);
}