tdf#136474 wait until mouse grab is dropped to trigger selection callback
Change-Id: I495b90b9661c32ad3ec71c2a2455d1576fb8f918 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102112 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
This commit is contained in:
@@ -145,6 +145,7 @@ CustomAnimationPane::CustomAnimationPane( Window* pParent, ViewShellBase& rBase,
|
|||||||
, mxMFStartDelay(m_xBuilder->weld_metric_spin_button("delay_value", FieldUnit::SECOND))
|
, mxMFStartDelay(m_xBuilder->weld_metric_spin_button("delay_value", FieldUnit::SECOND))
|
||||||
, mxCBAutoPreview(m_xBuilder->weld_check_button("auto_preview"))
|
, mxCBAutoPreview(m_xBuilder->weld_check_button("auto_preview"))
|
||||||
, mxPBPlay(m_xBuilder->weld_button("play"))
|
, mxPBPlay(m_xBuilder->weld_button("play"))
|
||||||
|
, maIdle("sd idle treeview select")
|
||||||
, mnLastSelectedAnimation(-1)
|
, mnLastSelectedAnimation(-1)
|
||||||
, mnPropertyType(nPropertyTypeNone)
|
, mnPropertyType(nPropertyTypeNone)
|
||||||
, mnCurvePathPos(-1)
|
, mnCurvePathPos(-1)
|
||||||
@@ -180,6 +181,9 @@ void CustomAnimationPane::initialize()
|
|||||||
mxMFStartDelay->connect_value_changed( LINK(this, CustomAnimationPane, DelayModifiedHdl) );
|
mxMFStartDelay->connect_value_changed( LINK(this, CustomAnimationPane, DelayModifiedHdl) );
|
||||||
mxMFStartDelay->connect_focus_out(LINK( this, CustomAnimationPane, DelayLoseFocusHdl));
|
mxMFStartDelay->connect_focus_out(LINK( this, CustomAnimationPane, DelayLoseFocusHdl));
|
||||||
|
|
||||||
|
maIdle.SetPriority(TaskPriority::DEFAULT);
|
||||||
|
maIdle.SetInvokeHandler(LINK(this, CustomAnimationPane, SelectionHandler));
|
||||||
|
|
||||||
maStrModify = mxFTEffect->get_label();
|
maStrModify = mxFTEffect->get_label();
|
||||||
|
|
||||||
// get current controller and initialize listeners
|
// get current controller and initialize listeners
|
||||||
@@ -2073,6 +2077,17 @@ IMPL_LINK_NOARG(CustomAnimationPane, DelayLoseFocusHdl, weld::Widget&, void)
|
|||||||
|
|
||||||
IMPL_LINK_NOARG(CustomAnimationPane, AnimationSelectHdl, weld::TreeView&, void)
|
IMPL_LINK_NOARG(CustomAnimationPane, AnimationSelectHdl, weld::TreeView&, void)
|
||||||
{
|
{
|
||||||
|
maIdle.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
IMPL_LINK_NOARG(CustomAnimationPane, SelectionHandler, Timer*, void)
|
||||||
|
{
|
||||||
|
if (mxLBAnimation->has_grab()) // tdf#136474 try again later
|
||||||
|
{
|
||||||
|
maIdle.Start();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int nSelected = mxLBAnimation->get_selected_index();
|
int nSelected = mxLBAnimation->get_selected_index();
|
||||||
|
|
||||||
// tdf#99137, the selected entry may also be a subcategory title, so not an effect
|
// tdf#99137, the selected entry may also be a subcategory title, so not an effect
|
||||||
|
@@ -113,6 +113,7 @@ private:
|
|||||||
DECL_LINK( DelayLoseFocusHdl, weld::Widget&, void );
|
DECL_LINK( DelayLoseFocusHdl, weld::Widget&, void );
|
||||||
DECL_LINK( UpdateAnimationLB, weld::ComboBox&, void );
|
DECL_LINK( UpdateAnimationLB, weld::ComboBox&, void );
|
||||||
DECL_LINK( AnimationSelectHdl, weld::TreeView&, void );
|
DECL_LINK( AnimationSelectHdl, weld::TreeView&, void );
|
||||||
|
DECL_LINK( SelectionHandler, Timer*, void );
|
||||||
void implControlHdl(const weld::Widget* pControl);
|
void implControlHdl(const weld::Widget* pControl);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -142,6 +143,8 @@ private:
|
|||||||
std::unique_ptr<weld::CheckButton> mxCBAutoPreview;
|
std::unique_ptr<weld::CheckButton> mxCBAutoPreview;
|
||||||
std::unique_ptr<weld::Button> mxPBPlay;
|
std::unique_ptr<weld::Button> mxPBPlay;
|
||||||
|
|
||||||
|
Idle maIdle;
|
||||||
|
|
||||||
OUString maStrModify;
|
OUString maStrModify;
|
||||||
OUString maStrProperty;
|
OUString maStrProperty;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user