X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyx_cb.C;h=f93db63ab5b4820201290c8b340f2205e44cfc99;hb=609a11852e193730db57ebbd2115c9ca8fb4549d;hp=f51570f0fd8dd3e8d21ce1322e718c6159fc69e3;hpb=245007468d0bb2aaa65dea4feab571b744dd9dec;p=lyx.git diff --git a/src/lyx_cb.C b/src/lyx_cb.C index f51570f0fd..f93db63ab5 100644 --- a/src/lyx_cb.C +++ b/src/lyx_cb.C @@ -57,6 +57,7 @@ using std::istream_iterator; using std::pair; using std::vector; using std::sort; +using std::equal; extern Combox * combo_language; extern Combox * combo_language2; @@ -77,6 +78,8 @@ extern FD_form_ref * fd_form_ref; extern FD_LaTeXOptions * fd_latex_options; extern FD_form_bullet * fd_form_bullet; +#define XFORMS_CLIPBOARD 1 + extern BufferView * current_view; // called too many times in this file... extern void DeleteSimpleCutBuffer(); /* for the cleanup when exiting */ @@ -406,10 +409,10 @@ int MakeLaTeXOutput(Buffer * buffer) if (lyxrc.use_tempdir || (IsDirWriteable(path) < 1)) { path = buffer->tmppath; } - if (!buffer->isDviClean()) { + //if (!buffer->isDviClean()) { Path p(path); ret = MenuRunLaTeX(buffer); - } + //} return ret; } @@ -1222,11 +1225,11 @@ void MenuInsertRef() } +#ifndef XFORMS_CLIPBOARD void MenuPasteSelection(char at) { if (!current_view->available()) return; - ascii_type = at; Atom data_prop = XInternAtom(fl_display, @@ -1238,8 +1241,9 @@ void MenuPasteSelection(char at) XA_PRIMARY, XA_STRING, data_prop, current_view->owner()->getForm()->window, 0); XFlush(fl_display); -} +} +#endif @@ -2373,10 +2377,12 @@ extern "C" void DocumentApplyCB(FL_OBJECT *, long) if (current_view->available()) { if (old_language != new_language && old_language->RightToLeft == new_language->RightToLeft && - ! current_view->buffer()->isMultiLingual() ) { + ! current_view->buffer()->isMultiLingual() ) current_view->buffer()->ChangeLanguage(old_language, new_language); - current_view->buffer()->redraw(); + if (old_language != new_language) { + //current_view->buffer()->redraw(); + redo = true; } } params->language_info = new_language; @@ -3131,7 +3137,8 @@ extern "C" void TocCancelCB(FL_OBJECT *, long) } -extern "C" void TocUpdateCB(FL_OBJECT *, long) +extern "C" +void TocUpdateCB(FL_OBJECT *, long) { if (!current_view->available()) { toclist.clear(); @@ -3143,9 +3150,20 @@ extern "C" void TocUpdateCB(FL_OBJECT *, long) vector > tmp = current_view->buffer()->getTocList(); - if (toclist == tmp[0]) - return; - toclist = tmp[0]; + int type = fl_get_choice(fd_form_toc->toctype)-1; + //if (toclist == tmp[type]) + // return; + if (toclist.size() == tmp[type].size()) { + // Check if all elements are the same. + unsigned int i = 0; + for (; i < toclist.size(); ++i) { + if (toclist[i] != tmp[type][i]) + break; + } + if (i >= toclist.size()) return; + } + + toclist = tmp[type]; static Buffer * buffer = 0; int topline = 0; @@ -3185,10 +3203,21 @@ extern "C" void RefSelectCB(FL_OBJECT *, long data) if (s.empty()) return; - if (data >= 5) { + if (data == 5) { current_view->owner()->getLyXFunc()->Dispatch(LFUN_REFGOTO, s.c_str()); + if (!current_view->NoSavedPositions()) { + fl_activate_object(fd_form_ref->back); + fl_set_object_lcol(fd_form_ref->back, FL_BLACK); + } return; - } + } else if (data >= 6) { + current_view->owner()->getLyXFunc()->Dispatch(LFUN_REFBACK); + if (current_view->NoSavedPositions()) { + fl_deactivate_object(fd_form_ref->back); + fl_set_object_lcol(fd_form_ref->back, FL_INACTIVE); + } + return; + } static string const commands[5] = { "\\ref", "\\pageref", "\\vref", "\\vpageref", @@ -3240,40 +3269,67 @@ extern "C" void RefUpdateCB(FL_OBJECT *, long) } fl_set_browser_topline(brow, topline); - if (!fl_get_browser_maxline(brow)) { + bool empty = refs.empty(); + bool sgml = current_view->buffer()->isSGML(); + bool readonly = current_view->buffer()->isReadonly(); + + if (current_view->NoSavedPositions()) { + fl_deactivate_object(fd_form_ref->back); + fl_set_object_lcol(fd_form_ref->back, FL_INACTIVE); + } else { + fl_activate_object(fd_form_ref->back); + fl_set_object_lcol(fd_form_ref->back, FL_BLACK); + } + + if (empty) { fl_add_browser_line(brow, _("*** No labels found in document ***")); fl_deactivate_object(brow); + fl_deactivate_object(fd_form_ref->gotoref); + fl_set_object_lcol(fd_form_ref->gotoref, FL_INACTIVE); } else { fl_select_browser_line(brow, topline); fl_activate_object(brow); + fl_activate_object(fd_form_ref->gotoref); + fl_set_object_lcol(fd_form_ref->gotoref, FL_BLACK); } - if (current_view->buffer()->isReadonly()) { - // would be better to de/activate insert buttons - // but that's more work... besides this works. ARRae - fl_hide_form(fd_form_ref->form_ref); - } - if (!current_view->buffer()->isSGML()) { - fl_deactivate_object(fd_form_ref->ref_name); - fl_set_object_lcol(fd_form_ref->ref_name, FL_INACTIVE); + if (empty || readonly) { + fl_deactivate_object(fd_form_ref->ref); + fl_set_object_lcol(fd_form_ref->ref, FL_INACTIVE); + fl_deactivate_object(fd_form_ref->pageref); + fl_set_object_lcol(fd_form_ref->pageref, FL_INACTIVE); + } else { + fl_activate_object(fd_form_ref->ref); + fl_set_object_lcol(fd_form_ref->ref, FL_BLACK); + fl_activate_object(fd_form_ref->pageref); + fl_set_object_lcol(fd_form_ref->pageref, FL_BLACK); + } + + if (empty || readonly || sgml) { + fl_deactivate_object(fd_form_ref->vref); + fl_set_object_lcol(fd_form_ref->vref, FL_INACTIVE); + fl_deactivate_object(fd_form_ref->vpageref); + fl_set_object_lcol(fd_form_ref->vpageref, FL_INACTIVE); + fl_deactivate_object(fd_form_ref->prettyref); + fl_set_object_lcol(fd_form_ref->prettyref, FL_INACTIVE); + } else { fl_activate_object(fd_form_ref->vref); fl_set_object_lcol(fd_form_ref->vref, FL_BLACK); fl_activate_object(fd_form_ref->vpageref); fl_set_object_lcol(fd_form_ref->vpageref, FL_BLACK); fl_activate_object(fd_form_ref->prettyref); fl_set_object_lcol(fd_form_ref->prettyref, FL_BLACK); - } else { + } + + if (sgml) { fl_activate_object(fd_form_ref->ref_name); fl_set_object_lcol(fd_form_ref->ref_name, FL_BLACK); - - fl_deactivate_object(fd_form_ref->vref); - fl_set_object_lcol(fd_form_ref->vref, FL_INACTIVE); - fl_deactivate_object(fd_form_ref->vpageref); - fl_set_object_lcol(fd_form_ref->vpageref, FL_INACTIVE); - fl_deactivate_object(fd_form_ref->prettyref); - fl_set_object_lcol(fd_form_ref->prettyref, FL_INACTIVE); + } else { + fl_deactivate_object(fd_form_ref->ref_name); + fl_set_object_lcol(fd_form_ref->ref_name, FL_INACTIVE); } + fl_show_object(brow); }