mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-16 21:10:26 +00:00
2898c335be
When the cursor in RTL text, icons for "depth-increment" or "layout-toggle Enumerate" look wrong. To fix this, the lfun "bidi" is introduced. "bidi ltr func" behaves like "func" in LTR text, but is unknown in RTL text. "bidi rtl" does the opposite. This allows to add two icons, but only have one icon available. When no document is available, only LTR is assumed. To make this work, the handling of unknown functions in toolbar has been changed so this these functions can change dynamically their existence. The icon themes `default', `oxygen' and `classic' have been updated accordingly. Fixes bug #4451.
96 lines
1.9 KiB
C++
96 lines
1.9 KiB
C++
/**
|
|
* \file Action.cpp
|
|
* This file is part of LyX, the document processor.
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* \author Abdelrazak Younes
|
|
*
|
|
* Full author contact details are available in file CREDITS.
|
|
*/
|
|
|
|
#include <config.h>
|
|
|
|
#include "Action.h"
|
|
|
|
// DispatchResult.h is needed by the windows compiler because lyx::dispatch
|
|
// returns a DispatchResult const reference. Gcc does not complain. Weird...
|
|
#include "DispatchResult.h"
|
|
#include "FuncRequest.h"
|
|
#include "FuncStatus.h"
|
|
#include "LyX.h"
|
|
|
|
#include "qt_helpers.h"
|
|
|
|
#include "support/debug.h"
|
|
#include "support/lstrings.h"
|
|
|
|
using namespace std;
|
|
|
|
|
|
namespace lyx {
|
|
namespace frontend {
|
|
|
|
|
|
Action::Action(FuncRequest func, QIcon const & icon, QString const & text,
|
|
QString const & tooltip, QObject * parent)
|
|
: QAction(parent), func_(make_shared<FuncRequest>(move(func)))
|
|
{
|
|
init(icon, text, tooltip);
|
|
}
|
|
|
|
|
|
Action::Action(shared_ptr<FuncRequest const> func,
|
|
QIcon const & icon, QString const & text,
|
|
QString const & tooltip, QObject * parent)
|
|
: QAction(parent), func_(func)
|
|
{
|
|
init(icon, text, tooltip);
|
|
}
|
|
|
|
|
|
void Action::init(QIcon const & icon, QString const & text,
|
|
QString const & tooltip)
|
|
{
|
|
// only Qt/Mac handles that
|
|
setMenuRole(NoRole);
|
|
setIcon(icon);
|
|
setText(text);
|
|
setToolTip(tooltip);
|
|
setStatusTip(tooltip);
|
|
connect(this, SIGNAL(triggered()), this, SLOT(action()));
|
|
update();
|
|
}
|
|
|
|
|
|
void Action::update()
|
|
{
|
|
FuncStatus const status = getStatus(*func_);
|
|
|
|
if (status.onOff(true)) {
|
|
setCheckable(true);
|
|
setChecked(true);
|
|
} else if (status.onOff(false)) {
|
|
setCheckable(true);
|
|
setChecked(false);
|
|
} else {
|
|
setCheckable(false);
|
|
}
|
|
|
|
setVisible(!status.unknown());
|
|
setEnabled(status.enabled());
|
|
}
|
|
|
|
|
|
void Action::action()
|
|
{
|
|
//LYXERR(Debug::ACTION, "calling lyx::dispatch: func_: ");
|
|
|
|
lyx::dispatch(*func_);
|
|
triggered(this);
|
|
}
|
|
|
|
} // namespace frontend
|
|
} // namespace lyx
|
|
|
|
#include "moc_Action.cpp"
|