QTextFrame *QTextDocumentPrivate::insertFrame(int start, int end, const QTextFrameFormat &format) { Q_ASSERT(start >= 0 && start < length()); Q_ASSERT(end >= 0 && end < length()); Q_ASSERT(start <= end || end == -1); if (start != end && frameAt(start) != frameAt(end)) return 0; beginEditBlock(); QTextFrame *frame = qobject_cast<QTextFrame *>(createObject(format)); Q_ASSERT(frame); // #### using the default block and char format below might be wrong int idx = formats.indexForFormat(QTextBlockFormat()); QTextCharFormat cfmt; cfmt.setObjectIndex(frame->objectIndex()); int charIdx = formats.indexForFormat(cfmt); insertBlock(QTextBeginningOfFrame, start, idx, charIdx, QTextUndoCommand::MoveCursor); insertBlock(QTextEndOfFrame, ++end, idx, charIdx, QTextUndoCommand::KeepCursor); frame->d_func()->fragment_start = find(start).n; frame->d_func()->fragment_end = find(end).n; insert_frame(frame); endEditBlock(); return frame; }
static char* send_frame(Frame *f, int sym, Bool swap) { Frame *fp; SET(fp); switch(sym) { case LUP: fp = f->aprev; if(!fp) return Ebadvalue; fp = fp->aprev; break; case LDOWN: fp = f->anext; if(!fp) return Ebadvalue; break; default: assert(!"can't get here"); } if(swap) { if(!fp) return Ebadvalue; swap_frames(f, fp); }else { remove_frame(f); insert_frame(fp, f); } arrange_view(f->view); flushevents(EnterWindowMask, False); focus_frame(f, True); update_views(); return nil; }
void Sprite::insert_frame(const String &name, const int &at_this_index) { insert_frame(name, get_Textures().get_id(name), at_this_index); }