diff --git a/cre.cpp b/cre.cpp index ac9a9fbd9..a60bbae83 100644 --- a/cre.cpp +++ b/cre.cpp @@ -117,28 +117,29 @@ static int getPageFromXPointer(lua_State *L) { return 1; } -static int getCurrentPos(lua_State *L) { +static int getPosFromXPointer(lua_State *L) { CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); + const char *xpointer_str = luaL_checkstring(L, 2); - lua_pushinteger(L, doc->text_view->GetPos()); + int pos = 0; + ldomXPointer xp = doc->dom_doc->createXPointer(lString16(xpointer_str)); + + lvPoint pt = xp.toPoint(); + if (pt.y > 0) { + pos = pt.y; + } + lua_pushinteger(L, pos); return 1; } -//static int getPosFromXPointer(lua_State *L) { - //CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); - //const char *xpointer_str = luaL_checkstring(L, 2); - - //lvRect rc; - //int pos; +static int getCurrentPos(lua_State *L) { + CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); - //ldomXPointer *xp = NULL; - //xp = doc->dom_doc->createXPointer(lString16(xpointer_str)); - //getCursorDocRect(*xp, rc); - //pos = + lua_pushinteger(L, doc->text_view->GetPos()); - //return 1; -//} + return 1; +} static int getCurrentPercent(lua_State *L) { CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); @@ -440,6 +441,7 @@ static const struct luaL_Reg credocument_meth[] = { {"getPages", getNumberOfPages}, {"getCurrentPage", getCurrentPage}, {"getPageFromXPointer", getPageFromXPointer}, + {"getPosFromXPointer", getPosFromXPointer}, {"getCurrentPos", getCurrentPos}, {"getCurrentPercent", getCurrentPercent}, {"getXPointer", getXPointer},