comparison gtk3/dw.c @ 861:8f2722696a8e

Implemented dw_container_scroll() for GTK3.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 01 Apr 2011 21:00:42 +0000
parents d51e958aad95
children 18eab415ff0c
comparison
equal deleted inserted replaced
860:93ac372941c4 861:8f2722696a8e
6154 * DW_SCROLL_BOTTOM. (rows is ignored for last two) 6154 * DW_SCROLL_BOTTOM. (rows is ignored for last two)
6155 * rows: The number of rows to be scrolled. 6155 * rows: The number of rows to be scrolled.
6156 */ 6156 */
6157 void dw_container_scroll(HWND handle, int direction, long rows) 6157 void dw_container_scroll(HWND handle, int direction, long rows)
6158 { 6158 {
6159 GtkWidget *cont;
6160 int _locked_by_me = FALSE;
6161
6162 DW_MUTEX_LOCK;
6163 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
6164
6165 /* Make sure it is the correct tree type */
6166 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
6167 {
6168 GtkAdjustment *adjust = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(cont));
6169
6170 if(adjust)
6171 {
6172 gint rowcount = (gint)g_object_get_data(G_OBJECT(cont), "_dw_rowcount");
6173 gdouble currpos = gtk_adjustment_get_value(adjust);
6174 gdouble upper = gtk_adjustment_get_upper(adjust);
6175 gdouble lower = gtk_adjustment_get_lower(adjust);
6176 gdouble change;
6177
6178 /* Safety check */
6179 if(rowcount < 1)
6180 {
6181 DW_MUTEX_UNLOCK;
6182 return;
6183 }
6184
6185 change = ((gdouble)rows/(gdouble)rowcount) * (upper - lower);
6186
6187 switch(direction)
6188 {
6189 case DW_SCROLL_TOP:
6190 {
6191 gtk_adjustment_set_value(adjust, lower);
6192 break;
6193 }
6194 case DW_SCROLL_BOTTOM:
6195 {
6196 gtk_adjustment_set_value(adjust, upper);
6197 break;
6198 }
6199 case DW_SCROLL_UP:
6200 {
6201 gdouble newpos = currpos - change;
6202 if(newpos < lower)
6203 {
6204 newpos = lower;
6205 }
6206 gtk_adjustment_set_value(adjust, newpos);
6207 break;
6208 }
6209 case DW_SCROLL_DOWN:
6210 {
6211 gdouble newpos = currpos + change;
6212 if(newpos > upper)
6213 {
6214 newpos = upper;
6215 }
6216 gtk_adjustment_set_value(adjust, newpos);
6217 break;
6218 }
6219 }
6220 }
6221 }
6222 DW_MUTEX_UNLOCK;
6159 } 6223 }
6160 6224
6161 /* 6225 /*
6162 * Starts a new query of a container. 6226 * Starts a new query of a container.
6163 * Parameters: 6227 * Parameters: