WordPress.org

Make WordPress Core

Ticket #19191: 19191.diff

File 19191.diff, 2.8 KB (added by johnkleinschmidt, 4 years ago)

Better patch that fixes tabbing through menus a second time

  • wp-admin/menu-header.php

     
    8383                                $menu_file = substr( $menu_file, 0, $pos ); 
    8484                        if ( ! empty( $menu_hook ) || ( ('index.php' != $submenu_items[0][2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) { 
    8585                                $admin_is_parent = true; 
    86                                 echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu_items[0][2]}'>$img</a></div>$arrow<a href='admin.php?page={$submenu_items[0][2]}'$class$tabindex>$title</a>"; 
     86                                echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu_items[0][2]}' tabindex='-1'>$img</a></div>$arrow<a href='admin.php?page={$submenu_items[0][2]}'$class$tabindex>$title</a>"; 
    8787                        } else { 
    88                                 echo "\n\t<div class='wp-menu-image'><a href='{$submenu_items[0][2]}'>$img</a></div>$arrow<a href='{$submenu_items[0][2]}'$class$tabindex>$title</a>"; 
     88                                echo "\n\t<div class='wp-menu-image'><a href='{$submenu_items[0][2]}' tabindex='-1'>$img</a></div>$arrow<a href='{$submenu_items[0][2]}'$class$tabindex>$title</a>"; 
    8989                        } 
    9090                } elseif ( ! empty( $item[2] ) && current_user_can( $item[1] ) ) { 
    9191                        $menu_hook = get_plugin_page_hook( $item[2], 'admin.php' ); 
     
    9494                                $menu_file = substr( $menu_file, 0, $pos ); 
    9595                        if ( ! empty( $menu_hook ) || ( ('index.php' != $item[2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) { 
    9696                                $admin_is_parent = true; 
    97                                 echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}'>$img</a></div>$arrow<a href='admin.php?page={$item[2]}'$class$tabindex>{$item[0]}</a>"; 
     97                                echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}' tabindex='-1'>$img</a></div>$arrow<a href='admin.php?page={$item[2]}'$class$tabindex>{$item[0]}</a>"; 
    9898                        } else { 
    99                                 echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}'>$img</a></div>$arrow<a href='{$item[2]}'$class$tabindex>{$item[0]}</a>"; 
     99                                echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}' tabindex='-1'>$img</a></div>$arrow<a href='{$item[2]}'$class$tabindex>{$item[0]}</a>"; 
    100100                        } 
    101101                } 
    102102 
  • wp-admin/js/common.dev.js

     
    228228 
    229229        // Admin menu keyboard navigation. 
    230230        $('li.wp-has-submenu').focusin( function() { 
     231                $('li.focused').removeClass('focused'); 
    231232                $(this).addClass('focused'); 
    232         }).focusout( function() { 
    233                 $(this).removeClass('focused'); 
    234233        }); 
    235  
     234        $('li.wp-has-submenu').last().focusout( function(e) { 
     235                if ($(this).find('a').last()[0] == e.target) { 
     236                        $(this).removeClass('focused'); 
     237                } 
     238        }); 
     239         
    236240        // If the mouse is used on the menu, shift focus to the mouse. 
    237241        menu.mouseover( function(e) { 
    238242                $('li.focused', this).removeClass('focused');