Changeset View
Changeset View
Standalone View
Standalone View
libtaskmanager/xwindowtasksmodel.cpp
Show First 20 Lines • Show All 358 Lines • ▼ Show 20 Line(s) | 318 | { | |||
---|---|---|---|---|---|
359 | if (properties & NET::WMWindowType) { | 359 | if (properties & NET::WMWindowType) { | ||
360 | wipeInfoCache = true; | 360 | wipeInfoCache = true; | ||
361 | changedRoles << SkipTaskbar; | 361 | changedRoles << SkipTaskbar; | ||
362 | } | 362 | } | ||
363 | 363 | | |||
364 | if (properties2 & NET::WM2AllowedActions) { | 364 | if (properties2 & NET::WM2AllowedActions) { | ||
365 | wipeInfoCache = true; | 365 | wipeInfoCache = true; | ||
366 | changedRoles << IsClosable << IsMovable << IsResizable << IsMaximizable << IsMinimizable; | 366 | changedRoles << IsClosable << IsMovable << IsResizable << IsMaximizable << IsMinimizable; | ||
367 | changedRoles << IsFullScreenable << IsShadeable << IsVirtualDesktopChangeable; | 367 | changedRoles << IsFullScreenable << IsShadeable << IsVirtualDesktopsChangeable; | ||
368 | } | 368 | } | ||
369 | 369 | | |||
370 | if (properties & NET::WMDesktop) { | 370 | if (properties & NET::WMDesktop) { | ||
371 | wipeInfoCache = true; | 371 | wipeInfoCache = true; | ||
372 | changedRoles << VirtualDesktop << IsOnAllVirtualDesktops; | 372 | changedRoles << VirtualDesktops << IsOnAllVirtualDesktops; | ||
373 | } | 373 | } | ||
374 | 374 | | |||
375 | if (properties & NET::WMGeometry) { | 375 | if (properties & NET::WMGeometry) { | ||
376 | wipeInfoCache = true; | 376 | wipeInfoCache = true; | ||
377 | changedRoles << Geometry << ScreenGeometry; | 377 | changedRoles << Geometry << ScreenGeometry; | ||
378 | } | 378 | } | ||
379 | 379 | | |||
380 | if (properties2 & NET::WM2Activities) { | 380 | if (properties2 & NET::WM2Activities) { | ||
▲ Show 20 Lines • Show All 204 Lines • ▼ Show 20 Line(s) | 572 | { | |||
585 | } else if (role == AppName) { | 585 | } else if (role == AppName) { | ||
586 | return d->appData(window).name; | 586 | return d->appData(window).name; | ||
587 | } else if (role == GenericName) { | 587 | } else if (role == GenericName) { | ||
588 | return d->appData(window).genericName; | 588 | return d->appData(window).genericName; | ||
589 | } else if (role == LauncherUrl) { | 589 | } else if (role == LauncherUrl) { | ||
590 | return d->launcherUrl(window); | 590 | return d->launcherUrl(window); | ||
591 | } else if (role == LauncherUrlWithoutIcon) { | 591 | } else if (role == LauncherUrlWithoutIcon) { | ||
592 | return d->launcherUrl(window, false /* encodeFallbackIcon */); | 592 | return d->launcherUrl(window, false /* encodeFallbackIcon */); | ||
593 | } else if (role == LegacyWinIdList) { | 593 | } else if (role == WinIdList) { | ||
594 | return QVariantList() << window; | 594 | return QVariantList() << window; | ||
595 | } else if (role == MimeType) { | 595 | } else if (role == MimeType) { | ||
596 | return d->mimeType(); | 596 | return d->mimeType(); | ||
597 | } else if (role == MimeData) { | 597 | } else if (role == MimeData) { | ||
598 | return QByteArray((char*)&window, sizeof(window)); | 598 | return QByteArray((char*)&window, sizeof(window)); | ||
599 | } else if (role == IsWindow) { | 599 | } else if (role == IsWindow) { | ||
600 | return true; | 600 | return true; | ||
601 | } else if (role == IsActive) { | 601 | } else if (role == IsActive) { | ||
Show All 20 Lines | |||||
622 | } else if (role == IsFullScreenable) { | 622 | } else if (role == IsFullScreenable) { | ||
623 | return d->windowInfo(window)->actionSupported(NET::ActionFullScreen); | 623 | return d->windowInfo(window)->actionSupported(NET::ActionFullScreen); | ||
624 | } else if (role == IsFullScreen) { | 624 | } else if (role == IsFullScreen) { | ||
625 | return d->windowInfo(window)->hasState(NET::FullScreen); | 625 | return d->windowInfo(window)->hasState(NET::FullScreen); | ||
626 | } else if (role == IsShadeable) { | 626 | } else if (role == IsShadeable) { | ||
627 | return d->windowInfo(window)->actionSupported(NET::ActionShade); | 627 | return d->windowInfo(window)->actionSupported(NET::ActionShade); | ||
628 | } else if (role == IsShaded) { | 628 | } else if (role == IsShaded) { | ||
629 | return d->windowInfo(window)->hasState(NET::Shaded); | 629 | return d->windowInfo(window)->hasState(NET::Shaded); | ||
630 | } else if (role == IsVirtualDesktopChangeable) { | 630 | } else if (role == IsVirtualDesktopsChangeable) { | ||
631 | return d->windowInfo(window)->actionSupported(NET::ActionChangeDesktop); | 631 | return d->windowInfo(window)->actionSupported(NET::ActionChangeDesktop); | ||
632 | } else if (role == VirtualDesktop) { | 632 | } else if (role == VirtualDesktops) { | ||
633 | return d->windowInfo(window)->desktop(); | 633 | return QVariantList() << d->windowInfo(window)->desktop(); | ||
mart: {} initializer? | |||||
hein: This style is used all over the codebase, better in a seperate patch. | |||||
634 | } else if (role == IsOnAllVirtualDesktops) { | 634 | } else if (role == IsOnAllVirtualDesktops) { | ||
635 | return d->windowInfo(window)->onAllDesktops(); | 635 | return d->windowInfo(window)->onAllDesktops(); | ||
636 | } else if (role == Geometry) { | 636 | } else if (role == Geometry) { | ||
637 | return d->windowInfo(window)->frameGeometry(); | 637 | return d->windowInfo(window)->frameGeometry(); | ||
638 | } else if (role == ScreenGeometry) { | 638 | } else if (role == ScreenGeometry) { | ||
639 | return screenGeometry(d->windowInfo(window)->frameGeometry().center()); | 639 | return screenGeometry(d->windowInfo(window)->frameGeometry().center()); | ||
640 | } else if (role == Activities) { | 640 | } else if (role == Activities) { | ||
641 | return d->windowInfo(window)->activities(); | 641 | return d->windowInfo(window)->activities(); | ||
▲ Show 20 Lines • Show All 260 Lines • ▼ Show 20 Line(s) | 893 | { | |||
902 | 902 | | |||
903 | if (info->hasState(NET::Shaded)) { | 903 | if (info->hasState(NET::Shaded)) { | ||
904 | ni.setState(NET::States(), NET::Shaded); | 904 | ni.setState(NET::States(), NET::Shaded); | ||
905 | } else { | 905 | } else { | ||
906 | ni.setState(NET::Shaded, NET::Shaded); | 906 | ni.setState(NET::Shaded, NET::Shaded); | ||
907 | } | 907 | } | ||
908 | } | 908 | } | ||
909 | 909 | | |||
910 | void XWindowTasksModel::requestVirtualDesktop(const QModelIndex &index, qint32 desktop) | 910 | void XWindowTasksModel::requestVirtualDesktops(const QModelIndex &index, const QVariantList &desktops) | ||
911 | { | 911 | { | ||
912 | if (!index.isValid() || index.model() != this || index.row() < 0 || index.row() >= d->windows.count()) { | 912 | if (!index.isValid() || index.model() != this || index.row() < 0 || index.row() >= d->windows.count()) { | ||
913 | return; | 913 | return; | ||
914 | } | 914 | } | ||
915 | 915 | | |||
916 | int desktop = 0; | ||||
917 | | ||||
918 | if (!desktops.isEmpty()) { | ||||
919 | bool ok = false; | ||||
920 | | ||||
921 | desktop = desktops.first().toUInt(&ok); | ||||
922 | | ||||
923 | if (!ok) { | ||||
924 | return; | ||||
925 | } | ||||
926 | } | ||||
927 | | ||||
928 | if (desktop > KWindowSystem::numberOfDesktops()) { | ||||
929 | return; | ||||
930 | } | ||||
931 | | ||||
916 | const WId window = d->windows.at(index.row()); | 932 | const WId window = d->windows.at(index.row()); | ||
917 | const KWindowInfo *info = d->windowInfo(window); | 933 | const KWindowInfo *info = d->windowInfo(window); | ||
918 | 934 | | |||
919 | if (desktop == 0) { | 935 | if (desktop == 0) { | ||
920 | if (info->onAllDesktops()) { | 936 | if (info->onAllDesktops()) { | ||
921 | KWindowSystem::setOnDesktop(window, KWindowSystem::currentDesktop()); | 937 | KWindowSystem::setOnDesktop(window, KWindowSystem::currentDesktop()); | ||
922 | KWindowSystem::forceActiveWindow(window); | 938 | KWindowSystem::forceActiveWindow(window); | ||
923 | } else { | 939 | } else { | ||
924 | KWindowSystem::setOnAllDesktops(window, true); | 940 | KWindowSystem::setOnAllDesktops(window, true); | ||
925 | } | 941 | } | ||
926 | 942 | | |||
927 | return; | 943 | return; | ||
928 | // FIXME Move add-new-desktop logic up into proxy. | 944 | } | ||
929 | } else if (desktop > KWindowSystem::numberOfDesktops()) { | 945 | | ||
930 | desktop = KWindowSystem::numberOfDesktops() + 1; | 946 | KWindowSystem::setOnDesktop(window, desktop); | ||
947 | | ||||
948 | if (desktop == KWindowSystem::currentDesktop()) { | ||||
949 | KWindowSystem::forceActiveWindow(window); | ||||
950 | } | ||||
951 | } | ||||
952 | | ||||
953 | void XWindowTasksModel::requestNewVirtualDesktop(const QModelIndex &index) | ||||
954 | { | ||||
955 | if (!index.isValid() || index.model() != this || index.row() < 0 || index.row() >= d->windows.count()) { | ||||
956 | return; | ||||
957 | } | ||||
958 | | ||||
959 | const WId window = d->windows.at(index.row()); | ||||
960 | const int desktop = KWindowSystem::numberOfDesktops() + 1; | ||||
931 | 961 | | |||
932 | // FIXME Arbitrary limit of 20 copied from old code. | 962 | // FIXME Arbitrary limit of 20 copied from old code. | ||
933 | if (desktop > 20) { | 963 | if (desktop > 20) { | ||
934 | return; | 964 | return; | ||
935 | } | 965 | } | ||
936 | 966 | | |||
937 | NETRootInfo ri(QX11Info::connection(), NET::NumberOfDesktops); | 967 | NETRootInfo ri(QX11Info::connection(), NET::NumberOfDesktops); | ||
938 | ri.setNumberOfDesktops(desktop); | 968 | ri.setNumberOfDesktops(desktop); | ||
939 | } | | |||
940 | 969 | | |||
941 | KWindowSystem::setOnDesktop(window, desktop); | 970 | KWindowSystem::setOnDesktop(window, desktop); | ||
942 | | ||||
943 | if (desktop == KWindowSystem::currentDesktop()) { | | |||
944 | KWindowSystem::forceActiveWindow(window); | | |||
945 | } | | |||
946 | } | 971 | } | ||
947 | 972 | | |||
948 | void XWindowTasksModel::requestActivities(const QModelIndex &index, const QStringList &activities) | 973 | void XWindowTasksModel::requestActivities(const QModelIndex &index, const QStringList &activities) | ||
949 | { | 974 | { | ||
950 | if (!index.isValid() || index.model() != this || index.row() < 0 || index.row() >= d->windows.count()) { | 975 | if (!index.isValid() || index.model() != this || index.row() < 0 || index.row() >= d->windows.count()) { | ||
951 | return; | 976 | return; | ||
952 | } | 977 | } | ||
953 | 978 | | |||
▲ Show 20 Lines • Show All 115 Lines • Show Last 20 Lines |
{} initializer?