diff options
Diffstat (limited to 'kicker/taskmanager')
| -rw-r--r-- | kicker/taskmanager/taskmanager.cpp | 12 | ||||
| -rw-r--r-- | kicker/taskmanager/taskmanager.h | 16 | ||||
| -rw-r--r-- | kicker/taskmanager/taskrmbmenu.cpp | 41 | ||||
| -rw-r--r-- | kicker/taskmanager/taskrmbmenu.h | 5 |
4 files changed, 63 insertions, 11 deletions
diff --git a/kicker/taskmanager/taskmanager.cpp b/kicker/taskmanager/taskmanager.cpp index 54bf6d919..014cf5f1c 100644 --- a/kicker/taskmanager/taskmanager.cpp +++ b/kicker/taskmanager/taskmanager.cpp @@ -26,6 +26,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <tqimage.h> #include <tqtimer.h> +#include <tdeapplication.h> #include <tdeconfig.h> #include <kdebug.h> #include <tdeglobal.h> @@ -36,6 +37,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <twinmodule.h> #include <kxerrorhandler.h> #include <netwm.h> +#include "dcopclient.h" #include "taskmanager.h" #include "taskmanager.moc" @@ -57,7 +59,7 @@ TaskManager::TaskManager() : TQObject(), _active(0), _startup_info(0), - m_winModule(new KWinModule()), + m_winModule(new TWinModule()), m_trackGeometry(false) { TDEGlobal::locale()->insertCatalogue("libtaskmanager"); @@ -1452,6 +1454,14 @@ void Task::updateWindowPixmap() #endif // THUMBNAILING_POSSIBLE } +void Task::tileTo(int position) +{ + TQByteArray params; + TQDataStream stream(params, IO_WriteOnly); + stream << _win << position; + tdeApp->dcopClient()->send("twin", "KWinInterface", "tileWindowToBorder(unsigned long int, int)", params); +} + Startup::Startup(const TDEStartupInfoId& id, const TDEStartupInfoData& data, TQObject * parent, const char *name) : TQObject(parent, name), _id(id), _data(data) diff --git a/kicker/taskmanager/taskmanager.h b/kicker/taskmanager/taskmanager.h index 289c6af55..2b517c5de 100644 --- a/kicker/taskmanager/taskmanager.h +++ b/kicker/taskmanager/taskmanager.h @@ -57,7 +57,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #endif #endif -class KWinModule; +class TWinModule; class TaskManager; typedef TQValueList<WId> WindowList; @@ -66,7 +66,7 @@ typedef TQValueList<WId> WindowList; * A dynamic interface to a task (main window). * * @see TaskManager - * @see KWinModule + * @see TWinModule */ class TDE_EXPORT Task: public TQObject, public TDEShared { @@ -423,6 +423,12 @@ public slots: */ void updateThumbnail(); + /** + * Tile the task's window to the specified position. The position is one of the + * valid value for ActiveBorder enum + */ + void tileTo(int); + signals: /** * Indicates that this task has changed in some way. @@ -563,7 +569,7 @@ private: * * @see Task * @see Startup - * @see KWinModule + * @see TWinModule */ class TDE_EXPORT TaskManager : public TQObject { @@ -628,7 +634,7 @@ public: */ static bool isOnScreen( int screen, const WId wid ); - KWinModule* winModule() const { return m_winModule; } + TWinModule* winModule() const { return m_winModule; } void setXCompositeEnabled(bool state); static bool xCompositeEnabled() { return m_xCompositeEnabled != 0; } @@ -701,7 +707,7 @@ private: WindowList _skiptaskbar_windows; Startup::List _startups; TDEStartupInfo* _startup_info; - KWinModule* m_winModule; + TWinModule* m_winModule; bool m_trackGeometry; static TaskManager* m_self; diff --git a/kicker/taskmanager/taskrmbmenu.cpp b/kicker/taskmanager/taskrmbmenu.cpp index 943160d26..31c48d61c 100644 --- a/kicker/taskmanager/taskrmbmenu.cpp +++ b/kicker/taskmanager/taskrmbmenu.cpp @@ -24,6 +24,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <assert.h> +#include <tdeglobal.h> #include <kiconloader.h> #include <tdelocale.h> @@ -44,6 +45,8 @@ TaskRMBMenu::TaskRMBMenu(const Task::List& theTasks, bool show, TQPopupMenu* mov , showAll( show ) , taskMoveMenu( moveMenu ) { + TDEGlobal::iconLoader()->addAppDir("twin"); + assert(tasks.count() > 0); if (tasks.count() == 1) { @@ -68,9 +71,14 @@ void TaskRMBMenu::fillMenu(Task::Ptr t) int id; setCheckable(true); - insertItem(i18n("Ad&vanced"), makeAdvancedMenu(t)); bool checkActions = KWin::allowedActionsSupported(); + insertItem(i18n("Ad&vanced"), makeAdvancedMenu(t)); + + id = insertItem(i18n("T&ile"), makeTileMenu(t)); + setItemEnabled(id, !checkActions || + (t->info().actionSupported(NET::ActionMove) && t->info().actionSupported(NET::ActionResize))); + if (TaskManager::the()->numberOfDesktops() > 1) { id = insertItem(i18n("To &Desktop"), makeDesktopsMenu(t)); @@ -109,7 +117,7 @@ void TaskRMBMenu::fillMenu(Task::Ptr t) insertSeparator(); if (taskMoveMenu) { - taskMoveMenu->reparent(this, taskMoveMenu->getWFlags(), taskMoveMenu->geometry().topLeft(), FALSE); + taskMoveMenu->reparent(this, taskMoveMenu->getWFlags(), taskMoveMenu->geometry().topLeft(), false); insertItem(i18n("Move Task Button"), taskMoveMenu); insertSeparator(); @@ -201,7 +209,7 @@ void TaskRMBMenu::fillMenu() enable = false; if (taskMoveMenu) { - taskMoveMenu->reparent(this, taskMoveMenu->getWFlags(), taskMoveMenu->geometry().topLeft(), FALSE); + taskMoveMenu->reparent(this, taskMoveMenu->getWFlags(), taskMoveMenu->geometry().topLeft(), false); insertItem(i18n("Move Task Button"), taskMoveMenu); insertSeparator(); @@ -280,6 +288,33 @@ TQPopupMenu* TaskRMBMenu::makeDesktopsMenu() return m; } +TQPopupMenu* TaskRMBMenu::makeTileMenu(Task::Ptr t) +{ + TQPopupMenu *m = new TQPopupMenu( this ); + + // Tile to side (the menu id matched the ActiveBorder index used for tiling) + int id = m->insertItem( UserIconSet("tile_left"), i18n("&Left"), t, TQ_SLOT( tileTo(int) ) ); + m->setItemParameter( id, 6 ); + id = m->insertItem( UserIconSet("tile_right"), i18n("&Right"), t, TQ_SLOT( tileTo(int) ) ); + m->setItemParameter( id, 2 ); + id = m->insertItem( UserIconSet("tile_top"), i18n("&Top"), t, TQ_SLOT( tileTo(int) ) ); + m->setItemParameter( id, 0 ); + id = m->insertItem( UserIconSet("tile_bottom"), i18n("&Bottom"), t, TQ_SLOT( tileTo(int) ) ); + m->setItemParameter( id, 4 ); + + // Tile to corner (the menu id matched the ActiveBorder index used for tiling) + id = m->insertItem( UserIconSet("tile_topleft"), i18n("Top &Left"), t, TQ_SLOT( tileTo(int) ) ); + m->setItemParameter( id, 7 ); + id = m->insertItem( UserIconSet("tile_topright"), i18n("Top &Right"), t, TQ_SLOT( tileTo(int) ) ); + m->setItemParameter( id, 1 ); + id = m->insertItem( UserIconSet("tile_bottomleft"), i18n("Bottom L&eft"), t, TQ_SLOT( tileTo(int) ) ); + m->setItemParameter( id, 5 ); + id = m->insertItem( UserIconSet("tile_bottomright"), i18n("&Bottom R&ight"), t, TQ_SLOT( tileTo(int) ) ); + m->setItemParameter( id, 3 ); + + return m; +} + void TaskRMBMenu::slotMinimizeAll() { Task::List::iterator itEnd = tasks.end(); diff --git a/kicker/taskmanager/taskrmbmenu.h b/kicker/taskmanager/taskrmbmenu.h index b82d0338d..5dd66b98f 100644 --- a/kicker/taskmanager/taskrmbmenu.h +++ b/kicker/taskmanager/taskrmbmenu.h @@ -38,9 +38,10 @@ public: private: void fillMenu(Task::Ptr); void fillMenu(); - TQPopupMenu* makeAdvancedMenu(Task::Ptr); + TQPopupMenu* makeAdvancedMenu(Task::Ptr); TQPopupMenu* makeDesktopsMenu(Task::Ptr); TQPopupMenu* makeDesktopsMenu(); + TQPopupMenu* makeTileMenu(Task::Ptr); private slots: void slotMinimizeAll(); @@ -48,7 +49,7 @@ private slots: void slotRestoreAll(); void slotShadeAll(); void slotCloseAll(); - void slotAllToDesktop( int desktop ); + void slotAllToDesktop(int desktop); void slotAllToCurrentDesktop(); private: |
