summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaolán McNamara <caolan.mcnamara@collabora.com>2024-03-31 18:11:42 +0100
committerAdolfo Jayme Barrientos <fitojb@ubuntu.com>2024-04-10 08:06:40 +0200
commit508a755a465c322af3c08f871299ce57193ca523 (patch)
treeddecc5020c6760e053004e9cb7d1bd0fdefcd3c2
parenttdf#159790 temporarily release mutex for child packages (diff)
downloadcore-508a755a465c322af3c08f871299ce57193ca523.tar.gz
core-508a755a465c322af3c08f871299ce57193ca523.zip
Resolves: tdf#154072 no effect when clicking some dropdown buttons
when toolbar overflows. A problem since: commit b534ee2e972711af2dbaadf2190813054adda902 Date: Tue Nov 22 11:33:23 2022 +0000 Resolves: tdf#152155 use gtk's knowledge of relative widget positions rather than effectively emulate it poorly Change-Id: I18c08e43e9c0b642f2a30b5114d6f0a53f18a331 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165610 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com> Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165634
-rw-r--r--vcl/unx/gtk3/gtkframe.cxx22
1 files changed, 17 insertions, 5 deletions
diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx
index 6152d64bd86e..7c9290cfed68 100644
--- a/vcl/unx/gtk3/gtkframe.cxx
+++ b/vcl/unx/gtk3/gtkframe.cxx
@@ -3926,12 +3926,24 @@ void GtkSalFrame::signalRealize(GtkWidget*, gpointer frame)
}
tools::Rectangle aFloatRect = FloatingWindow::ImplConvertToAbsPos(pVclParent, pThis->m_aFloatRect);
- if (gdk_window_get_window_type(widget_get_surface(pThis->m_pParent->m_pWindow)) != GDK_WINDOW_TOPLEVEL)
+ switch (gdk_window_get_window_type(widget_get_surface(pThis->m_pParent->m_pWindow)))
{
- // See tdf#152155 for an example
- gtk_coord nX(0), nY(0.0);
- gtk_widget_translate_coordinates(pThis->m_pParent->m_pWindow, widget_get_toplevel(pThis->m_pParent->m_pWindow), 0, 0, &nX, &nY);
- aFloatRect.Move(nX, nY);
+ case GDK_WINDOW_TOPLEVEL:
+ break;
+ case GDK_WINDOW_CHILD:
+ {
+ // See tdf#152155 for an example
+ gtk_coord nX(0), nY(0.0);
+ gtk_widget_translate_coordinates(pThis->m_pParent->m_pWindow, widget_get_toplevel(pThis->m_pParent->m_pWindow), 0, 0, &nX, &nY);
+ aFloatRect.Move(nX, nY);
+ break;
+ }
+ default:
+ {
+ // See tdf#154072 for an example
+ aFloatRect.Move(-pThis->m_pParent->maGeometry.x(), -pThis->m_pParent->maGeometry.y());
+ break;
+ }
}
GdkRectangle rect {static_cast<int>(aFloatRect.Left()), static_cast<int>(aFloatRect.Top()),