[maemo-commits] [maemo-commits] r15643 - in projects/haf/trunk/gtk+: . debian gtk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Jun 12 14:32:36 EEST 2008
Author: klattimer
Date: 2008-06-12 14:32:27 +0300 (Thu, 12 Jun 2008)
New Revision: 15643

Modified:
   projects/haf/trunk/gtk+/ChangeLog
   projects/haf/trunk/gtk+/debian/changelog
   projects/haf/trunk/gtk+/gtk/gtkentry.c
Log:
gtk+2.0 (2:2.12.9-0osso2) unstable; urgency=low

  * gtk/gtkentry.c (gtk_entry_set_progress_adjustment): new function to
    set an adjustment as progress indicator on GtkEntry widgets. Tim Janik
    <timj at imendio.com>
  * gtk/gtkdialog.c (gtk_dialog_init): change the layout of the
    dialog so the buttons appear vertically on the right side. Alberto Garcia
    <agarcia at igalia.com>
  * gtk/gtkmenushell.c (gtk_menu_shell_button_release): one part of
    the 2-12 upgrade patch got lost, making all menus behave
    unpredictable-to-unusable. Should be fixed now. Michael Natterer
    <mitch at imendio.com>
  * gtk/gtkenums.h:
  * gtk/gtkwidget.c (gtk_widget_class_init): introduce hildon-mode
    style property. Kristian Rietveld  <kris at imendio.com>



Modified: projects/haf/trunk/gtk+/ChangeLog
===================================================================
--- projects/haf/trunk/gtk+/ChangeLog	2008-06-10 09:55:09 UTC (rev 15642)
+++ projects/haf/trunk/gtk+/ChangeLog	2008-06-12 11:32:27 UTC (rev 15643)
@@ -1,3 +1,8 @@
+2008-05-05 13:42:57  Tim Janik  <timj at imendio.com>
+
+	* gtk/gtkentry.c (gtk_entry_set_progress_adjustment): new function to
+	set an adjustment as progress indicator on GtkEntry widgets.
+
 2008-06-09  Kristian Rietveld  <kris at imendio.com>
 
 	* gtk/gtkenums.h:

Modified: projects/haf/trunk/gtk+/debian/changelog
===================================================================
--- projects/haf/trunk/gtk+/debian/changelog	2008-06-10 09:55:09 UTC (rev 15642)
+++ projects/haf/trunk/gtk+/debian/changelog	2008-06-12 11:32:27 UTC (rev 15643)
@@ -1,3 +1,21 @@
+gtk+2.0 (2:2.12.9-0osso2) unstable; urgency=low
+
+  * gtk/gtkentry.c (gtk_entry_set_progress_adjustment): new function to
+    set an adjustment as progress indicator on GtkEntry widgets. Tim Janik
+    <timj at imendio.com>
+  * gtk/gtkdialog.c (gtk_dialog_init): change the layout of the
+    dialog so the buttons appear vertically on the right side. Alberto Garcia
+    <agarcia at igalia.com>
+  * gtk/gtkmenushell.c (gtk_menu_shell_button_release): one part of
+    the 2-12 upgrade patch got lost, making all menus behave
+    unpredictable-to-unusable. Should be fixed now. Michael Natterer
+    <mitch at imendio.com>
+  * gtk/gtkenums.h:
+  * gtk/gtkwidget.c (gtk_widget_class_init): introduce hildon-mode
+    style property. Kristian Rietveld  <kris at imendio.com>
+
+ -- Karl Lattimer <karl.lattimer at nokia.com>  Thu, 12 Jun 2008 13:40:00 +0300
+
 gtk+2.0 (2:2.12.9-0osso1) unstable; urgency=low
 
   * Upgrade to GTK+ 2.12.9

Modified: projects/haf/trunk/gtk+/gtk/gtkentry.c
===================================================================
--- projects/haf/trunk/gtk+/gtk/gtkentry.c	2008-06-10 09:55:09 UTC (rev 15642)
+++ projects/haf/trunk/gtk+/gtk/gtkentry.c	2008-06-12 11:32:27 UTC (rev 15643)
@@ -1671,6 +1671,64 @@
     }
 }
 
+typedef struct {
+  GtkEntry      *entry;
+  GtkAdjustment *adjustment;
+} EntryProgressAdjustment;
+
+static void
+entry_progress_adjustment_removed (gpointer data)
+{
+  EntryProgressAdjustment *epa = data;
+  g_signal_handlers_disconnect_by_func (epa->adjustment, gtk_widget_queue_draw, epa->entry);
+  g_object_unref (epa->adjustment);
+  g_slice_free (EntryProgressAdjustment, epa);
+}
+
+void
+gtk_entry_set_progress_adjustment (GtkEntry      *entry,
+                                   GtkAdjustment *adjustment)
+{
+  g_return_if_fail (GTK_IS_ENTRY (entry));
+  if (adjustment)
+    g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+
+  if (adjustment)
+    {
+      EntryProgressAdjustment *epa = g_slice_new (EntryProgressAdjustment);
+      epa->entry = entry;
+      epa->adjustment = g_object_ref_sink (adjustment);
+      g_object_set_data_full (G_OBJECT (entry), "GtkEntry-progress-adjustment", epa, entry_progress_adjustment_removed);
+      g_signal_connect_object (adjustment, "value-changed", G_CALLBACK (gtk_widget_queue_draw), entry, G_CONNECT_SWAPPED);
+    }
+  else
+    g_object_set_data (G_OBJECT (entry), "GtkEntry-progress-adjustment", NULL);
+}
+
+static void
+entry_paint_progress_adjustment (GtkEntry       *entry,
+                                 GdkEventExpose *event)
+{
+  EntryProgressAdjustment *epa = g_object_get_data (G_OBJECT (entry), "GtkEntry-progress-adjustment");
+  if (!epa)
+    return;
+  GtkWidget *widget = GTK_WIDGET (entry);
+  GtkAdjustment *adjustment = epa->adjustment;
+  double value = adjustment->value / ABS (adjustment->upper - adjustment->page_size - adjustment->lower);
+  int area_width, area_height;
+  gdk_drawable_get_size (entry->text_area, &area_width, &area_height);
+  if (value < 0)
+    gtk_paint_box (widget->style, entry->text_area,
+                   GTK_STATE_SELECTED, GTK_SHADOW_OUT,
+                   &event->area, widget, "bar",
+                   area_width + value * area_width, 0, -value * area_width, area_height);
+  else
+    gtk_paint_box (widget->style, entry->text_area,
+                   GTK_STATE_SELECTED, GTK_SHADOW_OUT,
+                   &event->area, widget, "bar",
+                   0, 0, value * area_width, area_height);
+}
+
 static gint
 gtk_entry_expose (GtkWidget      *widget,
 		  GdkEventExpose *event)
@@ -1689,6 +1747,7 @@
 			  GTK_WIDGET_STATE(widget), GTK_SHADOW_NONE,
 			  &event->area, widget, "entry_bg",
 			  0, 0, area_width, area_height);
+      entry_paint_progress_adjustment (entry, event);
 
       if (entry->dnd_position != -1)
 	gtk_entry_draw_cursor (GTK_ENTRY (widget), CURSOR_DND);


More information about the maemo-commits mailing list