static void gtkCanvasUpdateChildLayout(Ihandle *ih) { GtkContainer* sb_win = (GtkContainer*)iupAttribGet(ih, "_IUP_EXTRAPARENT"); GtkWidget* sb_horiz = (GtkWidget*)iupAttribGet(ih, "_IUPGTK_SBHORIZ"); GtkWidget* sb_vert = (GtkWidget*)iupAttribGet(ih, "_IUPGTK_SBVERT"); int sb_vert_width=0, sb_horiz_height=0; int width = ih->currentwidth; int height = ih->currentheight; int border = iupAttribGetInt(ih, "BORDERWIDTH"); if (sb_vert && iupgtkIsVisible(sb_vert)) sb_vert_width = iupdrvGetScrollbarSize(); if (sb_horiz && iupgtkIsVisible(sb_horiz)) sb_horiz_height = iupdrvGetScrollbarSize(); if (sb_vert_width) iupgtkSetPosSize(sb_win, sb_vert, width-sb_vert_width-border, border, sb_vert_width, height-sb_horiz_height-2*border); if (sb_horiz_height) iupgtkSetPosSize(sb_win, sb_horiz, border, height-sb_horiz_height-border, width-sb_vert_width-2*border, sb_horiz_height); iupgtkSetPosSize(sb_win, ih->handle, border, border, width-sb_vert_width-2*border, height-sb_horiz_height-2*border); IupFlush(); }
void iupdrvDialogGetPosition(Ihandle *ih, InativeHandle* handle, int *x, int *y) { if (!handle) handle = ih->handle; if (iupgtkIsVisible(handle)) { gint gx, gy; gtk_window_get_position((GtkWindow*)handle, &gx, &gy); if (x) *x = gx; if (y) *y = gy; } else if (ih) { /* gtk_window_get_position returns an outdated value if window is not visible */ if (x) *x = iupAttribGetInt(ih, "_IUPGTK_OLD_X"); if (y) *y = iupAttribGetInt(ih, "_IUPGTK_OLD_Y"); } }
static int gtkCanvasSetDYAttrib(Ihandle* ih, const char *value) { if (ih->data->sb & IUP_SB_VERT) { double ymin, ymax, liney; float dy; int value_changed; GtkAdjustment* sb_vert_adjust; GtkWidget* sb_vert = (GtkWidget*)iupAttribGet(ih, "_IUPGTK_SBVERT"); if (!sb_vert) return 1; if (!iupStrToFloat(value, &dy)) return 1; ymin = iupAttribGetFloat(ih, "YMIN"); ymax = iupAttribGetFloat(ih, "YMAX"); if (!iupAttribGet(ih,"LINEY")) { liney = dy/10; if (liney==0) liney = 1; } else liney = iupAttribGetFloat(ih,"LINEY"); sb_vert_adjust = gtk_range_get_adjustment(GTK_RANGE(sb_vert)); if (dy >= (ymax-ymin)) { if (iupAttribGetBoolean(ih, "YAUTOHIDE")) { if (iupgtkIsVisible(sb_vert)) { gtk_widget_hide(sb_vert); gtkCanvasUpdateChildLayout(ih); } } else gtk_widget_set_sensitive(sb_vert, FALSE); ih->data->posy = (float)ymin; gtkCanvasAdjustmentSetValue(ih, sb_vert_adjust, ymin); return 1; } else { if (!iupgtkIsVisible(sb_vert)) { gtk_widget_show(sb_vert); gtkCanvasUpdateChildLayout(ih); } gtk_widget_set_sensitive(sb_vert, TRUE); } #if GTK_CHECK_VERSION(2, 14, 0) { double page_size = dy; double dvalue = gtk_adjustment_get_value(sb_vert_adjust); value_changed = gtkCanvasCheckScroll(ymin, ymax, &page_size, &dvalue); gtk_adjustment_configure(sb_vert_adjust, dvalue, ymin, ymax, liney, page_size, dy); } #else { sb_vert_adjust->lower = ymin; sb_vert_adjust->upper = ymax; sb_vert_adjust->step_increment = liney; sb_vert_adjust->page_size = dy; value_changed = gtkCanvasCheckScroll(ymin, ymax, &sb_vert_adjust->page_size, &sb_vert_adjust->value); sb_vert_adjust->page_increment = sb_vert_adjust->page_size; gtk_adjustment_changed(sb_vert_adjust); } #endif if (value_changed) gtk_adjustment_value_changed(sb_vert_adjust); } return 1; }
static int gtkCanvasSetDXAttrib(Ihandle* ih, const char *value) { if (ih->data->sb & IUP_SB_HORIZ) { double xmin, xmax, linex; float dx; int value_changed; GtkAdjustment* sb_horiz_adjust; GtkWidget* sb_horiz = (GtkWidget*)iupAttribGet(ih, "_IUPGTK_SBHORIZ"); if (!sb_horiz) return 1; if (!iupStrToFloat(value, &dx)) return 1; xmin = iupAttribGetFloat(ih, "XMIN"); xmax = iupAttribGetFloat(ih, "XMAX"); if (!iupAttribGet(ih,"LINEX")) { linex = dx/10; if (linex==0) linex = 1; } else linex = iupAttribGetFloat(ih,"LINEX"); sb_horiz_adjust = gtk_range_get_adjustment(GTK_RANGE(sb_horiz)); if (dx >= (xmax-xmin)) { if (iupAttribGetBoolean(ih, "XAUTOHIDE")) { if (iupgtkIsVisible(sb_horiz)) { gtk_widget_hide(sb_horiz); gtkCanvasUpdateChildLayout(ih); } } else gtk_widget_set_sensitive(sb_horiz, FALSE); ih->data->posx = (float)xmin; gtkCanvasAdjustmentSetValue(ih, sb_horiz_adjust, xmin); return 1; } else { if (!iupgtkIsVisible(sb_horiz)) { gtk_widget_show(sb_horiz); gtkCanvasUpdateChildLayout(ih); } gtk_widget_set_sensitive(sb_horiz, TRUE); } #if GTK_CHECK_VERSION(2, 14, 0) { double page_size = dx; double dvalue = gtk_adjustment_get_value(sb_horiz_adjust); value_changed = gtkCanvasCheckScroll(xmin, xmax, &page_size, &dvalue); gtk_adjustment_configure(sb_horiz_adjust, dvalue, xmin, xmax, linex, page_size, dx); } #else { sb_horiz_adjust->lower = xmin; sb_horiz_adjust->upper = xmax; sb_horiz_adjust->step_increment = linex; sb_horiz_adjust->page_size = dx; value_changed = gtkCanvasCheckScroll(xmin, xmax, &sb_horiz_adjust->page_size, &sb_horiz_adjust->value); sb_horiz_adjust->page_increment = sb_horiz_adjust->page_size; gtk_adjustment_changed(sb_horiz_adjust); } #endif if (value_changed) gtk_adjustment_value_changed(sb_horiz_adjust); } return 1; }
int iupdrvTabsIsTabVisible(Ihandle* child, int pos) { GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_PAGE"); (void)pos; return iupgtkIsVisible(tab_page); }