diff options
| author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2014-11-16 23:46:08 +0100 |
|---|---|---|
| committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2014-11-17 03:56:42 +0100 |
| commit | 2542eb02648294256a01ae4ecb6ac81bc8ab5094 (patch) | |
| tree | 81166dbe78031f7764ca2d6d4925d96283ac29c5 /src/qregisters.cpp | |
| parent | e762a43754ba375789fa749ca2e00a3548500d6a (diff) | |
Make sure QRegister::view is properly initialized and cleaned up
* it must be initialized after the UI (Interface::main), so I added
a View::initialize() function
* the old initialize() method was renamed to setup()
* use a global instance of QRegister::view so it is guaranteed to
be destroyed only after any QRegisters that could still need it
* Document API adapted to work with ViewCurrent references
Diffstat (limited to 'src/qregisters.cpp')
| -rw-r--r-- | src/qregisters.cpp | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/src/qregisters.cpp b/src/qregisters.cpp index 002d4b7..98edb0b 100644 --- a/src/qregisters.cpp +++ b/src/qregisters.cpp @@ -59,7 +59,6 @@ namespace States { namespace QRegisters { QRegisterTable *locals = NULL; QRegister *current = NULL; - ViewCurrent *view = NULL; static QRegisterStack stack; } @@ -75,10 +74,10 @@ QRegisterData::set_string(const gchar *str) string.reset(); string.edit(QRegisters::view); - QRegisters::view->ssm(SCI_BEGINUNDOACTION); - QRegisters::view->ssm(SCI_SETTEXT, 0, - (sptr_t)(str ? : "")); - QRegisters::view->ssm(SCI_ENDUNDOACTION); + QRegisters::view.ssm(SCI_BEGINUNDOACTION); + QRegisters::view.ssm(SCI_SETTEXT, 0, + (sptr_t)(str ? : "")); + QRegisters::view.ssm(SCI_ENDUNDOACTION); if (QRegisters::current) QRegisters::current->string.edit(QRegisters::view); @@ -100,7 +99,7 @@ QRegisterData::undo_set_string(void) QRegisters::current->string.undo_edit(QRegisters::view); string.undo_reset(); - QRegisters::view->undo_ssm(SCI_UNDO); + QRegisters::view.undo_ssm(SCI_UNDO); string.undo_edit(QRegisters::view); } @@ -122,10 +121,10 @@ QRegisterData::append_string(const gchar *str) string.edit(QRegisters::view); - QRegisters::view->ssm(SCI_BEGINUNDOACTION); - QRegisters::view->ssm(SCI_APPENDTEXT, + QRegisters::view.ssm(SCI_BEGINUNDOACTION); + QRegisters::view.ssm(SCI_APPENDTEXT, strlen(str), (sptr_t)str); - QRegisters::view->ssm(SCI_ENDUNDOACTION); + QRegisters::view.ssm(SCI_ENDUNDOACTION); if (QRegisters::current) QRegisters::current->string.edit(QRegisters::view); @@ -145,9 +144,9 @@ QRegisterData::get_string(void) string.edit(QRegisters::view); - size = QRegisters::view->ssm(SCI_GETLENGTH) + 1; + size = QRegisters::view.ssm(SCI_GETLENGTH) + 1; str = (gchar *)g_malloc(size); - QRegisters::view->ssm(SCI_GETTEXT, size, (sptr_t)str); + QRegisters::view.ssm(SCI_GETTEXT, size, (sptr_t)str); if (QRegisters::current) QRegisters::current->string.edit(QRegisters::view); @@ -162,7 +161,7 @@ QRegister::edit(void) QRegisters::current->string.update(QRegisters::view); string.edit(QRegisters::view); - interface.show_view(QRegisters::view); + interface.show_view(&QRegisters::view); interface.info_update(this); } @@ -175,7 +174,7 @@ QRegister::undo_edit(void) interface.undo_info_update(this); string.update(QRegisters::view); string.undo_edit(QRegisters::view); - interface.undo_show_view(QRegisters::view); + interface.undo_show_view(&QRegisters::view); } void @@ -213,10 +212,10 @@ QRegister::load(const gchar *filename) string.edit(QRegisters::view); string.reset(); - QRegisters::view->ssm(SCI_BEGINUNDOACTION); - QRegisters::view->ssm(SCI_CLEARALL); - QRegisters::view->ssm(SCI_APPENDTEXT, size, (sptr_t)contents); - QRegisters::view->ssm(SCI_ENDUNDOACTION); + QRegisters::view.ssm(SCI_BEGINUNDOACTION); + QRegisters::view.ssm(SCI_CLEARALL); + QRegisters::view.ssm(SCI_APPENDTEXT, size, (sptr_t)contents); + QRegisters::view.ssm(SCI_ENDUNDOACTION); g_free(contents); @@ -251,12 +250,12 @@ QRegisterBufferInfo::edit(void) { QRegister::edit(); - QRegisters::view->ssm(SCI_BEGINUNDOACTION); - QRegisters::view->ssm(SCI_SETTEXT, 0, - (sptr_t)(ring.current ? ring.current->filename : "")); - QRegisters::view->ssm(SCI_ENDUNDOACTION); + QRegisters::view.ssm(SCI_BEGINUNDOACTION); + QRegisters::view.ssm(SCI_SETTEXT, 0, + (sptr_t)(ring.current ? ring.current->filename : "")); + QRegisters::view.ssm(SCI_ENDUNDOACTION); - QRegisters::view->undo_ssm(SCI_UNDO); + QRegisters::view.undo_ssm(SCI_UNDO); } QRegisterTable::QRegisterTable(bool _undo) : RBTree(), must_undo(_undo) |
