static gboolean view_configure (GLDrawingArea *widget, GdkEventConfigure *event, View *view) { view_resize (view); view_render (view); return TRUE; }
static void ui_window_resize(UiCursesWin *win, int width, int height) { win->width = width; win->height = height; if (win->winstatus) wresize(win->winstatus, 1, width); wresize(win->win, win->winstatus ? height - 1 : height, width - win->sidebar_width); if (win->winside) wresize(win->winside, height-1, win->sidebar_width); view_resize(win->view, width - win->sidebar_width, win->winstatus ? height - 1 : height); view_update(win->view); }
static void ui_window_resize(UiCursesWin *win, int width, int height) { debug("ui-win-resize[%s]: %dx%d\n", win->file->name ? win->file->name : "noname", width, height); win->width = width; win->height = height; if (win->winstatus) wresize(win->winstatus, 1, width); wresize(win->win, win->winstatus ? height - 1 : height, width - win->sidebar_width); if (win->winside) wresize(win->winside, height-1, win->sidebar_width); view_resize(win->view, width - win->sidebar_width, win->winstatus ? height - 1 : height); }
} END_TEST /** * \brief Test call to generic resize() method. * * The test supplies new dimensions to the generic view and test if they were * updated correctly. The function shall correctly update the the dimensions. */ START_TEST(test_generic_resize) { GdkRectangle rect = { 50, 100, 150, 200 }; fail_if( OK != view_resize(view_generic, rect), NULL); fail_if( rect.x != view_generic->region.x, NULL); fail_if( rect.y != view_generic->region.y, NULL); fail_if( rect.width != view_generic->region.width, NULL); fail_if( rect.height != view_generic->region.height, NULL); } END_TEST
static void on_gl_context_realize (GLDrawingArea *context, View *view) { view->camera->azimuth = 45; view->camera->elevation = 25; view->camera->distance = 900; view->camera->position[2] = 4; gl_drawing_area_make_current (context); g_signal_connect (G_OBJECT (context), "configure-event", G_CALLBACK (view_configure), (gpointer) view); g_signal_connect (G_OBJECT (context), "expose-event", G_CALLBACK (view_expose), (gpointer) view); g_signal_connect (G_OBJECT (context), "scroll-event", G_CALLBACK (view_scroll), (gpointer) view); g_signal_connect (G_OBJECT (context), "button-press-event", G_CALLBACK (view_click), (gpointer) view); g_signal_connect (G_OBJECT (context), "motion-notify-event", G_CALLBACK (view_motion), (gpointer) view); init_lighting (view); scene_add_view (view->scene, (gpointer) view); view_resize (view); view_render (view); }
/** * Iterate over all child nodes of the top container node and resize views of * nodes that has changed dimensions. * * The window parameter contains pointer to GdkWindow where the whole view is * located and it is used for forcing redraw of leaves that do not have view in * them. * * \param node pointer to container node * \param window pointer to the window associated with view * \return OK on success */ RCode view_cv_resize_update(ContainerNode *node, GdkWindow *window) { ASSERT( NULL != node ); TRACE_MESSAGE(VIEW, TL_DEBUG, "Container node resize update (node=%p, type=%d, " "[x=%d,y=%d,width=%d,height=%d])", node, node->type, node->region.x, node->region.y, node->region.width, node->region.height ); // return early, there is no node that would need redrawing if ( FALSE == container_node_get_flag(node) ) { return OK; } if ( CONTAINER_LEAF == node->type ) { ViewGeneric *view_ptr = container_node_get_view(node); if ( NULL != view_ptr ) { container_node_reset_flag(node); return view_resize(view_ptr, node->region ); } else if ( NULL != window ) { // this allows redraw by container itself when there is no view gdk_window_invalidate_rect(window, &(node->region), FALSE); } } else { guint i; for (i = 0; i < node->data.node.size; i++ ) { RCode result = view_cv_resize_update( container_node_get_child(node, i), window ); if ( FAIL == result ) { ERROR_LOG(); } } } return OK; }
static void subcolumnview_refresh( vObject *vobject ) { Subcolumnview *sview = SUBCOLUMNVIEW( vobject ); Subcolumn *scol = SUBCOLUMN( VOBJECT( sview )->iobject ); int model_rows = icontainer_get_n_children( ICONTAINER( scol ) ); int old_nvis = sview->nvis; gboolean editable = scol->top_col->ws->mode != WORKSPACE_MODE_NOEDIT; #ifdef DEBUG printf( "subcolumnview_refresh\n" ); #endif /*DEBUG*/ if( sview->rows != model_rows ) { sview->rows = model_rows; if( sview->rows ) gtk_table_resize( GTK_TABLE( sview->table ), sview->rows, 4 ); #ifdef DEBUG printf( "subcolumnview_refresh: resize to %d rows\n", sview->rows ); #endif /*DEBUG*/ } /* Top-level subcolumns look different in no-edit mode. */ if( scol->is_top && editable ) { gtk_alignment_set_padding( GTK_ALIGNMENT( sview->align ), 0, 0, 0, 0 ); gtk_table_set_row_spacings( GTK_TABLE( sview->table ), 0 ); gtk_table_set_col_spacings( GTK_TABLE( sview->table ), 0 ); } else if( scol->is_top && !editable ) { gtk_alignment_set_padding( GTK_ALIGNMENT( sview->align ), 5, 5, 5, 5 ); gtk_table_set_row_spacings( GTK_TABLE( sview->table ), 5 ); gtk_table_set_col_spacings( GTK_TABLE( sview->table ), 5 ); } /* Nested subcols: we just change the left indent. */ if( !scol->is_top && editable ) { gtk_alignment_set_padding( GTK_ALIGNMENT( sview->align ), 0, 0, 0, 0 ); } else if( !scol->is_top && !editable ) { gtk_alignment_set_padding( GTK_ALIGNMENT( sview->align ), 0, 0, 15, 0 ); } sview->nvis = 0; (void) view_map( VIEW( sview ), (view_map_fn) subcolumnview_refresh_sub, sview, NULL ); if( sview->nvis != old_nvis ) { view_resize( VIEW( sview ) ); iobject_changed( IOBJECT( scol->top_col ) ); } VOBJECT_CLASS( parent_class )->refresh( vobject ); }