Changeset 105


Ignore:
Timestamp:
Sep 24, 2017, 5:09:58 PM (8 years ago)
Author:
Gregg Young
Message:

Prevent stand alone taskbar from switching z-order or hiding while a menu is open. Ticket #42 Improve grouping logic to account for program type being PROG_DEFAULT in some cases and its actual type (ie PROG_PM) in others Ticket #45

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/taskbar.c

    r102 r105  
    10401040            (WinQuerySwitchEntry
    10411041             (WinQuerySwitchHandle(pbData->hwndFirstItem, 0), &swctl1stItem),
    1042              swctl.bProgType == swctl1stItem.bProgType))
     1042             (swctl.bProgType == 0 || swctl1stItem.bProgType == 0 ||
     1043             swctl.bProgType == swctl1stItem.bProgType)))
    10431044            hwndBtnSameHmte = hwndNext;
    10441045    WinEndEnumWindows(henum);
     
    14301431// 0xFFFF means errors in getting object title, don't make further attempts
    14311432                    if (hwndBtnSameHmte != 0 && pbData->pszObjName == NULL
    1432                         && pbData->usObjHandle != 0xFFFF) {
     1433                        && pbData->usObjHandle != 0xFFFF) {
    14331434                        if (ulFunc != 4 && swctl.bProgType == PROG_PM
    1434                             && !IsWPSPid(swctl.idProcess)) {
     1435                            && !IsWPSPid(swctl.idProcess)) {
    14351436                            WinPostMsg(pbData->hwndFirstItem, atomGetProcCmd,
    14361437                                       0, mp2);
     
    18641865    case LSWM_MOUSEOVERBTN:{
    18651866            BTNDATA *pbtnData;
    1866             HWND hwndOldOver;
     1867            HWND hwndOldOver;
    18671868
    18681869            hwndOldOver = hwndMouseOver;
     
    19011902            }
    19021903#ifndef XWORKPLACE
    1903                 WinStartTimer(plswData->hab, hwnd, TSKHIDEDELAYTIMERID, TSKHIDEDELAYINTERVAL);
     1904            WinStartTimer(plswData->hab, hwnd, TSKHIDEDELAYTIMERID, TSKHIDEDELAYINTERVAL);
    19041905#endif
    19051906            break;
     
    21932194                usOldActive = usHswActive;
    21942195                hwndActive = WinQueryActiveWindow(HWND_DESKTOP);
    2195                 usHswActive = WinQuerySwitchHandle(hwndActive, 0) & 0xFFFF;
    2196                 if (usHswActive != usOldActive) {
    2197                     hwndHsw = GetBtnFromHsw(hwnd, usOldActive);
     2196                usHswActive = WinQuerySwitchHandle(hwndActive, 0) & 0xFFFF;
     2197                if (usHswActive != usOldActive) {
     2198                    WinInvalidateRect(hwnd, NULL, TRUE);
     2199                    /*hwndHsw = GetBtnFromHsw(hwnd, usOldActive);
    21982200                    WinInvalidateRect(IsWindowClass(hwndHsw, "#3") ? hwndHsw :
    21992201                                      WinQueryWindow(hwndHsw, QW_OWNER), NULL,
     
    22022204                    WinInvalidateRect(IsWindowClass(hwndHsw, "#3") ? hwndHsw :
    22032205                                      WinQueryWindow(hwndHsw, QW_OWNER), NULL,
    2204                                       FALSE);
     2206                                      FALSE); */
    22052207                }
    22062208                break;
     
    22142216                RECTL rcl;
    22152217                ULONG fl = SWP_SHOW;
    2216 
     2218                BTNDATA *pbtnData;
     2219                static HWND groupmenuhwnd = 0;
     2220
     2221                if ((pbtnData = WinQueryWindowPtr(hwndMouseOver, 0)) != NULL &&
     2222                    pbtnData->hwndSubWinMenu != 0)
     2223                    groupmenuhwnd = pbtnData->hwndSubWinMenu;
     2224                if (!WinIsWindow(plswData->hab, groupmenuhwnd))
     2225                   groupmenuhwnd = 0;
    22172226                if (!WinIsWindowVisible(plswData->hwndMenu) &&
    2218                     !WinIsWindowVisible(plswData->hwndTaskMenu))
     2227                    !WinIsWindowVisible(plswData->hwndTaskMenu) &&
     2228                    !WinIsWindowVisible(groupmenuhwnd))
    22192229                    fl = SWP_ZORDER;
    22202230                WinQueryWindowRect(plswData->hwndTaskBar, &rcl);
     
    22232233                    usOldY = ptl.y;
    22242234                    if (ptl.y > 2 * cyTskBar && ptl.y < cyScreen - 2 * cyTskBar) {
    2225                 WinSetWindowPos(plswData->hwndTaskBar,
    2226                                 HWND_BOTTOM, 0, 0, 0, 0,
    2227                                 (plswData->Settings.bTaskBarAlwaysVisible ? fl :
    2228                                  SWP_HIDE));
    2229                 WinInvalidateRect(plswData->hwndTaskBar, NULL, TRUE);
     2235                        if (!WinIsWindowVisible(plswData->hwndMenu) &&
     2236                            !WinIsWindowVisible(plswData->hwndTaskMenu)&&
     2237                            !WinIsWindowVisible(groupmenuhwnd)) {
     2238                            WinSetWindowPos(plswData->hwndTaskBar,
     2239                                            HWND_BOTTOM, 0, 0, 0, 0,
     2240                                            (plswData->Settings.bTaskBarAlwaysVisible ? fl :
     2241                                             SWP_HIDE));
     2242                            WinInvalidateRect(plswData->hwndTaskBar, NULL, TRUE);
     2243                        }
    22302244                    }
    22312245                }
Note: See TracChangeset for help on using the changeset viewer.