C++ Chromium浏览器:如何移动BubbleDialogDelegateView小部件而不闪烁?

C++ Chromium浏览器:如何移动BubbleDialogDelegateView小部件而不闪烁?,c++,webview,chromium,C++,Webview,Chromium,我有一个基于视图的弹出对话框::BubbleDialogDelegateView(类似于ProfileChooserView) 当窗口出现时,我需要将其从左向右移动(动画)。类似于Opera轻松设置栏。 是否有一种跨平台的方式来移动或动画小部件而不闪烁 如果我用定时器模拟动画,并一步一步地改变小部件的大小,它就会闪烁 void WebViewPopup::SetPaneWidth(int w) { views::Widget* this_widget = this->GetWidget

我有一个基于视图的弹出对话框::BubbleDialogDelegateView(类似于ProfileChooserView)

当窗口出现时,我需要将其从左向右移动(动画)。类似于Opera轻松设置栏。 是否有一种跨平台的方式来移动或动画小部件而不闪烁

如果我用定时器模拟动画,并一步一步地改变小部件的大小,它就会闪烁

void WebViewPopup::SetPaneWidth(int w)
{
  views::Widget* this_widget = this->GetWidget();
  gfx::Rect bounds(); //calculate new widget size
  this_widget->SetBounds(bounds); // flickers!
}
我在chromium\src\ui\wm\core\window\u animations.cc中找到了窗口动画,它工作正常,但它使用了Aura,并且仅在Windows上可用

那么,主要的问题是:有没有一种跨平台的方式来移动或动画一个小部件而不闪烁

void WebViewPopup::SetPaneWidth(int w)
{
  views::Widget* this_widget = this->GetWidget();
  gfx::Rect bounds(); //calculate new widget size
  this_widget->SetBounds(bounds); // flickers!
}