|
|
|
@ -5313,23 +5313,21 @@ void TQIconView::keyPressEvent( TQKeyEvent *e )
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Finds the closest item in the direction \a dir starting from the specified \a fromItem.
|
|
|
|
|
If the arrangement is LeftToRight (icon view mode): use center as item reference
|
|
|
|
|
If the arrangement is TopToBottom (multicolumn view mode): use left top corner as item reference
|
|
|
|
|
If the arrangement is LeftToRight (icon view mode): use (center, top) as item reference
|
|
|
|
|
If the arrangement is TopToBottom (multicolumn view mode): use (left, top) as item reference
|
|
|
|
|
This is to allow for smooth scrolling when using the keyboard arrow keys.
|
|
|
|
|
*/
|
|
|
|
|
TQIconViewItem* TQIconView::findItem(Direction dir, const TQIconViewItem *fromItem) const
|
|
|
|
|
{
|
|
|
|
|
TQIconViewItem *closestItem=NULL;
|
|
|
|
|
int distPri=0, distSec=0;
|
|
|
|
|
int itemDistancePri=0, itemDistanceSec=0;
|
|
|
|
|
|
|
|
|
|
TQPoint pos;
|
|
|
|
|
|
|
|
|
|
TQPoint pos=fromItem->rect().topLeft();
|
|
|
|
|
if (d->arrangement == LeftToRight) {
|
|
|
|
|
pos=fromItem->rect().center();
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
pos=fromItem->rect().topLeft();
|
|
|
|
|
pos.setX(fromItem->rect().center().x());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TQRect searchRect;
|
|
|
|
|
switch (dir) {
|
|
|
|
|
case DirDown:
|
|
|
|
@ -5359,16 +5357,16 @@ TQIconViewItem* TQIconView::findItem(Direction dir, const TQIconViewItem *fromIt
|
|
|
|
|
// DirDown/DirUp : primary distance X, secondary distance Y
|
|
|
|
|
// DirLeft/DirRight: primary distance Y, secondary distance X
|
|
|
|
|
if (d->arrangement == LeftToRight) {
|
|
|
|
|
// Left to right arrangement (icon view mode): use center as item reference
|
|
|
|
|
// Left to right arrangement (icon view mode): use (center, top) as item reference
|
|
|
|
|
switch (dir) {
|
|
|
|
|
case DirDown:
|
|
|
|
|
if (ir.center().x() > pos.x()) {
|
|
|
|
|
distPri = ir.center().x()-pos.x();
|
|
|
|
|
distSec = ir.center().y();
|
|
|
|
|
distSec = ir.top();
|
|
|
|
|
}
|
|
|
|
|
else if (ir.center().x() == pos.x() && ir.center().y() > pos.y()) {
|
|
|
|
|
else if (ir.center().x() == pos.x() && ir.top() > pos.y()) {
|
|
|
|
|
distPri = 0;
|
|
|
|
|
distSec = ir.center().y()-pos.y();
|
|
|
|
|
distSec = ir.top()-pos.y();
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
itemOK = false;
|
|
|
|
@ -5378,11 +5376,11 @@ TQIconViewItem* TQIconView::findItem(Direction dir, const TQIconViewItem *fromIt
|
|
|
|
|
case DirUp:
|
|
|
|
|
if (ir.center().x() < pos.x()) {
|
|
|
|
|
distPri = pos.x()-ir.center().x();
|
|
|
|
|
distSec = contentsHeight()-ir.center().y();
|
|
|
|
|
distSec = contentsHeight()-ir.top();
|
|
|
|
|
}
|
|
|
|
|
else if (ir.center().x() == pos.x() && ir.center().y() < pos.y()) {
|
|
|
|
|
else if (ir.center().x() == pos.x() && ir.top() < pos.y()) {
|
|
|
|
|
distPri = 0;
|
|
|
|
|
distSec = pos.y()-ir.center().y();
|
|
|
|
|
distSec = pos.y()-ir.top();
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
itemOK = false;
|
|
|
|
@ -5390,11 +5388,11 @@ TQIconViewItem* TQIconView::findItem(Direction dir, const TQIconViewItem *fromIt
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case DirRight:
|
|
|
|
|
if (ir.center().y() > pos.y()) {
|
|
|
|
|
distPri = ir.center().y()-pos.y();
|
|
|
|
|
if (ir.top() > pos.y()) {
|
|
|
|
|
distPri = ir.top()-pos.y();
|
|
|
|
|
distSec = ir.center().x();
|
|
|
|
|
}
|
|
|
|
|
else if (ir.center().y() == pos.y() && ir.center().x() > pos.x()) {
|
|
|
|
|
else if (ir.top() == pos.y() && ir.center().x() > pos.x()) {
|
|
|
|
|
distPri = 0;
|
|
|
|
|
distSec = ir.center().x()-pos.x();
|
|
|
|
|
}
|
|
|
|
@ -5404,11 +5402,11 @@ TQIconViewItem* TQIconView::findItem(Direction dir, const TQIconViewItem *fromIt
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case DirLeft:
|
|
|
|
|
if (ir.center().y() < pos.y()) {
|
|
|
|
|
distPri = pos.y()-ir.center().y();
|
|
|
|
|
if (ir.top() < pos.y()) {
|
|
|
|
|
distPri = pos.y()-ir.top();
|
|
|
|
|
distSec = contentsWidth()-ir.center().x();
|
|
|
|
|
}
|
|
|
|
|
else if (ir.center().y() == pos.y() && ir.center().x() < pos.x()) {
|
|
|
|
|
else if (ir.top() == pos.y() && ir.center().x() < pos.x()) {
|
|
|
|
|
distPri = 0;
|
|
|
|
|
distSec = pos.x()-ir.center().x();
|
|
|
|
|
}
|
|
|
|
@ -5422,8 +5420,8 @@ TQIconViewItem* TQIconView::findItem(Direction dir, const TQIconViewItem *fromIt
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// Top to bottom arrangement (multicolumn view mode): use left top corner as item reference
|
|
|
|
|
else {
|
|
|
|
|
// Top to bottom arrangement (multicolumn view mode): use (left, top) as item reference
|
|
|
|
|
switch (dir) {
|
|
|
|
|
case DirDown:
|
|
|
|
|
if (ir.left() > pos.x()) {
|
|
|
|
|