Index: data/ffalarms.edc
===================================================================
--- data/ffalarms.edc	(revisione 12)
+++ data/ffalarms.edc	(copia locale)
@@ -549,10 +549,10 @@
                 }
             }
 
-            BUTTON("hour", "HH", 0.5 0.5, "circle",
+            BUTTON("am-pm", "AM", 0.5 0.5, "circle",
                    (-3/2*A-G) -A/2, (-1/2*A-G) A/2);
-            BUTTON("minute", "00", 1.0 0.0, "hour", G 0, (A+G) A);
-            BUTTON("am-pm", "AM", 1.0 0.0, "minute", G 0, (A+G) A);
+            BUTTON("hour", "HH", 1.0 0.0, "am-pm", G 0, (A+G) A);
+            BUTTON("minute", "MM", 1.0 0.0, "hour", G 0, (A+G) A);
 
             CANCEL_BUTTON;
 
@@ -572,10 +572,10 @@
             HOUR_BUTTON("10", 0.5-0.5*COS_33 0.5-0.5*SIN_33, 0, 0, A, A);
             HOUR_BUTTON("11", 0.5-0.5*SIN_33 0.5-0.5*COS_33, 0, 0, A, A);
 
+            HOUR_BUTTON("0", 0.5 0, -A/2, M, A/2, (A+M));
             HOUR_BUTTON("3", 1.0 0.5, (-A-B), -A/2, -G, A/2);
             HOUR_BUTTON("9", 0.0 0.5, M, -A/2, (A+B), A/2);
             HOUR_BUTTON("6", 0.5 1.0, -A/2, (-A-M), A/2, -M);
-            HOUR_BUTTON("12", 0.5 0, -A/2, M, A/2, (A+M));
         }
 
         programs {
@@ -583,6 +583,7 @@
             BUTTON_PROG("minute");
             ICON_DIM_PROG("ok-button");
             ICON_DIM_PROG("cancel-button");
+            HOUR_CLICK_PROG("0");
             HOUR_CLICK_PROG("1");
             HOUR_CLICK_PROG("2");
             HOUR_CLICK_PROG("3");
@@ -594,7 +595,6 @@
             HOUR_CLICK_PROG("9");
             HOUR_CLICK_PROG("10");
             HOUR_CLICK_PROG("11");
-            HOUR_CLICK_PROG("12");
         }
     }
 
Index: ffalarms/ffalarms.py
===================================================================
--- ffalarms/ffalarms.py	(revisione 12)
+++ ffalarms/ffalarms.py	(copia locale)
@@ -297,10 +308,8 @@
             h = int(source[1:].split('-')[1])
         except ValueError:
             return
-        if not 1 <= h <= 12:
+        if h < 0 or h > 12:
             return
-        if h == 12:
-            h = 0
         if self.selected == 0:
             self.hour = h
             edj.part_text_set("hour", '%02d' % (h + 12 * self.am_pm))
@@ -313,19 +322,36 @@
             edj.signal_emit("unselect", "minute-button")
             self.selected = -1
 
+        self.update_clock(edj)
+
     def select(self, edj, signal, source):
         sel = self.names.index(source)
         if self.selected != sel and self.selected >= 0:
             edj.signal_emit("unselect", self.names[self.selected])
         self.selected = sel
+        self.update_clock(edj)
         edj.signal_emit("select", self.names[self.selected])
 
     def am_pm_click(self, edj, signal, source):
         self.am_pm = not self.am_pm
         edj.part_text_set("am-pm", ("AM", "PM")[self.am_pm])
+        if self.selected == 1:
+            edj.signal_emit("unselect", "minute-button")
+            edj.signal_emit("select", "hour-button")
+            self.selected = 0
+        self.update_clock(edj)
+
         if self.hour is not None:
             edj.part_text_set("hour", '%02d' % (self.hour + 12 * self.am_pm))
 
+    def update_clock(self, edj):
+        for i in range(0, 12):
+           digit = i
+           if self.selected == 1:
+                digit *= 5
+           elif self.am_pm == 1:
+                digit += 12
+           edj.part_text_set("hour-"+str(i)+"-button-text", str(digit))
 
 class Puzzle(edje.Edje):
 

