提问人:snuk182 提问时间:9/20/2023 更新时间:9/20/2023 访问量:15
Gtk3: 可以移动任意小部件的鼠标运动区域吗?
Gtk3: Is it possible to shift the mouse motion area for an arbitrary widget?
问:
我实现了一个GtkCellRenderer来在TreeView单元格中绘制一个任意的Widget。在其他非常基本的实现部分中,我的render()
static void my_cell_renderer_render(GtkCellRenderer *cell, cairo_t *ctx,
GtkWidget *widget, const GdkRectangle *background_area,
const GdkRectangle *cell_area, GtkCellRendererState state) {
GdkRectangle allo;
gint calc_width = 0;
gint calc_height = 0;
cairo_save(ctx);
if (cell) {
MyCellRenderer *rc = MY_CELL_RENDERER(cell);
if (GTK_IS_WIDGET(rc->cell)) {
gtk_widget_get_size_request(rc->cell, &calc_width, &calc_height);
allo.x = MAX(cell_area->x, 0);
allo.y = MAX(cell_area->y, 0);
allo.width = calc_width;
allo.height = calc_height;
gtk_widget_size_allocate(rc->cell, &allo);
cairo_translate(ctx, allo.x, allo.y);
gtk_widget_draw(rc->cell, ctx);
}
}
cairo_restore(ctx);
}
在我启用标头之前,它完全可以正常工作。使用标题时,表格看起来没问题,但鼠标悬停区域向上移动了一行,就好像没有标题行一样。下面的屏幕截图显示该按钮由鼠标突出显示,该鼠标位于其上方的一行。Item #2,2
有没有办法移动项目单元格小部件的鼠标运动区域?
注意:也会接受一个通用的答案,我自己根据我的情况进行调整。
NBB:是的,我需要这个作为 + 组合,而不是 .GtkTreeView
GtkCellRenderer
GtkGrid
答: 暂无答案
评论