private void mouseAction(int idx) {
        /* Spurious entry into cell (Random mouse movement) */
        if (m_dragFlag == false || State.gameOverFlag) {
            return;
        }

        boolean adjacent = checkAdjacentCell(idx);

        if (m_Button[idx].isSelected() == false) {
            if (adjacent || m_wordStack.isEmpty()) {
                m_wordStack.push(idx);
                markCells();
                keyAction(false);
            }
        } else if (m_wordStack.front() == idx) /* re-entering most recently marked button */ {
            unmarkCells(m_wordStack.pop());
            /* Deduct last char */
            wordJTextField.setText(wordJTextField.getText().substring(0, wordJTextField.getText().length() - 1));
            keyAction(false);
        } else {    /* re-entering second most recently marked button */

            Stack tempStack = new Stack(m_wordStack);
            if (tempStack.numberOfElements() <= 1) {
                return;
            }
            int mostRecent = (Integer) tempStack.pop();
            int secondRecent = (Integer) tempStack.pop();

            if (idx == secondRecent) {
                unmarkCells(m_wordStack.pop());
                /* Deduct last char */
                wordJTextField.setText(wordJTextField.getText().substring(0, wordJTextField.getText().length() - 1));
                keyAction(false);
            }
        }
    }