GTK+中文社区(gtk.awaysoft.com)

 找回密码
 马上加入

QQ登录

只需一步,快速开始

查看: 2584|回复: 0

GdkWindowState 在GDK2和GDK3的使用区别

[复制链接]
  • TA的每日心情
    奋斗
    2016-10-11 09:20
  • 签到天数: 271 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2012-5-10 22:38:50 | 显示全部楼层 |阅读模式
    写个程序的时候,需要获取程序窗口的状态,之前代码是用GTK2编写的,现在用GTK3编译,结果发现,最大化后,无法还原了,仔细对比状态值,发现了问题,仔细对比API:
    GDK2:http://gtk.awaysoft.com/apis/las ... html#GdkWindowState
    GDK3:http://gtk.awaysoft.com/apis/las ... html#GdkWindowState

    对比,可以发现,在GDK3中添加了一个
    1. GDK_WINDOW_STATE_FOCUSED    = 1 << 7
    复制代码
    即激活状态,这个状态几乎一直是存在的,(窗口不激活的时候,一般也不会检查状态吧)
    所以,之前通过switch判断的代码就不可使用了,必须通过&运算符来判断。
    之前代码:
    1. switch(state){
    2.         case GDK_WINDOW_STATE_WITHDRAWN: af_window_set_visible(TRUE);
    3.             break;
    4.         case GDK_WINDOW_STATE_ICONIFIED: gtk_window_deiconify(GTK_WINDOW(window));
    5.             break;
    6.         case GDK_WINDOW_STATE_MAXIMIZED: gtk_window_unmaximize(GTK_WINDOW(window));
    7.             break;
    8.         case GDK_WINDOW_STATE_STICKY: gtk_window_unstick(GTK_WINDOW(window));
    9.             break;
    10.         case GDK_WINDOW_STATE_FULLSCREEN: af_window_set_fullscreen(FALSE);
    11.             break;
    12.         case GDK_WINDOW_STATE_ABOVE: af_window_set_above(FALSE);
    13.             break;
    14.         case GDK_WINDOW_STATE_BELOW: af_window_set_below(FALSE);
    15.             break;
    16.         default:
    17.             return FALSE;
    18.     }
    复制代码
    现在代码:
    1. if ((state & GDK_WINDOW_STATE_WITHDRAWN)) af_window_set_visible(TRUE);
    2.     if ((state & GDK_WINDOW_STATE_ICONIFIED)) gtk_window_deiconify(GTK_WINDOW(window));
    3.     if ((state & GDK_WINDOW_STATE_MAXIMIZED)) gtk_window_unmaximize(GTK_WINDOW(window));
    4.     if ((state & GDK_WINDOW_STATE_STICKY)) gtk_window_unstick(GTK_WINDOW(window));
    5.     if ((state & GDK_WINDOW_STATE_FULLSCREEN)) af_window_set_fullscreen(FALSE);
    6.     if ((state & GDK_WINDOW_STATE_ABOVE)) af_window_set_above(FALSE);
    7.     if ((state & GDK_WINDOW_STATE_BELOW)) af_window_set_below(FALSE);
    复制代码
    *滑块验证:
    您需要登录后才可以回帖 登录 | 马上加入

    本版积分规则

    申请友链|Archiver|小黑屋|手机版|GTK+中文社区 ( 粤ICP备13080851号 )

    我要啦免费统计

    GMT+8, 2024-12-22 02:29 , Processed in 0.030695 second(s), 7 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表