mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-27 19:59:46 +00:00
Do some caching of window title and related UI
This should avoid performance problems related to the window update machinery. Moreover this fixes a crash introduced bye4998f21
when closing a file. Note that GuiWorkArea::Private already had a read_only_ member, but it was unused. Also rename LyXVC::vcname() to LyXVC::vcstatus() since it now contains directly the UI string to be shown. (cherry picked from commit6cb05ce8bb
) (cherry picked from commit85bcf0d93f
)
This commit is contained in:
parent
e4998f21b0
commit
4c724a6072
@ -46,9 +46,14 @@ LyXVC::~LyXVC()
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
string LyXVC::vcname() const
|
docstring LyXVC::vcstatus() const
|
||||||
{
|
{
|
||||||
return vcs->vcname();
|
if (!vcs)
|
||||||
|
return docstring();
|
||||||
|
if (locking())
|
||||||
|
return bformat(_("%1$s lock"), from_ascii(vcs->vcname()));
|
||||||
|
else
|
||||||
|
return from_ascii(vcs->vcname());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
#include <boost/scoped_ptr.hpp>
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
|
||||||
|
#include "support/docstring.h"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
@ -50,8 +52,8 @@ public:
|
|||||||
LyXVC();
|
LyXVC();
|
||||||
///
|
///
|
||||||
~LyXVC();
|
~LyXVC();
|
||||||
/// Name of the underlying VCS
|
/// Status of the underlying VCS
|
||||||
std::string vcname() const;
|
docstring vcstatus() const;
|
||||||
/// Is \p fn under version control?
|
/// Is \p fn under version control?
|
||||||
static bool fileInVC(support::FileName const & fn);
|
static bool fileInVC(support::FileName const & fn);
|
||||||
/** Not a good name perhaps. This function should be called whenever
|
/** Not a good name perhaps. This function should be called whenever
|
||||||
|
@ -1180,12 +1180,7 @@ void GuiView::updateWindowTitle(GuiWorkArea * wa)
|
|||||||
|
|
||||||
if (buf.lyxvc().inUse()) {
|
if (buf.lyxvc().inUse()) {
|
||||||
version_control_->show();
|
version_control_->show();
|
||||||
if (buf.lyxvc().locking())
|
version_control_->setText(toqstr(buf.lyxvc().vcstatus()));
|
||||||
version_control_->setText(
|
|
||||||
toqstr(bformat(_("%1$s lock"),
|
|
||||||
from_ascii(buf.lyxvc().vcname()))));
|
|
||||||
else
|
|
||||||
version_control_->setText(toqstr(buf.lyxvc().vcname()));
|
|
||||||
} else
|
} else
|
||||||
version_control_->hide();
|
version_control_->hide();
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,6 @@
|
|||||||
#include "support/convert.h"
|
#include "support/convert.h"
|
||||||
#include "support/debug.h"
|
#include "support/debug.h"
|
||||||
#include "support/gettext.h"
|
#include "support/gettext.h"
|
||||||
#include "support/FileName.h"
|
|
||||||
#include "support/lassert.h"
|
#include "support/lassert.h"
|
||||||
#include "support/TempFile.h"
|
#include "support/TempFile.h"
|
||||||
|
|
||||||
@ -246,11 +245,12 @@ SyntheticMouseEvent::SyntheticMouseEvent()
|
|||||||
|
|
||||||
|
|
||||||
GuiWorkArea::Private::Private(GuiWorkArea * parent)
|
GuiWorkArea::Private::Private(GuiWorkArea * parent)
|
||||||
: p(parent), screen_(0), buffer_view_(0), read_only_(false), lyx_view_(0),
|
: p(parent), screen_(0), buffer_view_(0), lyx_view_(0),
|
||||||
cursor_visible_(false), cursor_(0),
|
cursor_visible_(false), cursor_(0),
|
||||||
need_resize_(false), schedule_redraw_(false), preedit_lines_(1),
|
need_resize_(false), schedule_redraw_(false), preedit_lines_(1),
|
||||||
pixel_ratio_(1.0),
|
pixel_ratio_(1.0),
|
||||||
completer_(new GuiCompleter(p, p)), dialog_mode_(false)
|
completer_(new GuiCompleter(p, p)), dialog_mode_(false),
|
||||||
|
read_only_(false), clean_(true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1373,8 +1373,15 @@ QVariant GuiWorkArea::inputMethodQuery(Qt::InputMethodQuery query) const
|
|||||||
|
|
||||||
void GuiWorkArea::updateWindowTitle()
|
void GuiWorkArea::updateWindowTitle()
|
||||||
{
|
{
|
||||||
d->lyx_view_->updateWindowTitle(this);
|
Buffer const & buf = bufferView().buffer();
|
||||||
|
if (buf.fileName() != d->file_name_ || buf.isReadonly() != d->read_only_
|
||||||
|
|| buf.lyxvc().vcstatus() != d->vc_status_ || buf.isClean() != d->clean_) {
|
||||||
|
d->file_name_ = buf.fileName();
|
||||||
|
d->read_only_ = buf.isReadonly();
|
||||||
|
d->vc_status_ = buf.lyxvc().vcstatus();
|
||||||
|
d->clean_ = buf.isClean();
|
||||||
titleChanged(this);
|
titleChanged(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include "FuncRequest.h"
|
#include "FuncRequest.h"
|
||||||
#include "LyXRC.h"
|
#include "LyXRC.h"
|
||||||
|
|
||||||
|
#include "support/FileName.h"
|
||||||
#include "support/Timeout.h"
|
#include "support/Timeout.h"
|
||||||
|
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
@ -150,8 +151,6 @@ struct GuiWorkArea::Private
|
|||||||
QPaintDevice * screen_;
|
QPaintDevice * screen_;
|
||||||
///
|
///
|
||||||
BufferView * buffer_view_;
|
BufferView * buffer_view_;
|
||||||
/// Read only Buffer status cache.
|
|
||||||
bool read_only_;
|
|
||||||
///
|
///
|
||||||
GuiView * lyx_view_;
|
GuiView * lyx_view_;
|
||||||
/// is the cursor currently displayed
|
/// is the cursor currently displayed
|
||||||
@ -187,6 +186,17 @@ struct GuiWorkArea::Private
|
|||||||
/// when the menu is actually shown (after releasing on Windows)
|
/// when the menu is actually shown (after releasing on Windows)
|
||||||
/// and after the DEPM has done its job.
|
/// and after the DEPM has done its job.
|
||||||
std::string context_menu_name_;
|
std::string context_menu_name_;
|
||||||
|
|
||||||
|
/// stuff related to window title
|
||||||
|
///
|
||||||
|
support::FileName file_name_;
|
||||||
|
///
|
||||||
|
bool read_only_;
|
||||||
|
///
|
||||||
|
docstring vc_status_;
|
||||||
|
///
|
||||||
|
bool clean_;
|
||||||
|
|
||||||
}; // GuiWorkArea
|
}; // GuiWorkArea
|
||||||
|
|
||||||
} // namespace frontend
|
} // namespace frontend
|
||||||
|
Loading…
Reference in New Issue
Block a user