Do layout immediately in resize
the wait for the idle is too long, keep idle for re-layout when the container size doesnt change but the contents do Change-Id: I6ed4806e96d10937e825192de86a3d602acf1689 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101943 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
This commit is contained in:
@@ -48,7 +48,7 @@ namespace dbaui
|
|||||||
virtual void dispose() override;
|
virtual void dispose() override;
|
||||||
|
|
||||||
virtual void GetFocus() override;
|
virtual void GetFocus() override;
|
||||||
virtual void IdleResize() override;
|
virtual void Layout() override;
|
||||||
|
|
||||||
OTableEditorCtrl* GetEditorCtrl() const { return m_xEditorCtrl.get(); }
|
OTableEditorCtrl* GetEditorCtrl() const { return m_xEditorCtrl.get(); }
|
||||||
OTableFieldDescWin* GetDescWin() const { return m_xFieldDescWin.get(); }
|
OTableFieldDescWin* GetDescWin() const { return m_xFieldDescWin.get(); }
|
||||||
|
@@ -72,7 +72,7 @@ void OTableBorderWindow::dispose()
|
|||||||
InterimItemWindow::dispose();
|
InterimItemWindow::dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OTableBorderWindow::IdleResize()
|
void OTableBorderWindow::Layout()
|
||||||
{
|
{
|
||||||
// dimensions of parent window
|
// dimensions of parent window
|
||||||
auto nOutputHeight = GetSizePixel().Height();
|
auto nOutputHeight = GetSizePixel().Height();
|
||||||
@@ -88,7 +88,7 @@ void OTableBorderWindow::IdleResize()
|
|||||||
// set splitter
|
// set splitter
|
||||||
m_xHorzSplitter->set_position(nSplitPos);
|
m_xHorzSplitter->set_position(nSplitPos);
|
||||||
|
|
||||||
InterimItemWindow::IdleResize();
|
InterimItemWindow::Layout();
|
||||||
|
|
||||||
if (nOldSplitPos != nSplitPos)
|
if (nOldSplitPos != nSplitPos)
|
||||||
m_xHorzSplitter->set_position(nSplitPos);
|
m_xHorzSplitter->set_position(nSplitPos);
|
||||||
|
@@ -45,7 +45,7 @@ protected:
|
|||||||
// returns true if keystroke is consumed
|
// returns true if keystroke is consumed
|
||||||
bool ChildKeyInput(const KeyEvent& rKEvt);
|
bool ChildKeyInput(const KeyEvent& rKEvt);
|
||||||
|
|
||||||
virtual void IdleResize();
|
virtual void Layout();
|
||||||
|
|
||||||
std::unique_ptr<weld::Builder> m_xBuilder;
|
std::unique_ptr<weld::Builder> m_xBuilder;
|
||||||
VclPtr<vcl::Window> m_xVclContentArea;
|
VclPtr<vcl::Window> m_xVclContentArea;
|
||||||
@@ -57,7 +57,7 @@ private:
|
|||||||
|
|
||||||
void StartIdleLayout();
|
void StartIdleLayout();
|
||||||
|
|
||||||
DECL_LINK(DoResize, Timer*, void);
|
DECL_LINK(DoLayout, Timer*, void);
|
||||||
|
|
||||||
virtual void ImplPaintToDevice(::OutputDevice* pTargetOutDev, const Point& rPos) override;
|
virtual void ImplPaintToDevice(::OutputDevice* pTargetOutDev, const Point& rPos) override;
|
||||||
};
|
};
|
||||||
|
@@ -17,7 +17,7 @@ InterimItemWindow::InterimItemWindow(vcl::Window* pParent, const OUString& rUIXM
|
|||||||
, m_pWidget(nullptr) // inheritors are expected to call InitControlBase
|
, m_pWidget(nullptr) // inheritors are expected to call InitControlBase
|
||||||
{
|
{
|
||||||
m_aLayoutIdle.SetPriority(TaskPriority::RESIZE);
|
m_aLayoutIdle.SetPriority(TaskPriority::RESIZE);
|
||||||
m_aLayoutIdle.SetInvokeHandler(LINK(this, InterimItemWindow, DoResize));
|
m_aLayoutIdle.SetInvokeHandler(LINK(this, InterimItemWindow, DoLayout));
|
||||||
m_aLayoutIdle.SetDebugName("InterimItemWindow m_aLayoutIdle");
|
m_aLayoutIdle.SetDebugName("InterimItemWindow m_aLayoutIdle");
|
||||||
|
|
||||||
m_xVclContentArea = VclPtr<VclVBox>::Create(this);
|
m_xVclContentArea = VclPtr<VclVBox>::Create(this);
|
||||||
@@ -67,11 +67,11 @@ void InterimItemWindow::queue_resize(StateChangedType eReason)
|
|||||||
StartIdleLayout();
|
StartIdleLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
void InterimItemWindow::Resize() { StartIdleLayout(); }
|
void InterimItemWindow::Resize() { Layout(); }
|
||||||
|
|
||||||
IMPL_LINK_NOARG(InterimItemWindow, DoResize, Timer*, void) { IdleResize(); }
|
IMPL_LINK_NOARG(InterimItemWindow, DoLayout, Timer*, void) { Layout(); }
|
||||||
|
|
||||||
void InterimItemWindow::IdleResize()
|
void InterimItemWindow::Layout()
|
||||||
{
|
{
|
||||||
vcl::Window* pChild = GetWindow(GetWindowType::FirstChild);
|
vcl::Window* pChild = GetWindow(GetWindowType::FirstChild);
|
||||||
assert(pChild);
|
assert(pChild);
|
||||||
|
Reference in New Issue
Block a user