[완료] GTK 윈도우를 움지이지 못하게 할 순 없을까요?
글쓴이: liveeasily / 작성시간: 수, 2007/09/19 - 8:53오전
안녕하세요?
GTK 로 응용을 만들고 있습니다.
현재 GTK 로 만들어진 윈도우의 위치가 바뀌지 않길 바라고 있습니다.
gtk_window_set_resizable 은 크기만 고정 시켜주고, 움직이지 못하게는 안 되더군요.
혹시 윈도우가 움직이면 발생하는 시그널이 있으면 콜백함수로 묶어두려고 했더니,
관련 시그널이 없는듯 하군요.
(못찾은 거라면.. 수면 부족인듯 ^^;;;;; api 문서를 몇번을 봣는지 모릅니다 ㅜㅜ)
이와 관련된 조언 부탁드리겠습니다...
Forums:
popup
popup으로 하심 안되나요
popup으로 하면 타이틀바가 안나오는 단점이 있을거에요..
꿈은 이루어진다.
꿈은 이루어진다.
popup 은..
타이틀 바 없는 것 까지는 괜찮은데 보더가 없으니 보기가 좀 안 좋더라구요 ^^
혹시 popup 의 보더 줄 수 있는 방법 있나요? ^^;;; 이것도 찾아 봤지만.. 안될 것 같더군요
1. gtk_window_set_decorated
1. gtk_window_set_decorated () 를 써서 마우스로 움직일 만한 여지를 주지 않는다.
2. window 타입을 GDK_WINDOW_TYPE_HINT_SPLASHSCREEN 로 설정한다.
이정도면 되지 않을까요?
----
Do not feed troll!
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
gtk_window_set_decorated () 를 false 로 하면
1. gtk_window_set_decorated () 를 false 로 하면 우선 타이틀 바와, 보더가 사라집니다.. 이것이 마우스로 움직일만한 여지를 주지 않는다고 하신거겠죠?
2. 그리고 말씀대로 splashscreen 으로 설정 했지만. POPUP 처럼 생긴 윈도우로 생성이 되더군요...
음.. 저는 윈도우의 테두리가 꼭 있었으면 합니다...
타이틀바/테두리가
타이틀바/테두리가 없을 때 참고.
window 위치조정은 [Alt] + [Btn1]
window 크기조정은 [Alt] + [Btn3]
OTL
창의 움직임은
창의 움직임은 윈도우 매니저쪽도 제어할 수 있을텐데요.
아무리 창을 움직이지 못한다고 해도 윗분이 말씀하신 것 처럼
윈도우 매니저가 제공하는 기능이니까 결국 움직일 수 있겠지요.
그렇다면 차라리 gtk_window_move()를 이용해서
계속 지정한 위치로 설정하는 함수를 일정주기로 호출하게
하는것은 어떨까요. :-)
gtk_window_get_position()으로 위치를 파악한다음 실행할 수도 있겠지만
gtk_window_get_position() 의 설명에 보니까 윈도우 매니저와
gravity의 문제로 반환하는 위치 값이 언제나 똑같을 수는 없기 때문에
이렇게 윈도우의 위치를 설정할 경우 약간씩 움직일 수 도 있다는군요.
---------------------------
Smashing Watermelons~!!
Whatever Nevermind~!!
Kim Do-Hyoung Keedi
----
use perl;
Keedi Kim
찾아보니 다음과
찾아보니 다음과 같은 이야기가 있네요.
읽어보시면 도움되실듯 합니다. :-)
* 결론은,
- 구현하지 않는다.
* 이유는
- 윈도우 매니저나 유저와 싸우게 된다.
- 무한루프가 될 수 있다.
* 방법은,
- override redirect window!
---------------------------
Smashing Watermelons~!!
Whatever Nevermind~!!
Kim Do-Hyoung Keedi
----
use perl;
Keedi Kim
감사합니다.. 덕분에
이 부분에 있어서 윈도우 매니저가 관련 될 수 있다는 것을 알게 되었습니다 :)
이유가 어찌 되었든
이유가 어찌 되었든 유저의 입장으로서 그런식으로 구현하는 것은 짜증날 소지가 많아서 말리고 싶습니다.
그놈(gtk) 프로그램 쓰면서 창 자체가 고정되는 프로그램 본 적이 없습니다. 창이 반드시 고정 되어야 하는 이유가 있을까요? 가급적 일관성을 유지하는 것을 좋아하는 편이라 그런 구현은 말리고 싶네요.
--
마잇
--
마잇
음 저기 설명에도
음 저기 설명에도 나오지만 CENTER ALWAYS 같은 경우가 그런 경우일 것 같군요.
대부분의 경우 불편하지만 고정되는 프로그램을 본적이 없는 것은 아무래도
윈도우 매니저가 분리되어 있는 특색때문에 그럴 것 같은데 정말 가끔씩은
상황에 따라 그런 프로그램이 필요할 수도 있을 것 같습니다~ :-)
예를 들어 창 몇개를 화면 가득 채워 마치 컴퓨터같지 않게 만들어놓고
기능을 제공하는 프로그램일 수도 있구요(물론 이런경우 데코레이션도 다 빼겠지만...)
박물관이나 공중전화에 있는 프로그램을 GTK로 짰는데 사용자가 응용창을 막 움직이면
좀 그렇잖아요? 특정한 상황에 딱 맞춘다거나와 같이 필요할 수도 있지 않겠나 하네요.
그리고 만약에 설득할 수 없는 중요한 고객이 원한다면...
해야죠 뭐. :-)
---------------------------
Smashing Watermelons~!!
Whatever Nevermind~!!
Kim Do-Hyoung Keedi
----
use perl;
Keedi Kim
제가 그렇게 하고 싶은 이유를 설명드렸어야 했던거 같습니다 ^^;;
우선 조언 해주신 분들께 진심으로 감사드립니다^^;
지금 현재 임베디드 보드에서 실행되는 응용 프로그램을 만들고 있습니다.
이것이 가장 문제 인거 같습니다.
matchbox 라는 window manager 에서는 응용 프로그램의 창 제어가 되질 않았습니다.
무조건 전체창으로만 생성이 되더군요... window manager 때문이라는 결론을 내리게 되었습니다.
그래서 blackbox 로 window manager 를 바꾸게 되었습니다.
그랬더니 창 크기 제어가 원하는 데로 되었습니다.
하지만 터치 스크린의 감도가 너무 민감한 것인지 살짝만 터치를 하여도, 창이 움직여 버립니다.
그래서 꼼수(?)를 생각하게 된 것이었습니다 ^^;
그렇다면 window manager 가 창을 움직이지 못하게.. 할 순 없을까요?
( 현재 임베디드 공모전에 참가중인 학생입니다. ^^;.. )
사용하시는 창
사용하시는 창 관리자가 다음 스펙을 지원하는지 확인하십시오.
http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html#id2507474
그런다음 해당 window에 xatom을 설정하면 될겁니다.
지원하는 창 관리자가 없다면 직접 창관리자에 해당하는 것을 만들어야 할겁니다.
----
Do not feed troll!
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
조언 감사드립니다 ^^
올 추석은 방콕 될것 같습니다 ㅜㅜ
결국 이렇게 하였습니다.
은근히 gdk api 볼 것이 많네요.. ^^;;
그리고 gtk_widget_show를 해주기 전까지 GtkWidget 의 멤버변수 GdkWindow *window 가 인식을 못하더군요.
댓글 달기