There is another, better way to go at this; split up the function.
Put the top level handling back in bitcoingui.cpp, where it belongs:

    bool BitcoinGUI::handlePaymentRequest(const SendCoinsRecipient& recipient)
    {
        // URI has to be valid
        if (walletFrame->handlePaymentRequest(recipient))
        {
            gotoSendCoinsPage();
            showNormalIfMinimized();
            return true;
        }
        else
            return false;
    }

Then make the WalletView function simply

    bool WalletView::handlePaymentRequest(const SendCoinsRecipient& recipient)
    {
        return sendCoinsPage->handlePaymentRequest(recipient));
    }