aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/qregisters.cpp
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2014-11-16 23:46:08 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2014-11-17 03:56:42 +0100
commit2542eb02648294256a01ae4ecb6ac81bc8ab5094 (patch)
tree81166dbe78031f7764ca2d6d4925d96283ac29c5 /src/qregisters.cpp
parente762a43754ba375789fa749ca2e00a3548500d6a (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.cpp43
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)