Cleanup: Mark methods with the override keyword.

- Delete unneeded CFFL_ComboBox::CanCopy() and friends.
- Delete unneeded CFFL_FormFiller::CanCopy() and friends.
- Delete unneeded CFFL_TextField::CanCopy() and friends.
- Delete unneeded FormFiller::DoCopy() and friends.
- Rename CFFL_FormFiller::On{Set,Kill}Focus to avoid conflicts.

BUG=pdfium:185
R=thakis@chromium.org

Review URL: https://codereview.chromium.org/1283493004 .
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
index c07806c..cc6c9e9 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
@@ -512,7 +512,7 @@
                           int pixels,
                           int image_width,
                           int image_height,
-                          FX_BOOL bTransMask = FALSE) const;
+                          FX_BOOL bTransMask = FALSE) const override;
 
   FX_FLOAT m_WhitePoint[3];
   FX_FLOAT m_BlackPoint[3];
diff --git a/fpdfsdk/include/formfiller/FFL_ComboBox.h b/fpdfsdk/include/formfiller/FFL_ComboBox.h
index 5be7198..5bfbc12 100644
--- a/fpdfsdk/include/formfiller/FFL_ComboBox.h
+++ b/fpdfsdk/include/formfiller/FFL_ComboBox.h
@@ -25,49 +25,40 @@
                       public IPWL_Edit_Notify {
  public:
   CFFL_ComboBox(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pWidget);
-  virtual ~CFFL_ComboBox();
+  ~CFFL_ComboBox() override;
 
-  virtual PWL_CREATEPARAM GetCreateParam();
-  virtual CPWL_Wnd* NewPDFWindow(const PWL_CREATEPARAM& cp,
-                                 CPDFSDK_PageView* pPageView);
+  // CFFL_FormFiller:
+  PWL_CREATEPARAM GetCreateParam() override;
+  CPWL_Wnd* NewPDFWindow(const PWL_CREATEPARAM& cp,
+                         CPDFSDK_PageView* pPageView) override;
+  FX_BOOL OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags) override;
+  FX_BOOL IsDataChanged(CPDFSDK_PageView* pPageView) override;
+  void SaveData(CPDFSDK_PageView* pPageView) override;
+  void GetActionData(CPDFSDK_PageView* pPageView,
+                     CPDF_AAction::AActionType type,
+                     PDFSDK_FieldAction& fa) override;
+  void SetActionData(CPDFSDK_PageView* pPageView,
+                     CPDF_AAction::AActionType type,
+                     const PDFSDK_FieldAction& fa) override;
+  FX_BOOL IsActionDataChanged(CPDF_AAction::AActionType type,
+                              const PDFSDK_FieldAction& faOld,
+                              const PDFSDK_FieldAction& faNew) override;
+  void SaveState(CPDFSDK_PageView* pPageView) override;
+  void RestoreState(CPDFSDK_PageView* pPageView) override;
+  CPWL_Wnd* ResetPDFWindow(CPDFSDK_PageView* pPageView,
+                           FX_BOOL bRestoreValue) override;
+  void OnKeyStroke(FX_BOOL bKeyDown, FX_DWORD nFlag) override;
 
-  virtual FX_BOOL OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags);
+  // IPWL_FocusHandler:
+  void OnSetFocus(CPWL_Wnd* pWnd) override;
+  void OnKillFocus(CPWL_Wnd* pWnd) override;
 
-  virtual FX_BOOL IsDataChanged(CPDFSDK_PageView* pPageView);
-  virtual void SaveData(CPDFSDK_PageView* pPageView);
-
-  virtual void GetActionData(CPDFSDK_PageView* pPageView,
-                             CPDF_AAction::AActionType type,
-                             PDFSDK_FieldAction& fa);
-  virtual void SetActionData(CPDFSDK_PageView* pPageView,
-                             CPDF_AAction::AActionType type,
-                             const PDFSDK_FieldAction& fa);
-  virtual FX_BOOL IsActionDataChanged(CPDF_AAction::AActionType type,
-                                      const PDFSDK_FieldAction& faOld,
-                                      const PDFSDK_FieldAction& faNew);
-  virtual void SaveState(CPDFSDK_PageView* pPageView);
-  virtual void RestoreState(CPDFSDK_PageView* pPageView);
-
-  virtual CPWL_Wnd* ResetPDFWindow(CPDFSDK_PageView* pPageView,
-                                   FX_BOOL bRestoreValue);
-  virtual void OnKeyStroke(FX_BOOL bKeyDown, FX_UINT nFlag);
-
- public:
-  virtual void OnSetFocus(CPWL_Wnd* pWnd);
-  virtual void OnKillFocus(CPWL_Wnd* pWnd);
-
- public:
-  virtual void OnAddUndo(CPWL_Edit* pEdit);
-
- public:
-  virtual FX_BOOL CanCopy(CPDFSDK_Document* pDocument);
-  virtual FX_BOOL CanCut(CPDFSDK_Document* pDocument);
-  virtual FX_BOOL CanPaste(CPDFSDK_Document* pDocument);
+  // IPWL_Edit_Notify:
+  void OnAddUndo(CPWL_Edit* pEdit) override;
 
  private:
   CFX_WideString GetSelectExportText();
 
- private:
   CBA_FontMap* m_pFontMap;
   FFL_ComboBoxState m_State;
 };
diff --git a/fpdfsdk/include/formfiller/FFL_FormFiller.h b/fpdfsdk/include/formfiller/FFL_FormFiller.h
index 64c8136..87fb7ac 100644
--- a/fpdfsdk/include/formfiller/FFL_FormFiller.h
+++ b/fpdfsdk/include/formfiller/FFL_FormFiller.h
@@ -10,18 +10,16 @@
 #include "FFL_IFormFiller.h"
 #include "FFL_CBA_Fontmap.h"
 
-class CPDFSDK_Annot;
-class CFFL_FormFiller;
-class CFFL_Notify;
 class CPDFDoc_Environment;
-class CPDFSDK_PageView;
+class CPDFSDK_Annot;
 class CPDFSDK_Document;
+class CPDFSDK_PageView;
 class CPDFSDK_Widget;
 
 class CFFL_FormFiller : public IPWL_Provider, public CPWL_TimerHandler {
  public:
   CFFL_FormFiller(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot);
-  virtual ~CFFL_FormFiller();
+  ~CFFL_FormFiller() override;
 
   virtual FX_RECT GetViewBBox(CPDFSDK_PageView* pPageView,
                               CPDFSDK_Annot* pAnnot);
@@ -78,23 +76,16 @@
                             FX_UINT nFlags);
   virtual FX_BOOL OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags);
 
-  virtual FX_BOOL OnSetFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag);
-  virtual FX_BOOL OnKillFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag);
-
-  virtual FX_BOOL CanCopy(CPDFSDK_Document* pDocument);
-  virtual FX_BOOL CanCut(CPDFSDK_Document* pDocument);
-  virtual FX_BOOL CanPaste(CPDFSDK_Document* pDocument);
-
-  virtual void DoCopy(CPDFSDK_Document* pDocument);
-  virtual void DoCut(CPDFSDK_Document* pDocument);
-  virtual void DoPaste(CPDFSDK_Document* pDocument);
+  FX_BOOL SetFocusForAnnot(CPDFSDK_Annot* pAnnot, FX_UINT nFlag);
+  FX_BOOL KillFocusForAnnot(CPDFSDK_Annot* pAnnot, FX_UINT nFlag);
 
   // CPWL_TimerHandler
-  virtual void TimerProc();
-  virtual IFX_SystemHandler* GetSystemHandler() const;
+  void TimerProc() override;
+  IFX_SystemHandler* GetSystemHandler() const override;
 
-  virtual CPDF_Matrix GetWindowMatrix(void* pAttachedData);
-  virtual CFX_WideString LoadPopupMenuString(int nIndex);
+  // IPWL_Provider
+  CPDF_Matrix GetWindowMatrix(void* pAttachedData) override;
+  CFX_WideString LoadPopupMenuString(int nIndex) override;
 
   virtual void GetActionData(CPDFSDK_PageView* pPageView,
                              CPDF_AAction::AActionType type,
@@ -112,7 +103,7 @@
   virtual CPWL_Wnd* ResetPDFWindow(CPDFSDK_PageView* pPageView,
                                    FX_BOOL bRestoreValue);
 
-  virtual void OnKeyStroke(FX_BOOL bKeyDown);
+  virtual void OnKeyStroke(FX_BOOL bKeyDown, FX_DWORD nFlag);
 
   CPDF_Matrix GetCurMatrix();
 
diff --git a/fpdfsdk/include/formfiller/FFL_IFormFiller.h b/fpdfsdk/include/formfiller/FFL_IFormFiller.h
index 3acdb23..8421774 100644
--- a/fpdfsdk/include/formfiller/FFL_IFormFiller.h
+++ b/fpdfsdk/include/formfiller/FFL_IFormFiller.h
@@ -16,8 +16,8 @@
 
 class CFFL_IFormFiller : public IPWL_Filler_Notify {
  public:
-  CFFL_IFormFiller(CPDFDoc_Environment* pApp);
-  virtual ~CFFL_IFormFiller();
+  explicit CFFL_IFormFiller(CPDFDoc_Environment* pApp);
+  ~CFFL_IFormFiller() override;
 
   virtual FX_BOOL Annot_HitTest(CPDFSDK_PageView* pPageView,
                                 CPDFSDK_Annot* pAnnot,
@@ -25,10 +25,10 @@
   virtual FX_RECT GetViewBBox(CPDFSDK_PageView* pPageView,
                               CPDFSDK_Annot* pAnnot);
   virtual void OnDraw(CPDFSDK_PageView* pPageView,
-                      /*HDC hDC,*/ CPDFSDK_Annot* pAnnot,
+                      CPDFSDK_Annot* pAnnot,
                       CFX_RenderDevice* pDevice,
                       CPDF_Matrix* pUser2Device,
-                      /*const CRect& rcWindow,*/ FX_DWORD dwFlags);
+                      FX_DWORD dwFlags);
 
   virtual void OnCreate(CPDFSDK_Annot* pAnnot);
   virtual void OnLoad(CPDFSDK_Annot* pAnnot);
@@ -79,27 +79,6 @@
   virtual FX_BOOL OnSetFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag);
   virtual FX_BOOL OnKillFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag);
 
-  virtual void QueryWherePopup(void* pPrivateData,
-                               FX_FLOAT fPopupMin,
-                               FX_FLOAT fPopupMax,
-                               int32_t& nRet,
-                               FX_FLOAT& fPopupRet);
-  virtual void OnBeforeKeyStroke(FX_BOOL bEditOrList,
-                                 void* pPrivateData,
-                                 int32_t nKeyCode,
-                                 CFX_WideString& strChange,
-                                 const CFX_WideString& strChangeEx,
-                                 int nSelStart,
-                                 int nSelEnd,
-                                 FX_BOOL bKeyDown,
-                                 FX_BOOL& bRC,
-                                 FX_BOOL& bExit,
-                                 FX_DWORD nFlag);
-  virtual void OnAfterKeyStroke(FX_BOOL bEditOrList,
-                                void* pPrivateData,
-                                FX_BOOL& bExit,
-                                FX_DWORD nFlag);
-
   CFFL_FormFiller* GetFormFiller(CPDFSDK_Annot* pAnnot, FX_BOOL bRegister);
   void RemoveFormFiller(CPDFSDK_Annot* pAnnot);
 
@@ -137,6 +116,28 @@
  private:
   using CFFL_Widget2Filler = std::map<CPDFSDK_Annot*, CFFL_FormFiller*>;
 
+  // IPWL_Filler_Notify:
+  void QueryWherePopup(void* pPrivateData,
+                       FX_FLOAT fPopupMin,
+                       FX_FLOAT fPopupMax,
+                       int32_t& nRet,
+                       FX_FLOAT& fPopupRet) override;
+  void OnBeforeKeyStroke(FX_BOOL bEditOrList,
+                         void* pPrivateData,
+                         int32_t nKeyCode,
+                         CFX_WideString& strChange,
+                         const CFX_WideString& strChangeEx,
+                         int nSelStart,
+                         int nSelEnd,
+                         FX_BOOL bKeyDown,
+                         FX_BOOL& bRC,
+                         FX_BOOL& bExit,
+                         FX_DWORD nFlag) override;
+  void OnAfterKeyStroke(FX_BOOL bEditOrList,
+                        void* pPrivateData,
+                        FX_BOOL& bExit,
+                        FX_DWORD nFlag) override;
+
   void UnRegisterFormFiller(CPDFSDK_Annot* pAnnot);
 
   CPDFDoc_Environment* m_pApp;
diff --git a/fpdfsdk/include/formfiller/FFL_TextField.h b/fpdfsdk/include/formfiller/FFL_TextField.h
index 65da925..057825a 100644
--- a/fpdfsdk/include/formfiller/FFL_TextField.h
+++ b/fpdfsdk/include/formfiller/FFL_TextField.h
@@ -26,43 +26,35 @@
                        public IPWL_Edit_Notify {
  public:
   CFFL_TextField(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot);
-  virtual ~CFFL_TextField();
+  ~CFFL_TextField() override;
 
-  virtual PWL_CREATEPARAM GetCreateParam();
-  virtual CPWL_Wnd* NewPDFWindow(const PWL_CREATEPARAM& cp,
-                                 CPDFSDK_PageView* pPageView);
+  // CFFL_FormFiller:
+  PWL_CREATEPARAM GetCreateParam() override;
+  CPWL_Wnd* NewPDFWindow(const PWL_CREATEPARAM& cp,
+                         CPDFSDK_PageView* pPageView) override;
+  FX_BOOL OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags) override;
+  FX_BOOL IsDataChanged(CPDFSDK_PageView* pPageView) override;
+  void SaveData(CPDFSDK_PageView* pPageView) override;
+  void GetActionData(CPDFSDK_PageView* pPageView,
+                     CPDF_AAction::AActionType type,
+                     PDFSDK_FieldAction& fa) override;
+  void SetActionData(CPDFSDK_PageView* pPageView,
+                     CPDF_AAction::AActionType type,
+                     const PDFSDK_FieldAction& fa) override;
+  FX_BOOL IsActionDataChanged(CPDF_AAction::AActionType type,
+                              const PDFSDK_FieldAction& faOld,
+                              const PDFSDK_FieldAction& faNew) override;
+  void SaveState(CPDFSDK_PageView* pPageView) override;
+  void RestoreState(CPDFSDK_PageView* pPageView) override;
+  CPWL_Wnd* ResetPDFWindow(CPDFSDK_PageView* pPageView,
+                           FX_BOOL bRestoreValue) override;
 
-  virtual FX_BOOL OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags);
+  // IPWL_FocusHandler:
+  void OnSetFocus(CPWL_Wnd* pWnd) override;
+  void OnKillFocus(CPWL_Wnd* pWnd) override;
 
-  virtual FX_BOOL IsDataChanged(CPDFSDK_PageView* pPageView);
-  virtual void SaveData(CPDFSDK_PageView* pPageView);
-
-  virtual void GetActionData(CPDFSDK_PageView* pPageView,
-                             CPDF_AAction::AActionType type,
-                             PDFSDK_FieldAction& fa);
-  virtual void SetActionData(CPDFSDK_PageView* pPageView,
-                             CPDF_AAction::AActionType type,
-                             const PDFSDK_FieldAction& fa);
-  virtual FX_BOOL IsActionDataChanged(CPDF_AAction::AActionType type,
-                                      const PDFSDK_FieldAction& faOld,
-                                      const PDFSDK_FieldAction& faNew);
-  virtual void SaveState(CPDFSDK_PageView* pPageView);
-  virtual void RestoreState(CPDFSDK_PageView* pPageView);
-
-  virtual CPWL_Wnd* ResetPDFWindow(CPDFSDK_PageView* pPageView,
-                                   FX_BOOL bRestoreValue);
-
- public:
-  virtual void OnSetFocus(CPWL_Wnd* pWnd);
-  virtual void OnKillFocus(CPWL_Wnd* pWnd);
-
- public:
-  virtual void OnAddUndo(CPWL_Edit* pEdit);
-
- public:
-  virtual FX_BOOL CanCopy(CPDFSDK_Document* pDocument);
-  virtual FX_BOOL CanCut(CPDFSDK_Document* pDocument);
-  virtual FX_BOOL CanPaste(CPDFSDK_Document* pDocument);
+  // IPWL_Edit_Notify:
+  void OnAddUndo(CPWL_Edit* pEdit) override;
 
  private:
   CBA_FontMap* m_pFontMap;
diff --git a/fpdfsdk/include/fsdk_baseform.h b/fpdfsdk/include/fsdk_baseform.h
index 7b69e5d..bb3e7cd 100644
--- a/fpdfsdk/include/fsdk_baseform.h
+++ b/fpdfsdk/include/fsdk_baseform.h
@@ -231,18 +231,19 @@
   CFX_WideString GetTemporaryFileName(const CFX_WideString& sFileExt);
 
  private:
-  virtual int BeforeValueChange(const CPDF_FormField* pField,
-                                CFX_WideString& csValue);
-  virtual int AfterValueChange(const CPDF_FormField* pField);
-  virtual int BeforeSelectionChange(const CPDF_FormField* pField,
-                                    CFX_WideString& csValue);
-  virtual int AfterSelectionChange(const CPDF_FormField* pField);
-  virtual int AfterCheckedStatusChange(const CPDF_FormField* pField,
-                                       const CFX_ByteArray& statusArray);
-  virtual int BeforeFormReset(const CPDF_InterForm* pForm);
-  virtual int AfterFormReset(const CPDF_InterForm* pForm);
-  virtual int BeforeFormImportData(const CPDF_InterForm* pForm);
-  virtual int AfterFormImportData(const CPDF_InterForm* pForm);
+  // CPDF_FormNotify
+  int BeforeValueChange(const CPDF_FormField* pField,
+                        CFX_WideString& csValue) override;
+  int AfterValueChange(const CPDF_FormField* pField) override;
+  int BeforeSelectionChange(const CPDF_FormField* pField,
+                            CFX_WideString& csValue) override;
+  int AfterSelectionChange(const CPDF_FormField* pField) override;
+  int AfterCheckedStatusChange(const CPDF_FormField* pField,
+                               const CFX_ByteArray& statusArray) override;
+  int BeforeFormReset(const CPDF_InterForm* pForm) override;
+  int AfterFormReset(const CPDF_InterForm* pForm) override;
+  int BeforeFormImportData(const CPDF_InterForm* pForm) override;
+  int AfterFormImportData(const CPDF_InterForm* pForm) override;
 
   FX_BOOL FDFToURLEncodedData(CFX_WideString csFDFFile,
                               CFX_WideString csTxtFile);
diff --git a/fpdfsdk/src/formfiller/FFL_ComboBox.cpp b/fpdfsdk/src/formfiller/FFL_ComboBox.cpp
index b49726d..2935221 100644
--- a/fpdfsdk/src/formfiller/FFL_ComboBox.cpp
+++ b/fpdfsdk/src/formfiller/FFL_ComboBox.cpp
@@ -300,24 +300,6 @@
   ASSERT(m_pApp != NULL);
 }
 
-FX_BOOL CFFL_ComboBox::CanCopy(CPDFSDK_Document* pDocument) {
-  ASSERT(pDocument != NULL);
-
-  return FALSE;
-}
-
-FX_BOOL CFFL_ComboBox::CanCut(CPDFSDK_Document* pDocument) {
-  ASSERT(pDocument != NULL);
-
-  return FALSE;
-}
-
-FX_BOOL CFFL_ComboBox::CanPaste(CPDFSDK_Document* pDocument) {
-  ASSERT(pDocument != NULL);
-
-  return FALSE;
-}
-
 void CFFL_ComboBox::OnAddUndo(CPWL_Edit* pEdit) {
   ASSERT(pEdit != NULL);
 }
diff --git a/fpdfsdk/src/formfiller/FFL_FormFiller.cpp b/fpdfsdk/src/formfiller/FFL_FormFiller.cpp
index 4fb7542..80e1b0e 100644
--- a/fpdfsdk/src/formfiller/FFL_FormFiller.cpp
+++ b/fpdfsdk/src/formfiller/FFL_FormFiller.cpp
@@ -242,7 +242,8 @@
   return FALSE;
 }
 
-FX_BOOL CFFL_FormFiller::OnSetFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag) {
+FX_BOOL CFFL_FormFiller::SetFocusForAnnot(CPDFSDK_Annot* pAnnot,
+                                          FX_UINT nFlag) {
   CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
   CPDF_Page* pPage = pWidget->GetPDFPage();
   CPDFSDK_Document* pDoc = m_pApp->GetSDKDocument();
@@ -256,7 +257,8 @@
   return TRUE;
 }
 
-FX_BOOL CFFL_FormFiller::OnKillFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag) {
+FX_BOOL CFFL_FormFiller::KillFocusForAnnot(CPDFSDK_Annot* pAnnot,
+                                           FX_UINT nFlag) {
   if (!IsValid())
     return TRUE;
 
@@ -597,7 +599,7 @@
   return m_pApp->GetSysHandler();
 }
 
-void CFFL_FormFiller::OnKeyStroke(FX_BOOL bKeyDown) {}
+void CFFL_FormFiller::OnKeyStroke(FX_BOOL bKeyDown, FX_DWORD nFlag) {}
 
 void CFFL_FormFiller::EscapeFiller(CPDFSDK_PageView* pPageView,
                                    FX_BOOL bDestroyPDFWindow) {
@@ -610,24 +612,6 @@
     DestroyPDFWindow(pPageView);
 }
 
-FX_BOOL CFFL_FormFiller::CanCopy(CPDFSDK_Document* pDocument) {
-  return FALSE;
-}
-
-FX_BOOL CFFL_FormFiller::CanCut(CPDFSDK_Document* pDocument) {
-  return FALSE;
-}
-
-FX_BOOL CFFL_FormFiller::CanPaste(CPDFSDK_Document* pDocument) {
-  return FALSE;
-}
-
-void CFFL_FormFiller::DoCopy(CPDFSDK_Document* pDocument) {}
-
-void CFFL_FormFiller::DoCut(CPDFSDK_Document* pDocument) {}
-
-void CFFL_FormFiller::DoPaste(CPDFSDK_Document* pDocument) {}
-
 void CFFL_FormFiller::InvalidateRect(double left,
                                      double top,
                                      double right,
diff --git a/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp b/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp
index ad57347..f8f8c6a 100644
--- a/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp
+++ b/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp
@@ -459,7 +459,7 @@
   }
 
   if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE))
-    return pFormFiller->OnSetFocus(pAnnot, nFlag);
+    return pFormFiller->SetFocusForAnnot(pAnnot, nFlag);
 
   return TRUE;
 }
@@ -470,28 +470,28 @@
   ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
 
   if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
-    if (pFormFiller->OnKillFocus(pAnnot, nFlag)) {
-      if (!m_bNotifying) {
-        CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
-        if (pWidget->GetAAction(CPDF_AAction::LoseFocus)) {
-          m_bNotifying = TRUE;
-          pWidget->ClearAppModified();
-
-          CPDFSDK_PageView* pPageView = pWidget->GetPageView();
-          ASSERT(pPageView != NULL);
-
-          PDFSDK_FieldAction fa;
-          fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
-          fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
-
-          pFormFiller->GetActionData(pPageView, CPDF_AAction::LoseFocus, fa);
-
-          pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView);
-          m_bNotifying = FALSE;
-        }
-      }
-    } else
+    if (!pFormFiller->KillFocusForAnnot(pAnnot, nFlag))
       return FALSE;
+
+    if (!m_bNotifying) {
+      CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+      if (pWidget->GetAAction(CPDF_AAction::LoseFocus)) {
+        m_bNotifying = TRUE;
+        pWidget->ClearAppModified();
+
+        CPDFSDK_PageView* pPageView = pWidget->GetPageView();
+        ASSERT(pPageView != NULL);
+
+        PDFSDK_FieldAction fa;
+        fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
+        fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
+
+        pFormFiller->GetActionData(pPageView, CPDF_AAction::LoseFocus, fa);
+
+        pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView);
+        m_bNotifying = FALSE;
+      }
+    }
   }
 
   return TRUE;
@@ -898,13 +898,11 @@
                                         void* pPrivateData,
                                         FX_BOOL& bExit,
                                         FX_DWORD nFlag) {
-  ASSERT(pPrivateData != NULL);
   CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData;
-  ASSERT(pData->pWidget != NULL);
+  ASSERT(pData->pWidget);
 
   CFFL_FormFiller* pFormFiller = GetFormFiller(pData->pWidget, FALSE);
-  ASSERT(pFormFiller != NULL);
 
   if (!bEditOrList)
-    pFormFiller->OnKeyStroke(bExit);
+    pFormFiller->OnKeyStroke(bExit, nFlag);
 }
diff --git a/fpdfsdk/src/formfiller/FFL_TextField.cpp b/fpdfsdk/src/formfiller/FFL_TextField.cpp
index 2acf6b8..b95ac93 100644
--- a/fpdfsdk/src/formfiller/FFL_TextField.cpp
+++ b/fpdfsdk/src/formfiller/FFL_TextField.cpp
@@ -287,22 +287,9 @@
                                      nCharacters, TRUE);
 
     pEdit->SetEditNotify(this);
-    // pUndo->BeginEdit(pDocument);
   }
 }
 
 void CFFL_TextField::OnKillFocus(CPWL_Wnd* pWnd) {}
 
-FX_BOOL CFFL_TextField::CanCopy(CPDFSDK_Document* pDocument) {
-  return FALSE;
-}
-
-FX_BOOL CFFL_TextField::CanCut(CPDFSDK_Document* pDocument) {
-  return FALSE;
-}
-
-FX_BOOL CFFL_TextField::CanPaste(CPDFSDK_Document* pDocument) {
-  return FALSE;
-}
-
 void CFFL_TextField::OnAddUndo(CPWL_Edit* pEdit) {}