/* Connect signal handlers */
/* Pager */
- g_signal_connect_after( textview, "size-request", G_CALLBACK(pager_after_size_request), win );
- win->pager_expose_handler = g_signal_connect_after( textview, "expose-event", G_CALLBACK(pager_on_expose), win );
+ g_signal_connect_after( textview, "size-allocate", G_CALLBACK(pager_after_size_allocate), win );
+ win->pager_expose_handler = g_signal_connect_after( textview, "draw", G_CALLBACK(pager_on_draw), win );
g_signal_handler_block(textview, win->pager_expose_handler);
win->pager_keypress_handler = g_signal_connect( textview, "key-press-event", G_CALLBACK(pager_on_key_press_event), win );
g_signal_handler_block(textview, win->pager_keypress_handler);
case wintype_Graphics:
{
+ GtkAllocation allocation;
+
/* Wait for the window's size to be updated */
g_mutex_lock(glk_data->arrange_lock);
if(glk_data->needs_rearrange)
g_cond_wait(glk_data->rearranged, glk_data->arrange_lock);
g_mutex_unlock(glk_data->arrange_lock);
- glk_window_erase_rect(win, 0, 0, win->widget->allocation.width, win->widget->allocation.height);
+ gdk_threads_enter();
+ gtk_widget_get_allocation(win->widget, &allocation);
+ gdk_threads_leave();
+
+ glk_window_erase_rect(win, 0, 0, allocation.width, allocation.height);
}
break;
{
VALID_WINDOW(win, return);
+ GtkAllocation allocation;
ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
switch(win->type)
g_mutex_unlock(glk_data->arrange_lock);
gdk_threads_enter();
+ gtk_widget_get_allocation(win->widget, &allocation);
/* Cache the width and height */
- win->width = (glui32)(win->widget->allocation.width / win->unit_width);
- win->height = (glui32)(win->widget->allocation.height / win->unit_height);
+ win->width = (glui32)(allocation.width / win->unit_width);
+ win->height = (glui32)(allocation.height / win->unit_height);
gdk_threads_leave();
if(widthptr != NULL)
g_mutex_unlock(glk_data->arrange_lock);
gdk_threads_enter();
+ gtk_widget_get_allocation(win->widget, &allocation);
if(widthptr != NULL)
- *widthptr = (glui32)(win->widget->allocation.width / win->unit_width);
+ *widthptr = (glui32)(allocation.width / win->unit_width);
if(heightptr != NULL)
- *heightptr = (glui32)(win->widget->allocation.height / win->unit_height);
+ *heightptr = (glui32)(allocation.height / win->unit_height);
gdk_threads_leave();
break;
g_mutex_unlock(glk_data->arrange_lock);
gdk_threads_enter();
+ gtk_widget_get_allocation(win->widget, &allocation);
if(widthptr != NULL)
- *widthptr = (glui32)(win->widget->allocation.width);
+ *widthptr = (glui32)(allocation.width);
if(heightptr != NULL)
- *heightptr = (glui32)(win->widget->allocation.height);
+ *heightptr = (glui32)(allocation.height);
gdk_threads_leave();
break;