微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GtkDrawingArea 的 gtk_widget_grab_focus 正在重置父 GtkScrolledWindow 的调整

如何解决GtkDrawingArea 的 gtk_widget_grab_focus 正在重置父 GtkScrolledWindow 的调整

我在 GtkDrawingArea 绘图。它是一个框架的子级(如果我缩小,则可以在周围产生阴影)并且该框架是 GtkScrolledWindow 的子级。一切正常。

现在我已经安装了一些在某些情况下应该处于活动状态的热键。要从键盘接收键,我必须将焦点放在这个 GtkDrawingArea 上。我通过调用 gtk_widget_grab_focus 来完成。

不幸的是,这将 GtkScrolledWindow 的调整设置为 1。这意味着如果我在 GtkDrawingArea 的右下角,当我抓住它的焦点时,突然间我(几乎)在左上角

作为一种解决方法,我在抓取后保存调整并设置此值:

GtkAdjustment *hadjust_p,*vadjust_p; /* of course this comes before creating
                                         the GtkScrolledWindow */
gdouble tmp_hadjust,tmp_vadjust;

tmp_hadjust = gtk_adjustment_get_value(hadjust_p);
tmp_vadjust = gtk_adjustment_get_value(vadjust_p);

gtk_widget_grab_focus(widget);

gtk_adjustment_set_value(hadjust_p,tmp_hadjust);
gtk_adjustment_set_value(vadjust_p,tmp_vadjust);

没有更好的方法吗?这对我来说看起来不太好。

我在 Debian buster 上使用 C 和 gtk3。 谢谢你看。 弗洛

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。