[libchamplain] Make kinetic mode boolean property and add it to mx as well
- From: Jiří Techet <jiritechet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libchamplain] Make kinetic mode boolean property and add it to mx as well
- Date: Wed, 9 Feb 2011 08:40:00 +0000 (UTC)
commit 6fbb5eaed79b608ba1cc2bfd86789e8e0834893b
Author: JiÅ?Ã Techet <techet gmail com>
Date: Thu Feb 3 23:11:06 2011 +0100
Make kinetic mode boolean property and add it to mx as well
champlain/champlain-view.c | 67 ++++++++++++++++++++-----------------------
champlain/champlain-view.h | 19 ++----------
demos/animated-marker.c | 2 +-
demos/launcher-gtk.c | 2 +-
demos/launcher.c | 2 +-
demos/local-rendering.c | 2 +-
demos/polygons.c | 2 +-
demos/url-marker.c | 2 +-
mx/mx-kinetic-scroll-view.c | 40 ++++++++++++++++++++++++-
mx/mx-kinetic-scroll-view.h | 5 +++
10 files changed, 83 insertions(+), 60 deletions(-)
---
diff --git a/champlain/champlain-view.c b/champlain/champlain-view.c
index e171f76..d0cb14f 100644
--- a/champlain/champlain-view.c
+++ b/champlain/champlain-view.c
@@ -96,7 +96,7 @@ enum
PROP_MAX_ZOOM_LEVEL,
PROP_MAP_SOURCE,
PROP_DECEL_RATE,
- PROP_SCROLL_MODE,
+ PROP_KINETIC_MODE,
PROP_KEEP_CENTER_ON_RESIZE,
PROP_ZOOM_ON_DOUBLE_CLICK,
PROP_STATE,
@@ -138,7 +138,7 @@ struct _ChamplainViewPrivate
ChamplainMapSourceFactory *factory; /* The map source factory */
ChamplainMapSource *map_source; /* Current map tile source */
- ChamplainScrollMode scroll_mode;
+ gboolean kinetic_mode;
guint zoom_level; /* Holds the current zoom level number */
guint min_zoom_level; /* Lowest allowed zoom level */
guint max_zoom_level; /* Highest allowed zoom level */
@@ -397,8 +397,8 @@ champlain_view_get_property (GObject *object,
g_value_set_object (value, priv->map_source);
break;
- case PROP_SCROLL_MODE:
- g_value_set_enum (value, priv->scroll_mode);
+ case PROP_KINETIC_MODE:
+ g_value_set_boolean (value, priv->kinetic_mode);
break;
case PROP_DECEL_RATE:
@@ -466,8 +466,8 @@ champlain_view_set_property (GObject *object,
champlain_view_set_map_source (view, g_value_get_object (value));
break;
- case PROP_SCROLL_MODE:
- champlain_view_set_scroll_mode (view, g_value_get_enum (value));
+ case PROP_KINETIC_MODE:
+ champlain_view_set_kinetic_mode (view, g_value_get_boolean (value));
break;
case PROP_DECEL_RATE:
@@ -529,7 +529,6 @@ champlain_view_dispose (GObject *object)
if (priv->viewport != NULL)
{
-// mx_viewport_stop (MX_VIEWPORT (priv->viewport));
g_object_unref (priv->viewport);
priv->viewport = NULL;
}
@@ -792,20 +791,18 @@ champlain_view_class_init (ChamplainViewClass *champlainViewClass)
CHAMPLAIN_PARAM_READWRITE));
/**
- * ChamplainView:scroll-mode:
+ * ChamplainView:kinetic-mode:
*
- * Determines the way the view reacts to scroll events.
+ * Determines whether the view should use kinetic mode.
*
- * Since: 0.4
+ * Since: 0.10
*/
g_object_class_install_property (object_class,
- PROP_SCROLL_MODE,
- g_param_spec_enum ("scroll-mode",
- "Scroll Mode",
- "Determines the way the view reacts to scroll events.",
- CHAMPLAIN_TYPE_SCROLL_MODE,
- CHAMPLAIN_SCROLL_MODE_KINETIC,
- CHAMPLAIN_PARAM_READWRITE));
+ PROP_KINETIC_MODE,
+ g_param_spec_boolean ("kinetic-mode",
+ "Kinetic Mode",
+ "Determines whether the view should use kinetic mode.",
+ FALSE, CHAMPLAIN_PARAM_READWRITE));
/**
* ChamplainView:decel-rate:
@@ -914,7 +911,7 @@ champlain_view_init (ChamplainView *view)
priv->zoom_on_double_click = TRUE;
priv->license_actor = NULL;
priv->stage = NULL;
- priv->scroll_mode = CHAMPLAIN_SCROLL_MODE_PUSH;
+ priv->kinetic_mode = FALSE;
priv->viewport_x = 0;
priv->viewport_y = 0;
priv->viewport_width = 0;
@@ -1078,9 +1075,9 @@ scroll_to (ChamplainView *view,
lat = champlain_map_source_get_latitude (priv->map_source, priv->zoom_level, y);
lon = champlain_map_source_get_longitude (priv->map_source, priv->zoom_level, x);
- if (priv->scroll_mode == CHAMPLAIN_SCROLL_MODE_KINETIC)
+ if (priv->kinetic_mode)
champlain_view_go_to_with_duration (view, lat, lon, 300);
- else if (priv->scroll_mode == CHAMPLAIN_SCROLL_MODE_PUSH)
+ else
champlain_view_center_on (view, lat, lon);
}
@@ -2045,17 +2042,17 @@ champlain_view_set_decel_rate (ChamplainView *view,
/**
- * champlain_view_set_scroll_mode:
+ * champlain_view_set_kinetic_mode:
* @view: a #ChamplainView
- * @mode: a #ChamplainScrollMode value
+ * @kinetic: TRUE for kinetic mode, FALSE for push mode
*
* Determines the way the view reacts to scroll events.
*
- * Since: 0.4
+ * Since: 0.10
*/
void
-champlain_view_set_scroll_mode (ChamplainView *view,
- ChamplainScrollMode mode)
+champlain_view_set_kinetic_mode (ChamplainView *view,
+ gboolean kinetic)
{
DEBUG_LOG ()
@@ -2063,10 +2060,8 @@ champlain_view_set_scroll_mode (ChamplainView *view,
ChamplainViewPrivate *priv = view->priv;
- priv->scroll_mode = mode;
-
-// g_object_set (G_OBJECT (priv->finger_scroll), "mode",
-// priv->scroll_mode, NULL);
+ priv->kinetic_mode = kinetic;
+ mx_kinetic_scroll_view_set_kinetic_mode (MX_KINETIC_SCROLL_VIEW (priv->finger_scroll), kinetic);
}
@@ -2330,23 +2325,23 @@ champlain_view_get_decel_rate (ChamplainView *view)
/**
- * champlain_view_get_scroll_mode:
+ * champlain_view_get_kinetic_mode:
* @view: The view
*
* Gets the view's scroll mode behaviour.
*
- * Returns: the view's scroll mode behaviour.
+ * Returns: TRUE for kinetic mode, FALSE for push mode.
*
- * Since: 0.4
+ * Since: 0.10
*/
-ChamplainScrollMode
-champlain_view_get_scroll_mode (ChamplainView *view)
+gboolean
+champlain_view_get_kinetic_mode (ChamplainView *view)
{
DEBUG_LOG ()
- g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), CHAMPLAIN_SCROLL_MODE_PUSH);
+ g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), FALSE);
- return view->priv->scroll_mode;
+ return view->priv->kinetic_mode;
}
diff --git a/champlain/champlain-view.h b/champlain/champlain-view.h
index 9de0e12..258e611 100644
--- a/champlain/champlain-view.h
+++ b/champlain/champlain-view.h
@@ -55,19 +55,6 @@ G_BEGIN_DECLS
typedef struct _ChamplainViewPrivate ChamplainViewPrivate;
-/**
- * ChamplainScrollMode:
- * @CHAMPLAIN_SCROLL_MODE_PUSH: Non-kinetic scrolling
- * @CHAMPLAIN_SCROLL_MODE_KINETIC: Kinetic scrolling
- *
- * Type of scrolling.
- */
-typedef enum
-{
- CHAMPLAIN_SCROLL_MODE_PUSH,
- CHAMPLAIN_SCROLL_MODE_KINETIC
-} ChamplainScrollMode;
-
struct _ChamplainView
{
@@ -110,8 +97,8 @@ void champlain_view_set_map_source (ChamplainView *view,
ChamplainMapSource *map_source);
void champlain_view_set_decel_rate (ChamplainView *view,
gdouble rate);
-void champlain_view_set_scroll_mode (ChamplainView *view,
- ChamplainScrollMode mode);
+void champlain_view_set_kinetic_mode (ChamplainView *view,
+ gboolean kinetic);
void champlain_view_set_keep_center_on_resize (ChamplainView *view,
gboolean value);
void champlain_view_set_zoom_on_double_click (ChamplainView *view,
@@ -127,7 +114,7 @@ guint champlain_view_get_min_zoom_level (ChamplainView *view);
guint champlain_view_get_max_zoom_level (ChamplainView *view);
ChamplainMapSource *champlain_view_get_map_source (ChamplainView *view);
gdouble champlain_view_get_decel_rate (ChamplainView *view);
-ChamplainScrollMode champlain_view_get_scroll_mode (ChamplainView *view);
+gboolean champlain_view_get_kinetic_mode (ChamplainView *view);
gboolean champlain_view_get_keep_center_on_resize (ChamplainView *view);
const gchar *champlain_view_get_license_text (ChamplainView *view);
gboolean champlain_view_get_zoom_on_double_click (ChamplainView *view);
diff --git a/demos/animated-marker.c b/demos/animated-marker.c
index b79a47c..69ada0b 100644
--- a/demos/animated-marker.c
+++ b/demos/animated-marker.c
@@ -145,7 +145,7 @@ main (int argc, char *argv[])
/* Finish initialising the map view */
g_object_set (G_OBJECT (actor), "zoom-level", 12,
- "scroll-mode", CHAMPLAIN_SCROLL_MODE_KINETIC, NULL);
+ "kinetic-mode", TRUE, NULL);
champlain_view_center_on (CHAMPLAIN_VIEW (actor), lat, lon);
/* Create callback that updates the map periodically */
diff --git a/demos/launcher-gtk.c b/demos/launcher-gtk.c
index 6149d4d..a791859 100644
--- a/demos/launcher-gtk.c
+++ b/demos/launcher-gtk.c
@@ -253,7 +253,7 @@ main (int argc,
g_object_set (G_OBJECT (view),
- "scroll-mode", CHAMPLAIN_SCROLL_MODE_KINETIC,
+ "kinetic-mode", TRUE,
"zoom-level", 5,
NULL);
diff --git a/demos/launcher.c b/demos/launcher.c
index 2f31734..ef52b2f 100644
--- a/demos/launcher.c
+++ b/demos/launcher.c
@@ -141,7 +141,7 @@ main (int argc,
/* Finish initialising the map view */
g_object_set (G_OBJECT (actor), "zoom-level", 12,
- "scroll-mode", CHAMPLAIN_SCROLL_MODE_KINETIC, NULL);
+ "kinetic-mode", TRUE, NULL);
champlain_view_center_on (CHAMPLAIN_VIEW (actor), 45.466, -73.75);
clutter_actor_show (stage);
diff --git a/demos/local-rendering.c b/demos/local-rendering.c
index 7e8e00f..9cc1808 100644
--- a/demos/local-rendering.c
+++ b/demos/local-rendering.c
@@ -761,7 +761,7 @@ main (int argc,
widget = gtk_champlain_embed_new ();
champlain_view = gtk_champlain_embed_get_view (GTK_CHAMPLAIN_EMBED (widget));
- g_object_set (G_OBJECT (champlain_view), "scroll-mode", CHAMPLAIN_SCROLL_MODE_KINETIC,
+ g_object_set (G_OBJECT (champlain_view), "kinetic-mode", TRUE,
"zoom-level", 9, NULL);
gtk_widget_set_size_request (widget, 640, 480);
diff --git a/demos/polygons.c b/demos/polygons.c
index 11c1ce1..662ecef 100644
--- a/demos/polygons.c
+++ b/demos/polygons.c
@@ -153,7 +153,7 @@ main (int argc,
/* Finish initialising the map view */
g_object_set (G_OBJECT (actor), "zoom-level", 8,
- "scroll-mode", CHAMPLAIN_SCROLL_MODE_KINETIC, NULL);
+ "kinetic-mode", TRUE, NULL);
champlain_view_center_on (CHAMPLAIN_VIEW (actor), 45.466, -73.75);
clutter_actor_show (stage);
diff --git a/demos/url-marker.c b/demos/url-marker.c
index 1cf6bc4..bf7fafa 100644
--- a/demos/url-marker.c
+++ b/demos/url-marker.c
@@ -268,7 +268,7 @@ main (int argc, char *argv[])
/* Finish initialising the map view */
g_object_set (G_OBJECT (view), "zoom-level", 10,
- "scroll-mode", CHAMPLAIN_SCROLL_MODE_KINETIC, NULL);
+ "kinetic-mode", TRUE, NULL);
champlain_view_center_on (CHAMPLAIN_VIEW (view), 48.22, 16.8);
clutter_actor_show_all (stage);
diff --git a/mx/mx-kinetic-scroll-view.c b/mx/mx-kinetic-scroll-view.c
index 8fb1910..50cc3cd 100644
--- a/mx/mx-kinetic-scroll-view.c
+++ b/mx/mx-kinetic-scroll-view.c
@@ -81,6 +81,7 @@ struct _MxKineticScrollViewPrivate
gdouble decel_rate;
gdouble overshoot;
gdouble accumulated_delta;
+ gboolean kinetic_mode;
};
enum {
@@ -92,7 +93,8 @@ enum {
PROP_VADJUST,
PROP_BUTTON,
PROP_USE_CAPTURED,
- PROP_OVERSHOOT
+ PROP_OVERSHOOT,
+ PROP_KINETIC_MODE,
};
enum
@@ -194,6 +196,10 @@ mx_kinetic_scroll_view_get_property (GObject *object,
case PROP_OVERSHOOT:
g_value_set_double (value, priv->overshoot);
break;
+
+ case PROP_KINETIC_MODE:
+ g_value_set_boolean (value, priv->kinetic_mode);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -252,6 +258,10 @@ mx_kinetic_scroll_view_set_property (GObject *object,
mx_kinetic_scroll_view_set_overshoot (self, g_value_get_double (value));
break;
+ case PROP_KINETIC_MODE:
+ mx_kinetic_scroll_view_set_kinetic_mode (self, g_value_get_boolean (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -389,6 +399,13 @@ mx_kinetic_scroll_view_class_init (MxKineticScrollViewClass *klass)
MX_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_OVERSHOOT, pspec);
+ pspec = g_param_spec_boolean ("kinetic-mode",
+ "Kinetic Mode",
+ "Determines whether the view should use kinetic mode.",
+ FALSE,
+ MX_PARAM_READWRITE);
+ g_object_class_install_property (object_class, PROP_KINETIC_MODE, pspec);
+
/* MxScrollable properties */
g_object_class_override_property (object_class,
PROP_HADJUST,
@@ -660,7 +677,7 @@ button_release_event_cb (ClutterActor *stage,
clutter_set_motion_events_enabled (TRUE);
- if (child)
+ if (child && priv->kinetic_mode)
{
gfloat event_x, event_y;
@@ -945,6 +962,7 @@ mx_kinetic_scroll_view_init (MxKineticScrollView *self)
g_array_set_size (priv->motion_buffer, 3);
priv->decel_rate = 1.1f;
priv->button = 1;
+ priv->kinetic_mode = FALSE;
clutter_actor_set_reactive (CLUTTER_ACTOR (self), TRUE);
g_signal_connect (self, "button-press-event",
@@ -1194,3 +1212,21 @@ mx_kinetic_scroll_view_get_overshoot (MxKineticScrollView *scroll)
g_return_val_if_fail (MX_IS_KINETIC_SCROLL_VIEW (scroll), 0.0);
return scroll->priv->overshoot;
}
+
+void
+mx_kinetic_scroll_view_set_kinetic_mode (MxKineticScrollView *scroll,
+ gboolean kinetic)
+{
+ MxKineticScrollViewPrivate *priv;
+
+ priv = scroll->priv;
+ priv->kinetic_mode = kinetic;
+}
+
+gboolean
+mx_kinetic_scroll_view_get_kinetic_mode (MxKineticScrollView *scroll)
+{
+ g_return_val_if_fail (MX_IS_KINETIC_SCROLL_VIEW (scroll), FALSE);
+
+ return scroll->priv->kinetic_mode;
+}
diff --git a/mx/mx-kinetic-scroll-view.h b/mx/mx-kinetic-scroll-view.h
index b8efe28..7263c43 100644
--- a/mx/mx-kinetic-scroll-view.h
+++ b/mx/mx-kinetic-scroll-view.h
@@ -87,6 +87,11 @@ void mx_kinetic_scroll_view_set_overshoot (MxKineticScrollView *scroll,
gdouble overshoot);
gdouble mx_kinetic_scroll_view_get_overshoot (MxKineticScrollView *scroll);
+void mx_kinetic_scroll_view_set_kinetic_mode (MxKineticScrollView *scroll,
+ gboolean kinetic);
+
+gboolean mx_kinetic_scroll_view_get_kinetic_mode (MxKineticScrollView *scroll);
+
G_END_DECLS
#endif /* __MX_KINETIC_SCROLL_VIEW_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]