首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GTK2中调整夹点大小

在GTK2中调整夹点大小
EN

Stack Overflow用户
提问于 2017-01-26 21:50:09
回答 1查看 169关注 0票数 0

我正在编写一个GTK2应用程序。我想在窗口的右下角添加调整大小夹点,but the API does not provide any functions to do so (gtk_window_set_has_resize_grip()仅限于GTK3)。但是,我可以看到许多使用GTK2编写的带有调整大小夹点的程序(旧版本的Pluma、Caja和Geany等)。我试着查看了Pluma的源代码,并在全球范围内搜索"grip“、"resize_grip”和"resize“等关键字,但这两种情况都没有结果。我希望能有一个详细的关于如何在GTK2中实现调整大小夹点的答案。

EN

回答 1

Stack Overflow用户

发布于 2018-09-15 06:59:33

代码语言:javascript
复制
static gboolean resize_expose(GtkWidget *area, GdkEventExpose *ev, GdkWindowEdge edge) {
  gint size = MIN(area->allocation.width, area->allocation.height);

  gtk_paint_resize_grip(area->style, area->window,
      gtk_widget_get_state(area),
      &ev->area, area, "grip", edge,
      area->allocation.width - size, area->allocation.height - size,
      size, size);

  return TRUE;
}

static gboolean resize_button(GtkWidget *area, GdkEventButton *ev, GdkWindowEdge edge) {
  if (ev->type != GDK_BUTTON_PRESS)
    return TRUE;

  switch (ev->button) {
  case 1:
    gtk_window_begin_resize_drag(GTK_WINDOW(gtk_widget_get_toplevel(area)), edge,
        ev->button, ev->x_root, ev->y_root, ev->time);
    break;
  case 2:
    gtk_window_begin_move_drag(GTK_WINDOW(gtk_widget_get_toplevel(area)),
        ev->button, ev->x_root, ev->y_root, ev->time);
    break;
  }

  return TRUE;
}

void create_grip(GtkWidget *parent_or_window) {
  GtkWidget *area = gtk_drawing_area_new();
  gtk_widget_set_size_request(area, 18, 18);
  gtk_widget_add_events(area, GDK_BUTTON_PRESS_MASK);
  gtk_box_pack_end(GTK_BOX(parent_or_window), area, FALSE, FALSE, 0);
  g_signal_connect(area, "expose_event", G_CALLBACK(grip_expose),
      GINT_TO_POINTER(GDK_WINDOW_EDGE_SOUTH_EAST));
  g_signal_connect(area, "button_press_event", G_CALLBACK(grip_button),
      GINT_TO_POINTER(GDK_WINDOW_EDGE_SOUTH_EAST));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41874973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档