def IsDifferentDockingPosition(pane1, pane2):
    """
    Returns whether `pane1` and `pane2` are in a different docking position
    based on pane status, docking direction, docking layer and docking row.

    :param `pane1`: a :class:`AuiPaneInfo` instance;
    :param `pane2`: another :class:`AuiPaneInfo` instance.
    """
    return (pane1.IsFloating() != pane2.IsFloating() or pane1.
        dock_direction != pane2.dock_direction or pane1.dock_layer != pane2
        .dock_layer or pane1.dock_row != pane2.dock_row)
