# Spurious shifting of headline when conditionally placing logo on beamer slide using \pgfputat

I have a macro taken from this question that places a logo on all frames following \placelogotrue and on no frame following \placelogofalse. It largely works as intended, but it causes headline and foodline of the frames with the logo to be slightly shifted to the left, leaving some spurious whitespace (compare the upper image footline with the lower image headline in the pictures below):

Here's the code to reproduce:

% !TeX program = lualatex
\documentclass{beamer}

\usetheme{Malmoe}
% graphics
\DeclareGraphicsExtensions{.jpg,.jpeg,.png,.pdf}

% TikZ/PGF
\usepackage{pgf}

% customization of beamer style
\setbeamertemplate{bibliography item}{}

% define logo
\newif\ifplacelogo
\placelogotrue
\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{\pgfbox[right,base]{%
\includegraphics[height=7mm]{example-image-a}
}}\fi}%

% define custom headline
{%
\leavevmode%
\end{beamercolorbox}%
\end{beamercolorbox}%
}

\begin{document}

\begin{frame}
\end{frame}

\placelogofalse
\begin{frame}
\end{frame}

\end{document}


Why is that? I would have expected \pgfputat not to alter spacing on the frame at all...

I'm compiling with LuaLaTeX Version 1.12.0 (TeX Live 2020) on Arch Linux.

Lets explore it by trial and error (Unfortunately I couldn't find the problem). First if we replace the \pgfbox[right,base]{\includegraphics[height=7mm]{example-image-a}} with a space   then same problem appears but without that space   it is fine:

\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{ }\fi}%


The output of the following code (\pgfputat{ }) is also similar to the above image:

\logo{\ifplacelogo\pgfputat{ }{}\fi}%


If we insert logo directly by \includegraphic then the situation will get worse:

\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{\includegraphics[height=7mm]{example-image-a}}\fi}%


One can also fix this white space by inserting \hspace{-0.5mm} before \pgfbox or \pgfxy:

\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{\hspace{-0.5mm}\pgfbox[right,base]{%
\includegraphics[height=7mm]{example-image-a}
}}\fi}%


or using \makebox[0pt][r]{} instead of \pgfbox

\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{\makebox[0pt][r]
{\includegraphics[height=7mm]{example-image-a}}}\fi}%


See also this post for \llap and \rlap and this (not completely related) post.

Replace the \logo command by

\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{\llap{\includegraphics[height=7mm]{example-image-a}}}\fi}


I didn't check the source of the problem, which is probably related to \pgfbox.