bool gui_window_get_scroll(struct gui_window *g, int *sx, int *sy) { CALLED(); if (g->view == NULL) return false; if (!g->view->LockLooper()) return false; #warning XXX: report to view frame ? if (g->view->ScrollBar(B_HORIZONTAL)) *sx = (int)g->view->ScrollBar(B_HORIZONTAL)->Value(); if (g->view->ScrollBar(B_VERTICAL)) *sy = (int)g->view->ScrollBar(B_VERTICAL)->Value(); g->view->UnlockLooper(); #warning WRITEME #if 0 /* GTK */ GtkAdjustment *vadj = gtk_viewport_get_vadjustment(g->viewport); GtkAdjustment *hadj = gtk_viewport_get_hadjustment(g->viewport); assert(vadj); assert(hadj); *sy = (int)(gtk_adjustment_get_value(vadj)); *sx = (int)(gtk_adjustment_get_value(hadj)); #endif return true; }
static gboolean wrap_table_child_focus_in (GtkWidget *widget, GdkEventFocus *event, gpointer data) { gint x, y; GtkWidget *container, *viewport; GtkAdjustment *hadj, *vadj; container = gtk_widget_get_parent (widget); if (container) { viewport = gtk_widget_get_parent (container); } g_assert (container && viewport); g_assert (GTK_IS_VIEWPORT (viewport)); g_return_val_if_fail (gtk_widget_get_realized (viewport), FALSE); if (!wrap_table_child_visible_in (widget, viewport)) { hadj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (viewport)); vadj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (viewport)); gtk_widget_translate_coordinates (widget, container, 0, 0, &x, &y); gtk_adjustment_set_value (hadj, MIN (x, hadj->upper - hadj->page_size)); gtk_adjustment_set_value (vadj, MIN (y, vadj->upper - vadj->page_size)); } return FALSE; }
static void cv_tabs_sizealloc (GtkWidget *widget, GtkAllocation *allocation, chanview *cv) { GdkWindow *parent_win; GtkAdjustment *adj; GtkWidget *inner; gint viewport_size; inner = ((tabview *)cv)->inner; parent_win = gtk_widget_get_window (gtk_widget_get_parent (inner)); if (cv->vertical) { adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (gtk_widget_get_parent (inner))); gdk_window_get_geometry (parent_win, 0, 0, 0, &viewport_size, 0); } else { adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (gtk_widget_get_parent (inner))); gdk_window_get_geometry (parent_win, 0, 0, &viewport_size, 0, 0); } if (gtk_adjustment_get_upper (adj) <= viewport_size) { gtk_widget_hide (((tabview *)cv)->b1); gtk_widget_hide (((tabview *)cv)->b2); } else { gtk_widget_show (((tabview *)cv)->b1); gtk_widget_show (((tabview *)cv)->b2); } }
/* * CBoardDevice::Init() * * Initializes the device * * Returns: True if the initializing was successful and false if it failed. */ bool CBoardDevice::Init(GtkFixed *board_area, CBoardDeviceGroup *device_group) { this->device_group = device_group; // Load the bitmap GdkPixbuf *bg_pixbuf = gdk_pixbuf_new_from_stream(CFile(image_file.c_str()).get_input_stream(), NULL, NULL); if(bg_pixbuf == NULL) return false; bitmap_x = bitmap_y = 0; width = gdk_pixbuf_get_width(bg_pixbuf); height = gdk_pixbuf_get_height(bg_pixbuf); // Check if the type is LED, PUSH or TOGGLE if(!strcmp(type.c_str(), "LED") || !strcmp(type.c_str(), "PUSH") || !strcmp(type.c_str(), "TOGGLE")) { // Set the appropriate width and height of the bitmap width = width / 2; // Check if PUSH because pushbuttons have the value 1 if they are up if(!strcmp(type.c_str(), "PUSH")) bitmap_x = 1; } // Check if the type is SSLED else if(!strcmp(type.c_str(), "SSLED")) { // Set the appropriate width and height of the bitmap width = width / 8; height = height / 16; } GtkWidget *bg_viewport = gtk_viewport_new(NULL, NULL); gtk_widget_set_events(bg_viewport, GDK_BUTTON_RELEASE_MASK); g_signal_connect(G_OBJECT(bg_viewport), "button-press-event", G_CALLBACK(device_button_pressed), this); g_signal_connect(G_OBJECT(bg_viewport), "button-release-event", G_CALLBACK(device_button_released), this); gtk_widget_show(bg_viewport); GtkWidget *bg_image = gtk_image_new_from_pixbuf(bg_pixbuf); gtk_widget_show(bg_image); gtk_container_add((GtkContainer*)bg_viewport, bg_image); gtk_viewport_set_shadow_type((GtkViewport*)bg_viewport, GTK_SHADOW_NONE); gtk_widget_set_size_request(bg_viewport, width, height); gtk_adjustment_set_upper(gtk_viewport_get_hadjustment((GtkViewport*)bg_viewport), width); gtk_adjustment_set_upper(gtk_viewport_get_vadjustment((GtkViewport*)bg_viewport), height); gtk_fixed_put(board_area, bg_viewport, coords.x, coords.y); g_object_unref(bg_pixbuf); viewport = (GtkViewport*)bg_viewport; ShowCorrectImage(); return true; }
static void tab_scroll_right_down_clicked (GtkWidget *widget, chanview *cv) { GtkAdjustment *adj; gint viewport_size; gfloat new_value; GtkWidget *inner; GdkWindow *parent_win; gdouble i; inner = ((tabview *)cv)->inner; parent_win = gtk_widget_get_window (gtk_widget_get_parent (inner)); if (cv->vertical) { adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (gtk_widget_get_parent(inner))); gdk_window_get_geometry (parent_win, 0, 0, 0, &viewport_size, 0); } else { adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (gtk_widget_get_parent(inner))); gdk_window_get_geometry (parent_win, 0, 0, &viewport_size, 0, 0); } new_value = tab_search_offset (inner, gtk_adjustment_get_value (adj), 1, cv->vertical); if (new_value == 0 || new_value + viewport_size > gtk_adjustment_get_upper (adj)) new_value = gtk_adjustment_get_upper (adj) - viewport_size; if (!tab_right_is_moving) { tab_right_is_moving = 1; for (i = gtk_adjustment_get_value (adj); ((i < new_value) && (tab_right_is_moving)); i += 0.1) { gtk_adjustment_set_value (adj, i); while (g_main_context_pending (NULL)) g_main_context_iteration (NULL, TRUE); } gtk_adjustment_set_value (adj, new_value); tab_right_is_moving = 0; /* hSP: set to false in case we didnt get stopped (the normal case) */ } else { tab_right_is_moving = 0; /* hSP: jump directly to next element if user is clicking faster than we can scroll.. */ } }
/* Returns the horizontal scrollbar's adjustment, used to * connect the horizontal scrollbar to the child widget's * horizontal scroll functionality. */ int clip_GTK_VIEWPORTGETHADJUSTMENT (ClipMachine *cm) { C_widget *cvp = _fetch_cw_arg(cm); ClipVar * cv = RETPTR(cm); GtkAdjustment* adj; C_widget *cadj; CHECKCWID(cvp,GTK_IS_VIEWPORT); adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT(cvp->widget)); cadj = _list_get_cwidget(cm, adj); if (!cadj) cadj = _register_widget(cm, (GtkWidget*)adj, NULL); if (cadj) _clip_mclone(cm, cv, &cadj->obj); return 0; err: return 1; }
void gui_window_set_scroll(struct gui_window *g, int sx, int sy) { CALLED(); if (g->view == NULL) return; if (!g->view->LockLooper()) return; #warning XXX: report to view frame ? if (g->view->ScrollBar(B_HORIZONTAL)) g->view->ScrollBar(B_HORIZONTAL)->SetValue(sx); if (g->view->ScrollBar(B_VERTICAL)) g->view->ScrollBar(B_VERTICAL)->SetValue(sy); g->view->UnlockLooper(); #warning WRITEME #if 0 /* GTK */ GtkAdjustment *vadj = gtk_viewport_get_vadjustment(g->viewport); GtkAdjustment *hadj = gtk_viewport_get_hadjustment(g->viewport); gdouble vlower, vpage, vupper, hlower, hpage, hupper, x = (double)sx, y = (double)sy; assert(vadj); assert(hadj); g_object_get(vadj, "page-size", &vpage, "lower", &vlower, "upper", &vupper, NULL); g_object_get(hadj, "page-size", &hpage, "lower", &hlower, "upper", &hupper, NULL); if (x < hlower) x = hlower; if (x > (hupper - hpage)) x = hupper - hpage; if (y < vlower) y = vlower; if (y > (vupper - vpage)) y = vupper - vpage; gtk_adjustment_set_value(vadj, y); gtk_adjustment_set_value(hadj, x); #endif }
/*if (simple_p) nskey = (uint32_t)0;*/ break; } } } else { nskey = utf8_to_ucs4(bytes, numbytes); } bool done = browser_window_key_press(g->bw, nskey); LOG(("nskey %d %d", nskey, done)); //if (browser_window_key_press(g->bw, nskey)) return; } #warning WRITEME #if 0 /* GTK */ gboolean nsbeos_window_keypress_event(GtkWidget *widget, GdkEventKey *event, gpointer data) { struct gui_window *g = data; uint32_t nskey = gdkkey_to_nskey(event); if (browser_window_key_press(g->bw, nskey)) return TRUE; if (event->state == 0) { double value; GtkAdjustment *vscroll = gtk_viewport_get_vadjustment(g->viewport); GtkAdjustment *hscroll = gtk_viewport_get_hadjustment(g->viewport); GtkAdjustment *scroll; const GtkAllocation *const alloc = >K_WIDGET(g->viewport)->allocation; switch (event->keyval) { default: return TRUE; case GDK_Home: case GDK_KP_Home: scroll = vscroll; value = scroll->lower; break; case GDK_End: case GDK_KP_End: scroll = vscroll; value = scroll->upper - alloc->height; if (value < scroll->lower) value = scroll->lower; break; case GDK_Left: case GDK_KP_Left: scroll = hscroll; value = gtk_adjustment_get_value(scroll) - scroll->step_increment; if (value < scroll->lower) value = scroll->lower; break; case GDK_Up: case GDK_KP_Up: scroll = vscroll; value = gtk_adjustment_get_value(scroll) - scroll->step_increment; if (value < scroll->lower) value = scroll->lower; break; case GDK_Right: case GDK_KP_Right: scroll = hscroll; value = gtk_adjustment_get_value(scroll) + scroll->step_increment; if (value > scroll->upper - alloc->width) value = scroll->upper - alloc->width; break; case GDK_Down: case GDK_KP_Down: scroll = vscroll; value = gtk_adjustment_get_value(scroll) + scroll->step_increment; if (value > scroll->upper - alloc->height) value = scroll->upper - alloc->height; break; case GDK_Page_Up: case GDK_KP_Page_Up: scroll = vscroll; value = gtk_adjustment_get_value(scroll) - scroll->page_increment; if (value < scroll->lower) value = scroll->lower; break; case GDK_Page_Down: case GDK_KP_Page_Down: scroll = vscroll; value = gtk_adjustment_get_value(scroll) + scroll->page_increment; if (value > scroll->upper - alloc->height) value = scroll->upper - alloc->height; break; } gtk_adjustment_set_value(scroll, value); } return TRUE; }