From a4675bff3184cd4dc1c8de0aee9df26d9075c042 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 22 Oct 2025 13:29:56 +0200 Subject: [PATCH 1/4] [graf2d] allow zero-margins between pads Fixes https://github.com/root-project/root/issues/20138 --- graf2d/gpad/src/TPad.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/graf2d/gpad/src/TPad.cxx b/graf2d/gpad/src/TPad.cxx index ca11fa203a18d..37f1b9936ef56 100644 --- a/graf2d/gpad/src/TPad.cxx +++ b/graf2d/gpad/src/TPad.cxx @@ -1251,7 +1251,7 @@ Int_t TPad::DistancetoPrimitive(Int_t px, Int_t py) /// points to the current pad. One can use gPad to set attributes /// of the current pad. /// -/// __Note3:__ in case xmargin <=0 and ymargin <= 0, there is no space +/// __Note3:__ in case xmargin < 0 and ymargin < 0, there is no space /// between pads. The current pad margins are recomputed to /// optimize the layout. @@ -1277,7 +1277,7 @@ void TPad::Divide(Int_t nx, Int_t ny, Float_t xmargin, Float_t ymargin, Int_t co TString name, title; Int_t n = 0; if (color == 0) color = GetFillColor(); - if (xmargin > 0 && ymargin > 0) { + if (xmargin >= 0 && ymargin >= 0) { //general case dy = 1/Double_t(ny); dx = 1/Double_t(nx); @@ -1298,7 +1298,7 @@ void TPad::Divide(Int_t nx, Int_t ny, Float_t xmargin, Float_t ymargin, Int_t co } } } else { - // special case when xmargin <= 0 && ymargin <= 0 + // special case when xmargin < 0 && ymargin < 0 Double_t xl = GetLeftMargin(); Double_t xr = GetRightMargin(); Double_t yb = GetBottomMargin(); From 61fbcc57613fcaaaedc7a90eca5cdd4eb7adf1d6 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 22 Oct 2025 13:35:26 +0200 Subject: [PATCH 2/4] [graf2d] honor color if xmargin < 0 it was forgotten in the pad constructor --- graf2d/gpad/src/TPad.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graf2d/gpad/src/TPad.cxx b/graf2d/gpad/src/TPad.cxx index 37f1b9936ef56..ccc6c2984b152 100644 --- a/graf2d/gpad/src/TPad.cxx +++ b/graf2d/gpad/src/TPad.cxx @@ -1327,7 +1327,7 @@ void TPad::Divide(Int_t nx, Int_t ny, Float_t xmargin, Float_t ymargin, Int_t co if (j == ny-1) y1 = 0; name.Form("%s_%d", GetName(), number); title.Form("%s_%d", GetTitle(), number); - pad = new TPad(name.Data(), title.Data(), x1, y1, x2, y2); + pad = new TPad(name.Data(), title.Data(), x1, y1, x2, y2, color); pad->SetNumber(number); pad->SetBorderMode(0); if (i == 0) pad->SetLeftMargin(xl*nx); From b57b2d65b623852518dbd63fc4bc8bdeeb7fc634 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Fri, 24 Oct 2025 07:46:22 +0200 Subject: [PATCH 3/4] Apply suggestion from @ferdymercury --- graf2d/gpad/src/TPad.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graf2d/gpad/src/TPad.cxx b/graf2d/gpad/src/TPad.cxx index ccc6c2984b152..3dbfcdab8c062 100644 --- a/graf2d/gpad/src/TPad.cxx +++ b/graf2d/gpad/src/TPad.cxx @@ -1298,7 +1298,7 @@ void TPad::Divide(Int_t nx, Int_t ny, Float_t xmargin, Float_t ymargin, Int_t co } } } else { - // special case when xmargin < 0 && ymargin < 0 + // special case when xmargin < 0 or ymargin < 0 Double_t xl = GetLeftMargin(); Double_t xr = GetRightMargin(); Double_t yb = GetBottomMargin(); From b6cbdf3500b361a7a0a637a01fc36ee0be359f21 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Fri, 24 Oct 2025 07:46:34 +0200 Subject: [PATCH 4/4] Apply suggestion from @ferdymercury --- graf2d/gpad/src/TPad.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graf2d/gpad/src/TPad.cxx b/graf2d/gpad/src/TPad.cxx index 3dbfcdab8c062..5aea6e018547c 100644 --- a/graf2d/gpad/src/TPad.cxx +++ b/graf2d/gpad/src/TPad.cxx @@ -1251,7 +1251,7 @@ Int_t TPad::DistancetoPrimitive(Int_t px, Int_t py) /// points to the current pad. One can use gPad to set attributes /// of the current pad. /// -/// __Note3:__ in case xmargin < 0 and ymargin < 0, there is no space +/// __Note3:__ in case xmargin < 0 or ymargin < 0, there is no space /// between pads. The current pad margins are recomputed to /// optimize the layout.