[tracker/gtk3: 2/2] tracker-search-bar: Port to GTK+ 3



commit 72ec3a4d503ede1cf3d1477d16195f1bda6230a2
Author: Jürg Billeter <j bitron ch>
Date:   Wed Feb 9 12:02:26 2011 +0100

    tracker-search-bar: Port to GTK+ 3

 configure.ac                                    |    4 +-
 src/tracker-search-bar/Makefile.am              |    2 +-
 src/tracker-search-bar/tracker-aligned-window.c |   18 ++---
 src/tracker-search-bar/tracker-applet.c         |   13 ++-
 src/tracker-search-bar/tracker-results-window.c |  107 +++++++++++++++--------
 5 files changed, 88 insertions(+), 56 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 54e75d8..79a7cc1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -417,11 +417,11 @@ TRACKER_SEARCH_BAR_REQUIRED="glib-2.0       >= $GLIB_REQUIRED
                              gio-unix-2.0   >= $GLIB_REQUIRED
                              gthread-2.0    >= $GLIB_REQUIRED
                              gmodule-2.0    >= $GLIB_REQUIRED
-                             gtk+-2.0       >= $GTK_REQUIRED
+                             gtk+-3.0       >= $GTK_REQUIRED
                              gdk-pixbuf-2.0 >= $GDKPIXBUF_REQUIRED
                              pango          >= $PANGO_REQUIRED
 			     gee-1.0        >= $GEE_REQUIRED
-                             libpanelapplet-3.0"
+                             libpanelapplet-4.0"
 
 PKG_CHECK_MODULES(TRACKER_SEARCH_BAR, [$TRACKER_SEARCH_BAR_REQUIRED],
                   [have_tracker_search_bar=yes],
diff --git a/src/tracker-search-bar/Makefile.am b/src/tracker-search-bar/Makefile.am
index 1f6180b..b5772dc 100644
--- a/src/tracker-search-bar/Makefile.am
+++ b/src/tracker-search-bar/Makefile.am
@@ -29,7 +29,7 @@ tracker_search_bar_LDADD =                             \
 	$(TRACKER_SEARCH_BAR_LIBS)
 
 # Panel applet
-appletdir = $(datadir)/gnome-panel/applets
+appletdir = $(datadir)/gnome-panel/4.0/applets
 applet_in_files = org.gnome.panel.SearchBar.panel-applet.in
 applet_DATA = $(applet_in_files:.panel-applet.in=.panel-applet)
 
diff --git a/src/tracker-search-bar/tracker-aligned-window.c b/src/tracker-search-bar/tracker-aligned-window.c
index bcc7852..a83fc95 100644
--- a/src/tracker-search-bar/tracker-aligned-window.c
+++ b/src/tracker-search-bar/tracker-aligned-window.c
@@ -91,8 +91,6 @@ tracker_aligned_window_init (TrackerAlignedWindow *aligned_window)
 	priv->motion_id = 0;
   
 	/* set window properties */
-	window->type = GTK_WINDOW_TOPLEVEL;
-
 	gtk_window_set_decorated (window, FALSE);
 	gtk_window_set_type_hint (window, GDK_WINDOW_TYPE_HINT_DOCK);
 }
@@ -155,12 +153,11 @@ tracker_aligned_window_position (TrackerAlignedWindow *window)
 
 	gdk_flush ();
   
-	gdk_window_get_geometry (GTK_WIDGET (window)->window,
+	gdk_window_get_geometry (gtk_widget_get_window (GTK_WIDGET (window)),
 	                         NULL,
 	                         NULL,
 	                         &our_width,
-	                         &our_height,
-	                         NULL);
+	                         &our_height);
   
 	/* stick, skip taskbar and pager */
 	gtk_window_stick (GTK_WINDOW (window));
@@ -171,15 +168,14 @@ tracker_aligned_window_position (TrackerAlignedWindow *window)
 	gtk_widget_realize (align_widget);
   
 	/* get the positional and dimensional attributes of the align widget */
-	gdk_window_get_origin (align_widget->window,
+	gdk_window_get_origin (gtk_widget_get_window (align_widget),
 	                       &entry_x,
 	                       &entry_y);
-	gdk_window_get_geometry (align_widget->window,
+	gdk_window_get_geometry (gtk_widget_get_window (align_widget),
 	                         NULL,
 	                         NULL,
 	                         &entry_width,
-	                         &entry_height,
-	                         NULL);
+	                         &entry_height);
   
 	if (entry_x + our_width < gdk_screen_width ()) {
 		x = entry_x + 1;
@@ -235,14 +231,14 @@ tracker_aligned_window_motion_notify_cb (GtkWidget            *widget,
 	GtkAllocation alloc;
 	GdkRectangle rect;
 
-	alloc = GTK_WIDGET (aligned_window)->allocation;
+	gtk_widget_get_allocation (GTK_WIDGET (aligned_window), &alloc);
   
 	rect.x = 0;
 	rect.y = 0;
 	rect.width = alloc.width;
 	rect.height = alloc.height;
 
-	gdk_window_invalidate_rect (GTK_WIDGET (aligned_window)->window,
+	gdk_window_invalidate_rect (gtk_widget_get_window (GTK_WIDGET (aligned_window)),
 	                            &rect,
 	                            FALSE);
   
diff --git a/src/tracker-search-bar/tracker-applet.c b/src/tracker-search-bar/tracker-applet.c
index 831618f..1211f20 100644
--- a/src/tracker-search-bar/tracker-applet.c
+++ b/src/tracker-search-bar/tracker-applet.c
@@ -98,7 +98,7 @@ applet_entry_start_search (TrackerApplet *applet)
 		g_object_set (applet->results, "query", text, NULL);
 	}
 
-	if (!GTK_WIDGET_VISIBLE (applet->results)) {
+	if (!gtk_widget_get_visible (applet->results)) {
 		tracker_results_window_popup (TRACKER_RESULTS_WINDOW (applet->results));
 	}
 }
@@ -158,14 +158,14 @@ applet_entry_key_press_event_cb (GtkWidget     *widget,
                                  GdkEventKey   *event,
                                  TrackerApplet *applet)
 {
-	if (event->keyval == GDK_Escape) {
+	if (event->keyval == GDK_KEY_Escape) {
 		if (!applet->results) {
 			return FALSE;
 		}
 
 		gtk_widget_destroy (applet->results);
 		applet->results = NULL;
-	} else if (event->keyval == GDK_Down) {
+	} else if (event->keyval == GDK_KEY_Down) {
 		if (!applet->results) {
 			return FALSE;
 		}
@@ -252,22 +252,25 @@ applet_change_orient_cb (GtkWidget         *widget,
                          gpointer           user_data)
 {
 	TrackerApplet *applet;
+	GtkAllocation alloc;
 	guint new_size;
 
 	applet = user_data;
         new_size = applet->size;
 
+	gtk_widget_get_allocation (GTK_WIDGET (applet->parent), &alloc);
+
 	switch (orient) {
 	case PANEL_APPLET_ORIENT_LEFT:
 	case PANEL_APPLET_ORIENT_RIGHT:
 		applet->orient = GTK_ORIENTATION_VERTICAL;
-		new_size = GTK_WIDGET (applet->parent)->allocation.width;
+		new_size = alloc.width;
 		break;
 
 	case PANEL_APPLET_ORIENT_UP:
 	case PANEL_APPLET_ORIENT_DOWN:
 		applet->orient = GTK_ORIENTATION_HORIZONTAL;
-		new_size = GTK_WIDGET (applet->parent)->allocation.height;
+		new_size = alloc.height;
 		break;
 	}
 
diff --git a/src/tracker-search-bar/tracker-results-window.c b/src/tracker-search-bar/tracker-results-window.c
index 22a9822..111b240 100644
--- a/src/tracker-search-bar/tracker-results-window.c
+++ b/src/tracker-search-bar/tracker-results-window.c
@@ -227,30 +227,34 @@ struct FindCategory {
 	gboolean found;
 };
 
-static void     results_window_constructed        (GObject              *object);
-static void     results_window_finalize           (GObject              *object);
-static void     results_window_set_property       (GObject              *object,
-                                                   guint                 prop_id,
-                                                   const GValue         *value,
-                                                   GParamSpec           *pspec);
-static void     results_window_get_property       (GObject              *object,
-                                                   guint                 prop_id,
-                                                   GValue               *value,
-                                                   GParamSpec           *pspec);
-static gboolean results_window_key_press_event    (GtkWidget            *widget,
-                                                   GdkEventKey          *event);
-static gboolean results_window_button_press_event (GtkWidget            *widget,
-                                                   GdkEventButton       *event);
-static void     results_window_size_request       (GtkWidget            *widget,
-                                                   GtkRequisition       *requisition);
-static void     results_window_screen_changed     (GtkWidget            *widget,
-                                                   GdkScreen            *prev_screen);
-static void     model_set_up                      (TrackerResultsWindow *window);
-static void     search_get                        (TrackerResultsWindow *window,
-                                                   TrackerCategory       category);
-static void     search_start                      (TrackerResultsWindow *window);
-static void     search_query_free                 (SearchQuery          *sq);
-static gchar *  category_to_string                (TrackerCategory       category);
+static void     results_window_constructed          (GObject              *object);
+static void     results_window_finalize             (GObject              *object);
+static void     results_window_set_property         (GObject              *object,
+                                                     guint                 prop_id,
+                                                     const GValue         *value,
+                                                     GParamSpec           *pspec);
+static void     results_window_get_property         (GObject              *object,
+                                                     guint                 prop_id,
+                                                     GValue               *value,
+                                                     GParamSpec           *pspec);
+static gboolean results_window_key_press_event      (GtkWidget            *widget,
+                                                     GdkEventKey          *event);
+static gboolean results_window_button_press_event   (GtkWidget            *widget,
+                                                     GdkEventButton       *event);
+static void     results_window_get_preferred_width  (GtkWidget            *widget,
+                                                     gint                 *minimal_width,
+                                                     gint                 *natural_width);
+static void     results_window_get_preferred_height (GtkWidget            *widget,
+                                                     gint                 *minimal_height,
+                                                     gint                 *natural_height);
+static void     results_window_screen_changed       (GtkWidget            *widget,
+                                                     GdkScreen            *prev_screen);
+static void     model_set_up                        (TrackerResultsWindow *window);
+static void     search_get                          (TrackerResultsWindow *window,
+                                                     TrackerCategory       category);
+static void     search_start                        (TrackerResultsWindow *window);
+static void     search_query_free                   (SearchQuery          *sq);
+static gchar *  category_to_string                  (TrackerCategory       category);
 
 enum {
 	COL_CATEGORY_ID,
@@ -284,7 +288,8 @@ tracker_results_window_class_init (TrackerResultsWindowClass *klass)
 
 	widget_class->key_press_event = results_window_key_press_event;
 	widget_class->button_press_event = results_window_button_press_event;
-	widget_class->size_request = results_window_size_request;
+	widget_class->get_preferred_width = results_window_get_preferred_width;
+	widget_class->get_preferred_height = results_window_get_preferred_height;
 	widget_class->screen_changed = results_window_screen_changed;
 
 	g_object_class_install_property (object_class,
@@ -515,7 +520,7 @@ results_window_key_press_event (GtkWidget   *widget,
 {
 	TrackerResultsWindowPrivate *priv;
 
-	if (event->keyval == GDK_Escape) {
+	if (event->keyval == GDK_KEY_Escape) {
 		gtk_widget_hide (widget);
 
 		return TRUE;
@@ -523,9 +528,9 @@ results_window_key_press_event (GtkWidget   *widget,
 
 	priv = TRACKER_RESULTS_WINDOW_GET_PRIVATE (widget);
 
-        if (event->keyval != GDK_Return &&
+        if (event->keyval != GDK_KEY_Return &&
             (*event->string != '\0' ||
-             event->keyval == GDK_BackSpace)) {
+             event->keyval == GDK_KEY_BackSpace)) {
                 GtkWidget *entry;
 
                 entry = tracker_aligned_window_get_widget (TRACKER_ALIGNED_WINDOW (widget));
@@ -544,8 +549,12 @@ static gboolean
 results_window_button_press_event (GtkWidget      *widget,
                                    GdkEventButton *event)
 {
-	if (event->x < 0 || event->x > widget->allocation.width ||
-	    event->y < 0 || event->y > widget->allocation.height) {
+	GtkAllocation alloc;
+
+	gtk_widget_get_allocation (widget, &alloc);
+
+	if (event->x < 0 || event->x > alloc.width ||
+	    event->y < 0 || event->y > alloc.height) {
 		/* Click happened outside window, pop it down */
 		gtk_widget_hide (widget);
 		return TRUE;
@@ -566,20 +575,20 @@ results_window_size_request (GtkWidget      *widget,
 	GtkRequisition child_req;
 	guint border_width;
 
-	gtk_widget_size_request (GTK_BIN (widget)->child, &child_req);
+	gtk_widget_size_request (gtk_bin_get_child (GTK_BIN (widget)), &child_req);
 	border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
 
 	requisition->width = child_req.width + (2 * border_width);
 	requisition->height = child_req.height + (2 * border_width);
 
-	if (GTK_WIDGET_REALIZED (widget)) {
+	if (gtk_widget_get_realized (widget)) {
 		GdkScreen *screen;
 		GdkRectangle monitor_geom;
 		guint monitor_num;
 
 		/* make it no larger than half the monitor size */
 		screen = gtk_widget_get_screen (widget);
-		monitor_num = gdk_screen_get_monitor_at_window (screen, widget->window);
+		monitor_num = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (widget));
 
 		gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor_geom);
 
@@ -589,6 +598,30 @@ results_window_size_request (GtkWidget      *widget,
 }
 
 static void
+results_window_get_preferred_width  (GtkWidget *widget,
+                                     gint      *minimal_width,
+                                     gint      *natural_width)
+{
+	GtkRequisition requisition;
+
+	results_window_size_request (widget, &requisition);
+
+	*minimal_width = *natural_width = requisition.width;
+}
+
+static void
+results_window_get_preferred_height (GtkWidget *widget,
+                                     gint      *minimal_height,
+                                     gint      *natural_height)
+{
+	GtkRequisition requisition;
+
+	results_window_size_request (widget, &requisition);
+
+	*minimal_height = *natural_height = requisition.height;
+}
+
+static void
 results_window_screen_changed (GtkWidget *widget,
                                GdkScreen *prev_screen)
 {
@@ -1439,14 +1472,14 @@ grab_popup_window (TrackerResultsWindow *window)
 	priv = TRACKER_RESULTS_WINDOW_GET_PRIVATE (window);
 
 	/* Grab pointer */
-	status = gdk_pointer_grab (widget->window,
+	status = gdk_pointer_grab (gtk_widget_get_window (widget),
 	                           TRUE,
 	                           GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK,
 	                           NULL, NULL,
 	                           time);
 
 	if (status == GDK_GRAB_SUCCESS) {
-		status = gdk_keyboard_grab (widget->window, TRUE, time);
+		status = gdk_keyboard_grab (gtk_widget_get_window (widget), TRUE, time);
 	}
 
 	if (status == GDK_GRAB_SUCCESS) {
@@ -1486,10 +1519,10 @@ tracker_results_window_popup (TrackerResultsWindow *window)
 
         /* Force scroll to top-left */
         vadj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->scrolled_window));
-        gtk_adjustment_set_value (vadj, vadj->lower);
+        gtk_adjustment_set_value (vadj, gtk_adjustment_get_lower (vadj));
 
         hadj = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (priv->scrolled_window));
-        gtk_adjustment_set_value (hadj, hadj->lower);
+        gtk_adjustment_set_value (hadj, gtk_adjustment_get_lower (hadj));
 
         g_idle_add ((GSourceFunc) grab_popup_window, window);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]