Author: tkng
Date: Tue Aug  9 15:05:23 2005
New Revision: 1175

Modified:
   trunk/gtk/caret-state-indicator.c

Log:
* gtk/caret-state-indicator.c: Improved the appearance of state-indicator.
 -(caret_state_indicator_paint_window): New callback function to paint
   to dwaw square frame.
 -(caret_state_indicator_new): Connect above callback function.


Modified: trunk/gtk/caret-state-indicator.c
==============================================================================
--- trunk/gtk/caret-state-indicator.c   (original)
+++ trunk/gtk/caret-state-indicator.c   Tue Aug  9 15:05:23 2005
@@ -42,9 +42,34 @@
  * caret state indicator is a state indicator nearby the caret.
  */
 
+#define DEFAULT_WINDOW_WIDTH  20
+#define DEFAULT_WINDOW_HEIGHT 20
+
 static gint
 caret_state_indicator_timeout(gpointer data);
 
+static gint
+caret_state_indicator_timeout(gpointer data)
+{
+  GtkWidget *window = GTK_WIDGET(data);
+  gtk_widget_hide(window);
+  return 0;
+}
+
+static gint
+caret_state_indicator_paint_window (GtkWidget *window)
+{
+  GtkRequisition req;
+
+  gtk_widget_size_request (window, &req);
+  gtk_paint_flat_box (window->style, window->window,
+                     GTK_STATE_NORMAL, GTK_SHADOW_OUT,
+                     NULL, GTK_WIDGET(window), "tooltip",
+                     0, 0, DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT);
+
+  return FALSE;
+}
+
 GtkWidget *
 caret_state_indicator_new(void)
 {
@@ -55,9 +80,19 @@
   label  = gtk_label_new("");
   gtk_container_add(GTK_CONTAINER(window), label);
 
-  gtk_window_set_default_size(GTK_WINDOW(window), 20, 20);
+  gtk_window_set_default_size(GTK_WINDOW(window),
+                             DEFAULT_WINDOW_WIDTH,
+                             DEFAULT_WINDOW_HEIGHT);
+    gtk_widget_set_app_paintable (window, TRUE);
+
+    g_signal_connect(window, "expose_event",
+                    G_CALLBACK (caret_state_indicator_paint_window), 
+                    NULL);
+
+  gtk_misc_set_alignment (GTK_MISC (label), 0.5, 0.5);
 
   g_object_set_data(G_OBJECT(window), "label", label);
+
   return window;
 }
 
@@ -93,12 +128,4 @@
 caret_state_indicator_set_timeout(GtkWidget *window, gint timeout)
 {
   g_timeout_add(timeout, caret_state_indicator_timeout, (gpointer)window);
-}
-
-static gint
-caret_state_indicator_timeout(gpointer data)
-{
-  GtkWidget *window = GTK_WIDGET(data);
-  gtk_widget_hide(window);
-  return 0;
 }

Reply via email to