aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac8
-rw-r--r--libempathy-gtk/empathy-chat-text-view.c33
2 files changed, 34 insertions, 7 deletions
diff --git a/configure.ac b/configure.ac
index f9db12d01..b30abc186 100644
--- a/configure.ac
+++ b/configure.ac
@@ -47,10 +47,14 @@ KEYRING_REQUIRED=2.22
NETWORK_MANAGER_REQUIRED=0.7.0
NAUTILUS_SENDTO_REQUIRED=2.28.1
-# Use --enable-maintainer-mode to disable deprecated symbols and single include.
-# If this is not a released empathy, maintainer mode is forced
+# Use --enable-maintainer-mode to disable deprecated symbols,
+# disable single include and enable GSEAL. If this is not a released empathy,
+# maintainer mode is forced
ifelse(empathy_released, 1, [], [enable_maintainer_mode="yes"])
GNOME_MAINTAINER_MODE_DEFINES
+#if test $USE_MAINTAINER_MODE = yes; then
+# AC_DEFINE(GSEAL_ENABLE, [], [Seal public structs to force usage of accessors])
+#fi
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
diff --git a/libempathy-gtk/empathy-chat-text-view.c b/libempathy-gtk/empathy-chat-text-view.c
index 491b61333..9e31e4987 100644
--- a/libempathy-gtk/empathy-chat-text-view.c
+++ b/libempathy-gtk/empathy-chat-text-view.c
@@ -493,8 +493,13 @@ chat_text_view_size_allocate (GtkWidget *widget,
if (down) {
GtkAdjustment *adj;
+ GtkWidget *sw;
- adj = GTK_TEXT_VIEW (widget)->vadjustment;
+ sw = gtk_widget_get_parent (widget);
+ if (!GTK_IS_SCROLLED_WINDOW (sw))
+ return;
+
+ adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (sw));
gtk_adjustment_set_value (adj,
gtk_adjustment_get_upper (adj) -
gtk_adjustment_get_page_size (adj));
@@ -653,6 +658,18 @@ empathy_chat_text_view_init (EmpathyChatTextView *view)
NULL);
}
+static void
+chat_text_view_scroll_stop (EmpathyChatTextView *view)
+{
+ EmpathyChatTextViewPriv *priv = GET_PRIV (view);
+
+ g_timer_destroy (priv->scroll_time);
+ priv->scroll_time = NULL;
+
+ g_source_remove (priv->scroll_timeout);
+ priv->scroll_timeout = 0;
+}
+
/* Code stolen from pidgin/gtkimhtml.c */
static gboolean
chat_text_view_scroll_cb (EmpathyChatTextView *view)
@@ -660,9 +677,17 @@ chat_text_view_scroll_cb (EmpathyChatTextView *view)
EmpathyChatTextViewPriv *priv;
GtkAdjustment *adj;
gdouble max_val;
+ GtkWidget *sw;
priv = GET_PRIV (view);
- adj = GTK_TEXT_VIEW (view)->vadjustment;
+
+ sw = gtk_widget_get_parent (GTK_WIDGET (view));
+ if (!GTK_IS_SCROLLED_WINDOW (sw)) {
+ chat_text_view_scroll_stop (view);
+ return FALSE;
+ }
+
+ adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (sw));
max_val = gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj);
g_return_val_if_fail (priv->scroll_time != NULL, FALSE);
@@ -670,9 +695,7 @@ chat_text_view_scroll_cb (EmpathyChatTextView *view)
if (g_timer_elapsed (priv->scroll_time, NULL) > MAX_SCROLL_TIME) {
/* time's up. jump to the end and kill the timer */
gtk_adjustment_set_value (adj, max_val);
- g_timer_destroy (priv->scroll_time);
- priv->scroll_time = NULL;
- priv->scroll_timeout = 0;
+ chat_text_view_scroll_stop (view);
return FALSE;
}