comparison finch/libgnt/gntmain.c @ 17047:a19b8d71f868

Do not process clicks on no widget.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Fri, 11 May 2007 21:06:47 +0000
parents d2904afe89e2
children 541c5ed54e90
comparison
equal deleted inserted replaced
17045:413c957e7c44 17047:a19b8d71f868
142 } else if (strncmp(buffer, "[M#", 3) == 0) { 142 } else if (strncmp(buffer, "[M#", 3) == 0) {
143 /* button up */ 143 /* button up */
144 event = GNT_MOUSE_UP; 144 event = GNT_MOUSE_UP;
145 } else 145 } else
146 return FALSE; 146 return FALSE;
147 147
148 if (!widget)
149 return FALSE;
150
148 if (gnt_wm_process_click(wm, event, x, y, widget)) 151 if (gnt_wm_process_click(wm, event, x, y, widget))
149 return TRUE; 152 return TRUE;
150 153
151 if (event == GNT_LEFT_MOUSE_DOWN && widget && widget != wm->_list.window && 154 if (event == GNT_LEFT_MOUSE_DOWN && widget && widget != wm->_list.window &&
152 !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT)) { 155 !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT)) {
346 gnt_widget_show(win); 349 gnt_widget_show(win);
347 raise: 350 raise:
348 gnt_wm_raise_window(wm, win); 351 gnt_wm_raise_window(wm, win);
349 } 352 }
350 353
354 #ifdef SIGWINCH
355 static void (*org_winch_handler)(int);
356 #endif
357
351 static void 358 static void
352 sighandler(int sig) 359 sighandler(int sig)
353 { 360 {
354 switch (sig) { 361 switch (sig) {
355 #ifdef SIGWINCH 362 #ifdef SIGWINCH
356 case SIGWINCH: 363 case SIGWINCH:
357 werase(stdscr); 364 werase(stdscr);
358 wrefresh(stdscr); 365 wrefresh(stdscr);
359 g_idle_add(refresh_screen, NULL); 366 g_idle_add(refresh_screen, NULL);
367 org_winch_handler(sig);
360 signal(SIGWINCH, sighandler); 368 signal(SIGWINCH, sighandler);
361 break; 369 break;
362 #endif 370 #endif
363 case SIGCHLD: 371 case SIGCHLD:
364 clean_pid(); 372 clean_pid();
432 wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); 440 wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL));
433 werase(stdscr); 441 werase(stdscr);
434 wrefresh(stdscr); 442 wrefresh(stdscr);
435 443
436 #ifdef SIGWINCH 444 #ifdef SIGWINCH
437 signal(SIGWINCH, sighandler); 445 org_winch_handler = signal(SIGWINCH, sighandler);
438 #endif 446 #endif
439 signal(SIGCHLD, sighandler); 447 signal(SIGCHLD, sighandler);
440 signal(SIGINT, sighandler); 448 signal(SIGINT, sighandler);
441 signal(SIGPIPE, SIG_IGN); 449 signal(SIGPIPE, SIG_IGN);
442 450