# Configuring Beamer with the Singapore theme

I found the Singapore theme very useful. However I can't find the way to put the small circles on top of the frame that are empty for slides not yet discussed and becomes black for slides discussed. How I can put them?

-
Can you try \documentclass{beamer}\usetheme{Singapore}\useoutertheme{miniframes}? I'm not sure if I understand the question. –  percusse Jun 26 '12 at 11:37
@percusse: if I'm not wrong, the OP wants to change the behaviour of the circles; instead of using filled circles only for the current frame, he wonder to make filled all circles corresponding on the current and all past frames, while next frames are still detected by empty circles. Is it right? –  Claudio Fiandrino Jun 26 '12 at 14:35

I guess the proper thing to do is to send a patch to the beamer developers that modifies \slideentry (in beamerbasenavigation.sty) so that it uses three templates (before, current, after).

However, here is a solution that doesn't modify any internal macros.

\documentclass{beamer}
\usetheme{Singapore}
\useoutertheme{miniframes}
\usepackage{etoolbox}

% a flag that tells us how the circles should be drawn
\newif\ifnavbeforecurrent
% reset the flag before every navigation bar

% change the circle drawing code so that it changes based on the flag
\defbeamertemplate*{mini frame in current subsection}{changing}[1][50]
{%
\begin{pgfpicture}{0pt}{0pt}{0.1cm}{0.1cm}
\pgfpathcircle{\pgfpoint{0.05cm}{0.05cm}}{0.05cm}
\ifnavbeforecurrent
\pgfusepath{fill,stroke}
\else
\pgfusepath{stroke}
\fi
\end{pgfpicture}%
}
\setbeamertemplate{mini frame in current subsection}[changing]

% after the circle for the current frame is drawn, change the flag
\defbeamertemplate*{mini frame}{changing}
{%
\begin{pgfpicture}{0pt}{0pt}{0.1cm}{0.1cm}
\pgfpathcircle{\pgfpoint{0.05cm}{0.05cm}}{0.05cm}
\pgfusepath{fill,stroke}
\end{pgfpicture}%
\global\navbeforecurrentfalse
}
\setbeamertemplate{mini frame}[changing]

\begin{document}
\section{A section}
\subsection{A subsection}
\frame{...}
\frame{...}
\frame{...}
\subsection{A second subsection}
\frame{...}
\frame{...}
\frame{...}
\end{document}


-