Remove old text input methods

This commit is contained in:
Jack Andersen 2015-12-27 13:25:10 -10:00
parent 13863d3256
commit 5951beaf9e
7 changed files with 15 additions and 90 deletions

View File

@ -70,6 +70,10 @@ protected:
ITextInputView(ViewResources& res, View& parentView, ITextInputView(ViewResources& res, View& parentView,
IControlBinding* controlBinding) IControlBinding* controlBinding)
: Control(res, parentView, controlBinding) {} : Control(res, parentView, controlBinding) {}
public:
virtual void clipboardCopy() {}
virtual void clipboardCut() {}
virtual void clipboardPaste() {}
}; };
} }

View File

@ -50,8 +50,7 @@ struct DeferredWindowEvents : public boo::IWindowCallback
SpecialKeyDown, SpecialKeyDown,
SpecialKeyUp, SpecialKeyUp,
ModKeyDown, ModKeyDown,
ModKeyUp, ModKeyUp
UTF8FragmentDown
} m_type; } m_type;
boo::SWindowCoord m_coord; boo::SWindowCoord m_coord;
@ -63,7 +62,6 @@ struct DeferredWindowEvents : public boo::IWindowCallback
unsigned long m_charcode; unsigned long m_charcode;
boo::ESpecialKey m_special; boo::ESpecialKey m_special;
bool m_isRepeat; bool m_isRepeat;
std::string m_fragment;
void dispatch(Receiver& rec) const void dispatch(Receiver& rec) const
{ {
@ -114,9 +112,6 @@ struct DeferredWindowEvents : public boo::IWindowCallback
case Type::ModKeyUp: case Type::ModKeyUp:
rec.modKeyUp(m_mods); rec.modKeyUp(m_mods);
break; break;
case Type::UTF8FragmentDown:
rec.utf8FragmentDown(m_fragment);
break;
default: break; default: break;
} }
} }
@ -245,13 +240,6 @@ struct DeferredWindowEvents : public boo::IWindowCallback
m_cmds.back().m_mods = mod; m_cmds.back().m_mods = mod;
} }
void utf8FragmentDown(const std::string& str)
{
std::unique_lock<std::mutex> lk(m_mt);
m_cmds.emplace_back(Command::Type::UTF8FragmentDown);
m_cmds.back().m_fragment = str;
}
boo::ITextInputCallback* getTextInputCallback() {return m_rec.getTextInputCallback();} boo::ITextInputCallback* getTextInputCallback() {return m_rec.getTextInputCallback();}
void dispatchEvents() void dispatchEvents()

View File

@ -56,7 +56,6 @@ public:
void specialKeyUp(boo::ESpecialKey key, boo::EModifierKey mods); void specialKeyUp(boo::ESpecialKey key, boo::EModifierKey mods);
void modKeyDown(boo::EModifierKey mod, bool isRepeat); void modKeyDown(boo::EModifierKey mod, bool isRepeat);
void modKeyUp(boo::EModifierKey mod); void modKeyUp(boo::EModifierKey mod);
void utf8FragmentDown(const std::string& str);
boo::ITextInputCallback* getTextInputCallback() {return m_activeTextView;} boo::ITextInputCallback* getTextInputCallback() {return m_activeTextView;}
void dispatchEvents() {m_events.dispatchEvents();} void dispatchEvents() {m_events.dispatchEvents();}

View File

@ -72,9 +72,7 @@ public:
void mouseMove(const boo::SWindowCoord&); void mouseMove(const boo::SWindowCoord&);
void mouseEnter(const boo::SWindowCoord&); void mouseEnter(const boo::SWindowCoord&);
void mouseLeave(const boo::SWindowCoord&); void mouseLeave(const boo::SWindowCoord&);
void charKeyDown(unsigned long, boo::EModifierKey, bool);
void specialKeyDown(boo::ESpecialKey, boo::EModifierKey, bool); void specialKeyDown(boo::ESpecialKey, boo::EModifierKey, bool);
void utf8FragmentDown(const std::string&);
bool hasMarkedText() const; bool hasMarkedText() const;
std::pair<int,int> markedRange() const; std::pair<int,int> markedRange() const;

View File

@ -203,7 +203,6 @@ public:
virtual void specialKeyUp(boo::ESpecialKey, boo::EModifierKey) {} virtual void specialKeyUp(boo::ESpecialKey, boo::EModifierKey) {}
virtual void modKeyDown(boo::EModifierKey, bool) {} virtual void modKeyDown(boo::EModifierKey, bool) {}
virtual void modKeyUp(boo::EModifierKey) {} virtual void modKeyUp(boo::EModifierKey) {}
virtual void utf8FragmentDown(const std::string&) {}
virtual void resized(const boo::SWindowRect& root, const boo::SWindowRect& sub); virtual void resized(const boo::SWindowRect& root, const boo::SWindowRect& sub);
virtual void think() {} virtual void think() {}

View File

@ -108,16 +108,22 @@ void RootView::charKeyDown(unsigned long charCode, boo::EModifierKey mods, bool
{ {
if (m_view) if (m_view)
m_view->charKeyDown(charCode, mods, isRepeat); m_view->charKeyDown(charCode, mods, isRepeat);
//if (m_activeTextView) if (m_activeTextView &&
// m_activeTextView->charKeyDown(charCode, mods, isRepeat); (mods & (boo::EModifierKey::Ctrl|boo::EModifierKey::Command)) != boo::EModifierKey::None)
{
if (charCode == 'c' || charCode == 'C')
m_activeTextView->clipboardCopy();
else if (charCode == 'x' || charCode == 'X')
m_activeTextView->clipboardCut();
else if (charCode == 'v' || charCode == 'V')
m_activeTextView->clipboardPaste();
}
} }
void RootView::charKeyUp(unsigned long charCode, boo::EModifierKey mods) void RootView::charKeyUp(unsigned long charCode, boo::EModifierKey mods)
{ {
if (m_view) if (m_view)
m_view->charKeyUp(charCode, mods); m_view->charKeyUp(charCode, mods);
//if (m_activeTextView)
// m_activeTextView->charKeyUp(charCode, mods);
} }
void RootView::specialKeyDown(boo::ESpecialKey key, boo::EModifierKey mods, bool isRepeat) void RootView::specialKeyDown(boo::ESpecialKey key, boo::EModifierKey mods, bool isRepeat)
@ -157,12 +163,6 @@ void RootView::modKeyUp(boo::EModifierKey mod)
m_activeTextView->modKeyUp(mod); m_activeTextView->modKeyUp(mod);
} }
void RootView::utf8FragmentDown(const std::string& str)
{
//if (m_activeTextView)
// m_activeTextView->utf8FragmentDown(str);
}
View* RootView::setContentView(View* view) View* RootView::setContentView(View* view)
{ {
View* ret = m_view; View* ret = m_view;

View File

@ -288,46 +288,6 @@ void TextField::clipboardPaste()
} }
} }
void TextField::charKeyDown(unsigned long charCode, boo::EModifierKey mods, bool isRepeat)
{
if (charCode < 0x20)
return;
if ((mods & (boo::EModifierKey::Ctrl|boo::EModifierKey::Command)) != boo::EModifierKey::None)
{
if (charCode == 'c' || charCode == 'C')
clipboardCopy();
else if (charCode == 'v' || charCode == 'V')
clipboardPaste();
return;
}
if (m_selectionCount)
{
std::string newStr(m_textStr.cbegin(), (UTF8Iterator(m_textStr.cbegin()) + m_selectionStart).iter());
utf8proc_uint8_t theChar[5] = {};
utf8proc_ssize_t sz = utf8proc_encode_char(charCode, theChar);
if (sz > 0)
newStr += (char*)theChar;
newStr.append((UTF8Iterator(m_textStr.cbegin()) + m_selectionStart + m_selectionCount).iter(),
m_textStr.cend());
size_t selStart = m_selectionStart;
setText(newStr);
setCursorPos(selStart + 1);
}
else
{
std::string newStr(m_textStr.cbegin(), (UTF8Iterator(m_textStr.cbegin()) + m_cursorPos).iter());
utf8proc_uint8_t theChar[5] = {};
utf8proc_ssize_t sz = utf8proc_encode_char(charCode, theChar);
if (sz > 0)
newStr += (char*)theChar;
newStr.append((UTF8Iterator(m_textStr.cbegin()) + m_cursorPos).iter(), m_textStr.cend());
setText(newStr);
setCursorPos(m_cursorPos + 1);
}
}
void TextField::specialKeyDown(boo::ESpecialKey key, boo::EModifierKey mods, bool isRepeat) void TextField::specialKeyDown(boo::ESpecialKey key, boo::EModifierKey mods, bool isRepeat)
{ {
std::unique_lock<std::recursive_mutex> lk(m_textInputLk); std::unique_lock<std::recursive_mutex> lk(m_textInputLk);
@ -426,29 +386,6 @@ void TextField::specialKeyDown(boo::ESpecialKey key, boo::EModifierKey mods, boo
} }
} }
void TextField::utf8FragmentDown(const std::string& str)
{
std::string saniStr = SanitizeUTF8TextLine(str.data(), str.size());
if (m_selectionCount)
{
std::string newStr(m_textStr.cbegin(), (UTF8Iterator(m_textStr.cbegin()) + m_selectionStart).iter());
newStr += saniStr;
size_t newSel = UTF8Iterator(newStr.cbegin()).countTo(newStr.cend());
newStr.append((UTF8Iterator(m_textStr.cbegin()) + m_selectionStart + m_selectionCount).iter(), m_textStr.cend());
setText(newStr);
setCursorPos(newSel);
}
else
{
std::string newStr(m_textStr.cbegin(), (UTF8Iterator(m_textStr.cbegin()) + m_cursorPos).iter());
newStr += saniStr;
size_t newSel = UTF8Iterator(newStr.cbegin()).countTo(newStr.cend());
newStr.append((UTF8Iterator(m_textStr.cbegin()) + m_cursorPos).iter(), m_textStr.cend());
setText(newStr);
setCursorPos(newSel);
}
}
bool TextField::hasMarkedText() const bool TextField::hasMarkedText() const
{ {
std::unique_lock<std::recursive_mutex> lk(m_textInputLk); std::unique_lock<std::recursive_mutex> lk(m_textInputLk);