Ctrl+[Movement Keys] changes virtual desktop #9

Merged
MicheleC merged 3 commits from issue/2 into master 3 years ago

@ -31,6 +31,7 @@
#include <tqpainter.h>
#include <tqapplication.h>
#include <tqdragobject.h>
#include <tqobjectlist.h>
#include <tqtooltip.h>
#include <tdelocale.h>
@ -109,48 +110,75 @@ void KomposeDesktopWidget::initFonts()
// return (double)deskRect.width() / (double)deskRect.height();
// }
void KomposeDesktopWidget::setHighlight()
{
highlight = true;
repaint();
}
void KomposeDesktopWidget::clearHighlight()
{
highlight = false;
repaint();
}
void KomposeDesktopWidget::setInactive()
{
if( hasFocus() )
clearFocus();
}
void KomposeDesktopWidget::setActive()
{
// Focus first window (if there is one)
const TQObjectList *lst = children();
if ( lst )
{
TQObjectListIterator it( *lst );
TQWidget *widget;
while ( (widget = (TQWidget*)it.current() ) )
{
if (widget->inherits("KomposeTaskWidget"))
{
widget->setFocus();
break;
}
++it;
}
}
emit activated(this);
}
void KomposeDesktopWidget::leaveEvent ( TQEvent * )
{
// Unset highlight if cursor moves out of our rect
unsetCursor();
// Mark desktop as inactive if cursor moves out of our rect
// but not if it enters a child widget
TQRect deskRect;
deskRect.setTopLeft(mapToGlobal( TQPoint(0,0) ));
deskRect.setWidth(width());
deskRect.setHeight(height());
if ( !deskRect.contains( TQCursor::pos() ) )
highlight = false;
unsetCursor();
repaint();
setInactive();
}
void KomposeDesktopWidget::enterEvent ( TQEvent * )
{
setFocus();
setCursor( KCursor::handCursor() );
highlight = true;
repaint();
setActive();
}
void KomposeDesktopWidget::focusInEvent ( TQFocusEvent * )
{
highlight = true;
repaint();
setActive();
}
void KomposeDesktopWidget::focusOutEvent ( TQFocusEvent * )
{
// Unset highlight if cursor moves out of our rect
// but not if it enters a child widget
TQRect deskRect;
deskRect.setTopLeft(mapToGlobal( TQPoint(0,0) ));
deskRect.setWidth(width());
deskRect.setHeight(height());
if ( !deskRect.contains( TQCursor::pos() ) )
highlight = false;
repaint();
setInactive();
}
void KomposeDesktopWidget::mouseReleaseEvent ( TQMouseEvent * e )

@ -36,12 +36,18 @@ public:
~KomposeDesktopWidget();
void setHighlight();
void clearHighlight();
void setInactive();
void setActive();
// int getHeightForWidth( int w ) const;
// int getWidthForHeight( int h ) const;
// double getAspectRatio();
signals:
void contentsChanged();
void activated(KomposeDesktopWidget*);
protected:
void paintEvent ( TQPaintEvent * );

@ -33,7 +33,6 @@
#include <kdebug.h>
#include <krootpixmap.h>
KomposeFullscreenWidget::KomposeFullscreenWidget( int displayType, KomposeLayout *l )
: KomposeTaskContainerWidget( -1, 0, l ),
type(displayType)
@ -160,7 +159,8 @@ void KomposeFullscreenWidget::createDesktopWidgets()
//int col = i % 2;
//kdDebug() << "rc %d %d", row, col);
KomposeDesktopWidget *desktop = new KomposeDesktopWidget(i, this );
connect(desktop, SIGNAL(contentsChanged()), layout, SLOT(arrangeLayout()) );
connect( desktop, SIGNAL(contentsChanged()), layout, SLOT(arrangeLayout()) );
connect( desktop, SIGNAL(activated(KomposeDesktopWidget*)), this, SLOT(desktopChanged(KomposeDesktopWidget*)) );
desktop->show();
}
}
@ -190,7 +190,15 @@ void KomposeFullscreenWidget::mousePressEvent ( TQMouseEvent * e )
}
}
void KomposeFullscreenWidget::keyReleaseEvent ( TQKeyEvent * e )
void KomposeFullscreenWidget::keyPressEvent( TQKeyEvent *e )
{
if ( e->key() == TQt::Key_Control )
{
e->accept();
}
}
blu.256 marked this conversation as resolved
MicheleC commented 3 years ago
Review

Line with 'controlHold' is not required (see above)

Line with 'controlHold' is not required (see above)
void KomposeFullscreenWidget::keyReleaseEvent ( TQKeyEvent *e )
{
if ( e->key() == TQt::Key_Escape )
{
@ -198,14 +206,97 @@ void KomposeFullscreenWidget::keyReleaseEvent ( TQKeyEvent * e )
KomposeViewManager::instance()->closeCurrentView();
e->accept();
}
else if ( e->key() == TQt::Key_Control )
{
e->accept();
return;
}
blu.256 marked this conversation as resolved
MicheleC commented 3 years ago
Review

Line with 'controlHold' is not required (see above)

Line with 'controlHold' is not required (see above)
// Movement keys
else if ( e->key() == TQt::Key_Right || e->key() == TQt::Key_D || e->key() == TQt::Key_H ||
e->key() == TQt::Key_Left || e->key() == TQt::Key_A || e->key() == TQt::Key_J ||
e->key() == TQt::Key_Up || e->key() == TQt::Key_W || e->key() == TQt::Key_K ||
e->key() == TQt::Key_Down || e->key() == TQt::Key_S || e->key() == TQt::Key_L )
{
// Map keys to directions
int direction = DLAYOUT_RIGHT;
switch( e->key() )
{
case TQt::Key_Right:
case TQt::Key_D:
case TQt::Key_L:
direction = DLAYOUT_RIGHT;
break;
case TQt::Key_Left:
blu.256 marked this conversation as resolved
MicheleC commented 3 years ago
Review

The first 3 cases could be grouped together, less code and no possibility of different behavior by mistake from different keys.

    case TQt::Key_Right:
    case TQt::Key_D:
    case TQt::Key_L:
      direction = DLAYOUT_RIGHT;
      break;

Same applies for the other 9 cases (3 groups of 3 cases each)

The first 3 cases could be grouped together, less code and no possibility of different behavior by mistake from different keys. ``` case TQt::Key_Right: case TQt::Key_D: case TQt::Key_L: direction = DLAYOUT_RIGHT; break; ``` Same applies for the other 9 cases (3 groups of 3 cases each)
case TQt::Key_A:
case TQt::Key_H:
direction = DLAYOUT_LEFT;
break;
case TQt::Key_Up:
case TQt::Key_W:
case TQt::Key_K:
direction = DLAYOUT_TOP;
break;
case TQt::Key_Down:
case TQt::Key_S:
case TQt::Key_J:
direction = DLAYOUT_BOTTOM;
break;
}
focusNeighbourDesk( direction );
e->accept();
return;
}
else
{
kdDebug() << "KomposeFullscreenWidget::keyReleaseEvent - ignored..." << endl;
e->ignore();
}
KomposeTaskContainerWidget::keyReleaseEvent(e);
}
bool KomposeFullscreenWidget::focusNeighbourDesk( int direction )
{
bool successfull = false;
KomposeWidget *widget;
if ( ( widget = layout->getNeighbour( dynamic_cast<KomposeWidget*>(current), direction, WLAYOUT_BOTH ) ) != 0 )
{
kdDebug() << "KomposeFullscreenWidget::keyReleaseEvent - Focussing " << widget->className() << endl;
dynamic_cast<KomposeDesktopWidget*>(widget)->setActive();
successfull = true;
}
return successfull;
}
void KomposeFullscreenWidget::desktopChanged( KomposeDesktopWidget* desk )
{
kdDebug() << "KomposeFullscreenWidget: desktopChanged" << endl;
// Remove highlight from all other desks
const TQObjectList *lst = children();
if( lst )
{
TQObjectListIterator it( *lst );
TQWidget *widget;
while ( (widget = (TQWidget*)it.current() ) )
{
if ( widget->inherits("KomposeDesktopWidget") )
{
dynamic_cast<KomposeDesktopWidget*>(widget)->clearHighlight();
}
++it;
}
}
desk->setHighlight();
current = desk;
}
int KomposeFullscreenWidget::getHeightForWidth ( int w ) const
{
return (int)(((double)w / (double)width()) * (double)height());

@ -44,18 +44,25 @@ protected:
void initMenu();
void createDesktopWidgets();
void mouseReleaseEvent (TQMouseEvent *);
void mousePressEvent (TQMouseEvent *);
void keyReleaseEvent ( TQKeyEvent * e );
void mouseReleaseEvent( TQMouseEvent * );
void mousePressEvent( TQMouseEvent * );
void keyPressEvent( TQKeyEvent *e );
void keyReleaseEvent( TQKeyEvent *e );
// void paintEvent ( TQPaintEvent * );
bool focusNeighbourDesk( int direction );
void destroyChildWidgets();
// virtual void closeEvent ( TQCloseEvent * e );
protected slots:
void desktopChanged( KomposeDesktopWidget* desk );
private:
int type;
TDEPopupMenu *menu;
KRootPixmap *rootpix;
KomposeDesktopWidget *current;
};
#endif

@ -47,10 +47,14 @@ KomposeLayout::~KomposeLayout()
void KomposeLayout::setType( int t )
{
/*
if ( t == TLAYOUT_TASKCONTAINERS &&
!KomposeSettings::instance()->getDynamicVirtDeskLayout() )
t = TLAYOUT_GENERIC;
layoutType = t;
*/
layoutType = TLAYOUT_GENERIC;
}

@ -258,10 +258,12 @@ KomposePreferences::KomposePreferences()
TQVBoxLayout *page3Layout = new TQVBoxLayout( page3, 0, KDialog::spacingHint() );
TQVGroupBox *virtDesksLayoutGroupBox = new TQVGroupBox( i18n("Grouped by Virtual Desktops"), page3 );
/*
dynamicVirtDeskLayout = new TQCheckBox(i18n("Layout empty virtual desktops minimized"), virtDesksLayoutGroupBox );
TQString dynamicVirtDeskLayoutHelp = i18n("Check this if you want empty virtual desktops to take less space on the screen.\nUncheck it if you want them to be arranged statically, each of the same size.");
TQWhatsThis::add( dynamicVirtDeskLayout, dynamicVirtDeskLayoutHelp );
TQToolTip::add( dynamicVirtDeskLayout, dynamicVirtDeskLayoutHelp );
*/
TQGrid *desktopColorsGroupBox = new TQGrid( 2, virtDesksLayoutGroupBox );
desktopColorsGroupBox->setSpacing( 4 );
@ -337,7 +339,7 @@ void KomposePreferences::fillPages()
passiveScreenshots->setChecked( KomposeSettings::instance()->getPassiveScreenshots() );
screenshotGrabDelay->setValue( KomposeSettings::instance()->getScreenshotGrabDelay() / 1000000 );
cacheScaledPixmaps->setChecked( KomposeSettings::instance()->getCacheScaledPixmaps() );
dynamicVirtDeskLayout->setChecked( KomposeSettings::instance()->getDynamicVirtDeskLayout() );
// dynamicVirtDeskLayout->setChecked( KomposeSettings::instance()->getDynamicVirtDeskLayout() );
imageEffects->setChecked( KomposeSettings::instance()->getImageEffects() );
blurBackground->setChecked( KomposeSettings::instance()->getBlurBackground() );
@ -407,7 +409,7 @@ void KomposePreferences::slotApply()
KomposeSettings::instance()->setPassiveScreenshots( passiveScreenshots->isChecked() );
KomposeSettings::instance()->setScreenshotGrabDelay( screenshotGrabDelay->value() * 1000000 );
KomposeSettings::instance()->setCacheScaledPixmaps( cacheScaledPixmaps->isChecked() );
KomposeSettings::instance()->setDynamicVirtDeskLayout( dynamicVirtDeskLayout->isChecked() );
// KomposeSettings::instance()->setDynamicVirtDeskLayout( dynamicVirtDeskLayout->isChecked() );
KomposeSettings::instance()->setImageEffects( imageEffects->isChecked() );
KomposeSettings::instance()->setBlurBackground( blurBackground->isChecked() );
KomposeSettings::instance()->setShowDesktopNum( showDesktopNum->isChecked() );

@ -96,7 +96,7 @@ void KomposeSettings::readConfig()
passiveScreenshots = kapp->config()->readBoolEntry("passiveScreenshots", true);
screenshotGrabDelay = kapp->config()->readNumEntry("screenshotGrabDelay", 400000000);
dynamicVirtDeskLayout = kapp->config()->readBoolEntry("dynamicVirtDeskLayout", true);
// dynamicVirtDeskLayout = kapp->config()->readBoolEntry("dynamicVirtDeskLayout", true);
imageEffects = kapp->config()->readBoolEntry("imageEffects", true);
blurBackground = kapp->config()->readBoolEntry("blurBackground", true);
@ -160,7 +160,7 @@ void KomposeSettings::writeConfig()
kapp->config()->writeEntry("passiveScreenshots", passiveScreenshots );
kapp->config()->writeEntry("screenshotGrabDelay", screenshotGrabDelay);
kapp->config()->writeEntry("dynamicVirtDeskLayout", dynamicVirtDeskLayout);
// kapp->config()->writeEntry("dynamicVirtDeskLayout", dynamicVirtDeskLayout);
kapp->config()->writeEntry("imageEffects", imageEffects);
kapp->config()->writeEntry("blurBackground", blurBackground);

@ -106,38 +106,22 @@ void KomposeTaskContainerWidget::keyReleaseEvent ( TQKeyEvent * e )
switch( e->key() )
{
case TQt::Key_Right:
direction = DLAYOUT_RIGHT;
break;
case TQt::Key_D:
direction = DLAYOUT_RIGHT;
break;
case TQt::Key_L:
direction = DLAYOUT_RIGHT;
break;
case TQt::Key_Left:
direction = DLAYOUT_LEFT;
break;
case TQt::Key_A:
direction = DLAYOUT_LEFT;
break;
case TQt::Key_H:
direction = DLAYOUT_LEFT;
break;
case TQt::Key_Up:
direction = DLAYOUT_TOP;
break;
case TQt::Key_W:
direction = DLAYOUT_TOP;
break;
case TQt::Key_K:
direction = DLAYOUT_TOP;
break;
case TQt::Key_Down:
direction = DLAYOUT_BOTTOM;
break;
case TQt::Key_S:
direction = DLAYOUT_BOTTOM;
break;
case TQt::Key_J:
direction = DLAYOUT_BOTTOM;
break;

Loading…
Cancel
Save