how gtk window set and keep key event focus?
来源:互联网 发布:沙特和伊朗知乎 编辑:程序博客网 时间:2024/05/21 19:37
Sometimes we need set focus to some window, and it can be implemented by gtk method -- gtk_window_present(). while we should note gtk_window_present() has 2 functionalities. The first is to show the window if it not; the second is set focus to it if it has show. Please refer to the following code. So we can make it focus on window by calling gtk_widget_show() before.
if (GTK_WIDGET_VISIBLE (window))
{
gdk_window_show (widget->window);
.....
gdk_window_focus (widget->window, timestamp);
}
else
{
gtk_widget_show (widget);
}
----code in gtkwindow.c
Now we maybe have another issue, we show another window and we want the focus keep in the origin one (maybe they are 2 different processes). It seems similiar to modal mode. But I don't find directly support by gtk (maybe i missed it). Here is one solution.
For gtk window, there are 2 types focus, one is top level focus, and one is focus widget. When GtkWindow focus out, it will notify the state changed. We can connect the signal and set the focus back.
connect signal:
g_signal_connect(window, "notify::has-toplevel-focus", G_CALLBACK(window_focus_changed), NULL);
process method:
static void menu_window_leave_focus(GtkWidget* widget, GParamSpec *pspec)
{
if (some condition)
{
gtk_window_present(GTK_WINDOW(widget));
}
}
- how gtk window set and keep key event focus?
- 【Android开发bug】Dropping event due to no window focus
- angularjs How to set focus on input field?
- How to remove object key and develper key
- 19. Window focus() 方法
- Axure RP Pro - jQuery - How to implement the "set focus" action
- Key Event
- Professional JS(13.3.1Event Object in DOM/IE/Cross-Browser/UI&Focus&Mouse and Wheel event[half])
- Working on your thesis: how to get started and how to keep it going?
- How to Set Up a USB Key to Install CentOS
- Auto focus on the first textbox and tab on the entery key
- Window.event
- window.event
- window.event
- event 和 window.event
- event 和 window.event
- event 和 window.event
- JavaScript charAt() and focus()
- 超时时间已到。在操作完成之前超时时间已过或服务器未响应。 (.Net SqlClient Data Provider)
- 企业实现服务器负载均衡常见的四种方法(概念入门级)
- ss
- as5安装oracle步骤
- access 也支持like
- how gtk window set and keep key event focus?
- 探索 /proc 目录
- CSDN第一篇blog, Just Mark
- Java编译环境安装
- 文件空洞引发的思考:空洞与cp
- linux下查看java路径
- 五险一金的使用方法
- linux下安装jdk并配置路径
- 伤