WordPress.org

Make WordPress Core

Ticket #19191: 19191.diff

File 19191.diff, 2.8 KB (added by johnkleinschmidt, 7 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');