]> spindle.queued.net Git - midori/commitdiff
Use progress and icon GtkEntry features with GTK+ 2.16
authorChristian Dywan <christian@twotoasts.de>
Sat, 11 Apr 2009 05:05:28 +0000 (07:05 +0200)
committerChristian Dywan <christian@twotoasts.de>
Sat, 11 Apr 2009 05:05:28 +0000 (07:05 +0200)
extensions/cookie-manager.c
midori/gtkiconentry.c
midori/gtkiconentry.h
midori/midori-browser.c
midori/midori-locationaction.c
midori/midori-locationentry.c
midori/midori-searchaction.c

index e506eed30fceceaa3b420dec3e5e0d6a9a6c5c32..8135583596427f2a6d0d436a3b69c191356b9953 100644 (file)
@@ -864,7 +864,7 @@ static void cm_app_add_browser_cb(MidoriApp *app, MidoriBrowser *browser, Midori
                GTK_ICON_ENTRY_SECONDARY, GTK_STOCK_CLEAR);
        gtk_icon_entry_set_icon_highlight(GTK_ICON_ENTRY (cmdata->filter_entry),
                GTK_ICON_ENTRY_SECONDARY, TRUE);
-       g_signal_connect(cmdata->filter_entry, "icon_released",
+       g_signal_connect(cmdata->filter_entry, "icon-release",
                G_CALLBACK(cm_filter_entry_clear_icon_released_cb), NULL);
        g_signal_connect(cmdata->filter_entry, "changed", G_CALLBACK(cm_filter_entry_changed_cb), cmdata);
        g_signal_connect(cmdata->filter_entry, "activate", G_CALLBACK(cm_filter_entry_changed_cb), cmdata);
index 8e1899325836e32aaa2c9676d1bc030972c248fc..51740ab021f2955e54230606a62e02a5727e92fa 100644 (file)
 
 #include "gtkiconentry.h"
 
+#if GTK_CHECK_VERSION (2, 16, 0)
+
+void
+gtk_icon_entry_set_icon_from_pixbuf (GtkEntry*            entry,
+                                     GtkEntryIconPosition position,
+                                     GdkPixbuf*           pixbuf)
+{
+    /* Without this ugly hack pixbuf icons don't work */
+    if (pixbuf)
+    {
+        gtk_widget_hide (GTK_WIDGET (entry));
+        gtk_entry_set_icon_from_pixbuf (entry, position, pixbuf);
+        gtk_widget_show (GTK_WIDGET (entry));
+    }
+}
+
+#else
+
 #include <string.h>
 
 #if GTK_CHECK_VERSION (2, 14, 0)
@@ -61,9 +79,7 @@ typedef struct
   GdkCursorType cursor_type;
   gboolean custom_cursor;
   GtkImageType storage_type;
-  #if GLIB_CHECK_VERSION (2, 16, 0)
   GIcon *gicon;
-  #endif
   gchar *icon_name;
   gboolean insensitive;
 } EntryIconInfo;
@@ -196,17 +212,17 @@ gtk_icon_entry_class_init (GtkIconEntryClass *klass)
                  G_TYPE_INT);
 
   /**
-   * GtkIconEntry::icon-released:
+   * GtkIconEntry::icon-release:
    * @entry: The entry on which the signal is emitted.
    * @icon_pos: The position of the clicked icon.
    * @button: The mouse button clicked.
    *
-   * The ::icon-released signal is emitted on the button release from a
+   * The ::icon-release signal is emitted on the button release from a
    * mouse click.
    */
-  if (!(signals[ICON_RELEASED] = g_signal_lookup ("icon-released", GTK_TYPE_ENTRY)))
+  if (!(signals[ICON_RELEASED] = g_signal_lookup ("icon-release", GTK_TYPE_ENTRY)))
   signals[ICON_RELEASED] =
-    g_signal_new ("icon-released",
+    g_signal_new ("icon-release",
                  G_TYPE_FROM_CLASS (gobject_class),
                  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
                  G_STRUCT_OFFSET (GtkIconEntryClass, icon_released),
@@ -274,7 +290,6 @@ gtk_icon_entry_class_init (GtkIconEntryClass *klass)
                                                        NULL,
                                                        GTK_PARAM_WRITABLE));
 
-  #if GLIB_CHECK_VERSION (2, 16, 0)
   g_object_class_install_property (gobject_class,
                                   PROP_GICON_PRIMARY,
                                   g_param_spec_object ("gicon-primary",
@@ -290,7 +305,6 @@ gtk_icon_entry_class_init (GtkIconEntryClass *klass)
                                                        P_("GIcon for secondary icon"),
                                                        G_TYPE_ICON,
                                                        GTK_PARAM_READWRITE));
-  #endif
 
   g_type_class_add_private (klass, sizeof (GtkIconEntryPrivate));
 }
@@ -433,7 +447,6 @@ gtk_icon_entry_set_property (GObject      *object,
                                              g_value_get_string (value));
       break;
 
-    #if GLIB_CHECK_VERSION (2, 16, 0)
     case PROP_GICON_PRIMARY:
       gtk_icon_entry_set_icon_from_gicon (entry,
                                          GTK_ICON_ENTRY_PRIMARY,
@@ -445,7 +458,6 @@ gtk_icon_entry_set_property (GObject      *object,
                                          GTK_ICON_ENTRY_SECONDARY,
                                          g_value_get_object (value));
       break;
-    #endif
     }
 }
 
@@ -471,7 +483,6 @@ gtk_icon_entry_get_property (GObject      *object,
                                                     GTK_ICON_ENTRY_SECONDARY));
       break;
 
-    #if GLIB_CHECK_VERSION (2, 16, 0)
     case PROP_GICON_PRIMARY:
       g_value_set_object (value,
                          gtk_icon_entry_get_gicon (entry,
@@ -482,7 +493,6 @@ gtk_icon_entry_get_property (GObject      *object,
       g_value_set_object (value,
                          gtk_icon_entry_get_gicon (entry,
                                                    GTK_ICON_ENTRY_SECONDARY));
-    #endif
     }
 }
 
@@ -1338,8 +1348,6 @@ gtk_icon_entry_set_icon_from_icon_name (GtkIconEntry *entry,
  * instead.  If the current icon theme is changed, the icon will be updated
  * appropriately.
  */
-
-#if GLIB_CHECK_VERSION (2, 16, 0)
 void
 gtk_icon_entry_set_icon_from_gicon (const GtkIconEntry *entry,
                                    GtkIconEntryPosition icon_pos,
@@ -1390,7 +1398,6 @@ gtk_icon_entry_set_icon_from_gicon (const GtkIconEntry *entry,
                                    icon_pos,
                                    pixbuf);
 }
-#endif
 
 /**
  * gtk_icon_entry_set_cursor
@@ -1491,9 +1498,6 @@ gtk_icon_entry_get_pixbuf (const GtkIconEntry *entry,
  *
  * Returns: A #GIcon, or NULL if no icon is set or if the icon is not a GIcon.
  */
-
-
-#if GLIB_CHECK_VERSION (2, 16, 0)
 GIcon *
 gtk_icon_entry_get_gicon (const GtkIconEntry *entry,
                          GtkIconEntryPosition icon_pos)
@@ -1510,7 +1514,6 @@ gtk_icon_entry_get_gicon (const GtkIconEntry *entry,
 
   return icon_info->storage_type == _GTK_IMAGE_GICON ? icon_info->gicon : NULL;
 }
-#endif
 
 /**
  * gtk_icon_entry_get_icon_highlight
@@ -1601,3 +1604,5 @@ gtk_icon_entry_set_icon_sensitive (const GtkIconEntry *icon_entry,
       gdk_cursor_unref (cursor);
     }
 }
+
+#endif
index 820153397a2a52250a926d68d1e9cd9911932c47..61f8075bbb11bc79415b5440d6eb8f35058922ef 100644 (file)
     #include <config.h>
 #endif
 
-#include <glib.h>
-#if GLIB_CHECK_VERSION (2, 16, 0)
 #include <gio/gio.h>
-#endif
 #include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
+#if GTK_CHECK_VERSION (2, 16, 0)
+    #define GtkIconEntry GtkEntry
+    #define GtkIconEntryPosition GtkEntryIconPosition
+    #define GTK_ICON_ENTRY_PRIMARY GTK_ENTRY_ICON_PRIMARY
+    #define GTK_ICON_ENTRY_SECONDARY GTK_ENTRY_ICON_SECONDARY
+    #define GTK_ICON_ENTRY GTK_ENTRY
+    #define GTK_TYPE_ICON_ENTRY GTK_TYPE_ENTRY
+    #define gtk_icon_entry_new gtk_entry_new
+    #define gtk_icon_entry_set_icon_from_stock gtk_entry_set_icon_from_stock
+    void
+    gtk_icon_entry_set_icon_from_pixbuf (GtkEntry*            entry,
+                                         GtkEntryIconPosition position,
+                                         GdkPixbuf*           pixbuf);
+    #define gtk_icon_entry_set_icon_highlight gtk_entry_set_icon_activatable
+#else
+
 #define GTK_TYPE_ICON_ENTRY (gtk_icon_entry_get_type())
 #define GTK_ICON_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_ICON_ENTRY, GtkIconEntry))
 #define GTK_ICON_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_ICON_ENTRY, GtkIconEntryClass))
@@ -86,17 +99,15 @@ void       gtk_icon_entry_set_icon_from_icon_name (GtkIconEntry *entry,
                                                   GtkIconEntryPosition icon_pos,
                                                   const gchar *icon_name);
 
-#if GLIB_CHECK_VERSION (2, 16, 0)
 void       gtk_icon_entry_set_icon_from_gicon     (const GtkIconEntry *entry,
                                                   GtkIconEntryPosition icon_pos,
                                                   GIcon *icon);
-#endif
+
 GdkPixbuf* gtk_icon_entry_get_pixbuf              (const GtkIconEntry *entry,
                                                   GtkIconEntryPosition icon_pos);
-#if GLIB_CHECK_VERSION (2, 16, 0)
+
 GIcon*     gtk_icon_entry_get_gicon               (const GtkIconEntry *entry,
                                                   GtkIconEntryPosition icon_pos);
-#endif
 
 void       gtk_icon_entry_set_icon_highlight      (const GtkIconEntry *entry,
                                                   GtkIconEntryPosition icon_pos,
@@ -117,6 +128,8 @@ void       gtk_icon_entry_set_icon_sensitive      (const GtkIconEntry *icon_entr
                                                   GtkIconEntryPosition icon_pos,
                                                   gboolean sensitive);
 
+#endif
+
 G_END_DECLS
 
 #endif /* __GTK_ICON_ENTRY_H__ */
index 46dcf8458d3dc4329089b510eb053025b38c3463..47ac21ef89416262179c24136b276a381ad66a88 100644 (file)
@@ -4257,7 +4257,7 @@ midori_browser_init (MidoriBrowser* browser)
                                         GTK_STOCK_CLEAR);
     gtk_icon_entry_set_icon_highlight (GTK_ICON_ENTRY (browser->find_text),
                                        GTK_ICON_ENTRY_SECONDARY, TRUE);
-    g_signal_connect (browser->find_text, "icon_released",
+    g_signal_connect (browser->find_text, "icon-release",
         G_CALLBACK (midori_browser_entry_clear_icon_released_cb), NULL);
     g_signal_connect (browser->find_text, "activate",
         G_CALLBACK (_action_find_next_activate), browser);
index 2fd2b468a5902b8ba4b2ec056cd0bd5e3c452b74..c793bb14fe56b47339c5aa7d7a3d9e9d2391bfc2 100644 (file)
@@ -847,7 +847,7 @@ midori_location_action_connect_proxy (GtkAction* action,
                       midori_location_action_key_press_event_cb, action,
                       "signal::focus-out-event",
                       midori_location_action_focus_out_event_cb, action,
-                      "signal::icon-released",
+                      "signal::icon-release",
                       midori_location_action_icon_released_cb, action,
                       NULL);
     }
index 92a342776c1deca33f427d23f7c0ced8f79c2907..1f1f5d128d0133cc331170a38a803a3e8f02cf61 100644 (file)
@@ -51,9 +51,7 @@ midori_location_entry_class_init (MidoriLocationEntryClass* class)
 
 }
 
-#define HAVE_ENTRY_PROGRESS 1
-
-#ifdef HAVE_ENTRY_PROGRESS
+#if !GTK_CHECK_VERSION (2, 16, 0)
 
 /* GTK+/ GtkEntry internal helper function
    Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
@@ -345,7 +343,7 @@ entry_expose_event (GtkWidget*           entry,
 
   gdk_drawable_get_size (text_area, &width, &height);
 
-  if (location_entry->progress > 0.0/* && location_entry->progress < 1.0*/)
+  if (location_entry->progress > 0.0)
   {
       gtk_paint_box (entry->style, text_area,
                      GTK_STATE_SELECTED, GTK_SHADOW_OUT,
@@ -362,18 +360,18 @@ void
 midori_location_entry_set_progress (MidoriLocationEntry* location_entry,
                                     gdouble              progress)
 {
-    #ifdef HAVE_ENTRY_PROGRESS
     GtkWidget* child;
-    #endif
 
     g_return_if_fail (MIDORI_IS_LOCATION_ENTRY (location_entry));
 
     location_entry->progress = CLAMP (progress, 0.0, 1.0);
 
-    #ifdef HAVE_ENTRY_PROGRESS
     child = gtk_bin_get_child (GTK_BIN (location_entry));
+    #if !GTK_CHECK_VERSION (2, 16, 0)
     if (GTK_ENTRY (child)->text_area)
         gdk_window_invalidate_rect (GTK_ENTRY (child)->text_area, NULL, FALSE);
+    #else
+    gtk_entry_set_progress_fraction (GTK_ENTRY (child), progress);
     #endif
 }
 
@@ -397,7 +395,7 @@ midori_location_entry_init (MidoriLocationEntry* location_entry)
          GTK_ICON_ENTRY_SECONDARY, TRUE);
     g_signal_connect_after (entry, "key-press-event",
         G_CALLBACK (entry_key_press_event), location_entry);
-    #ifdef HAVE_ENTRY_PROGRESS
+    #if !GTK_CHECK_VERSION (2, 16, 0)
     g_signal_connect_after (entry, "expose-event",
         G_CALLBACK (entry_expose_event), location_entry);
     #endif
index b58e48e34abe4cc3d1feba30f54f1503bedc89e0..f7df3c9c4bff19f7bde529ff89c85af5be03deab 100644 (file)
@@ -532,7 +532,7 @@ midori_search_action_connect_proxy (GtkAction* action,
                           midori_search_action_key_press_event_cb, action,
                           "signal::focus-out-event",
                           midori_search_action_focus_out_event_cb, action,
-                          "signal::icon-released",
+                          "signal::icon-release",
                           midori_search_action_icon_released_cb, action,
                           "signal::scroll-event",
                           midori_search_action_scroll_event_cb, action,