| 1378 } |
1378 } |
| 1379 } |
1379 } |
| 1380 |
1380 |
| 1381 static gboolean |
1381 static gboolean |
| 1382 popup_grab_on_window (GdkWindow *window, |
1382 popup_grab_on_window (GdkWindow *window, |
| 1383 guint32 activate_time, |
1383 guint32 activate_time) |
| 1384 gboolean grab_keyboard) |
|
| 1385 { |
1384 { |
| 1386 if ((gdk_pointer_grab (window, TRUE, |
1385 if ((gdk_pointer_grab (window, TRUE, |
| 1387 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | |
1386 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | |
| 1388 GDK_POINTER_MOTION_MASK, |
1387 GDK_POINTER_MOTION_MASK, |
| 1389 NULL, NULL, activate_time) == 0)) |
1388 NULL, NULL, activate_time) == 0)) |
| 1390 { |
1389 { |
| 1391 if (!grab_keyboard || gdk_keyboard_grab (window, TRUE, activate_time) == 0) |
1390 if (gdk_keyboard_grab (window, TRUE, activate_time) == 0) |
| 1392 return TRUE; |
1391 return TRUE; |
| 1393 else { |
1392 else { |
| 1394 gdk_display_pointer_ungrab (gdk_window_get_display (window), activate_time); |
1393 gdk_display_pointer_ungrab (gdk_window_get_display (window), activate_time); |
| 1395 return FALSE; |
1394 return FALSE; |
| 1396 } |
1395 } |
| 1409 gtk_widget_set_size_request (box->popup_window, width, height); |
1408 gtk_widget_set_size_request (box->popup_window, width, height); |
| 1410 gtk_window_move (GTK_WINDOW (box->popup_window), x, y); |
1409 gtk_window_move (GTK_WINDOW (box->popup_window), x, y); |
| 1411 gtk_widget_show(box->popup_window); |
1410 gtk_widget_show(box->popup_window); |
| 1412 gtk_widget_grab_focus (box->tree_view); |
1411 gtk_widget_grab_focus (box->tree_view); |
| 1413 if (!popup_grab_on_window (gtk_widget_get_window(box->popup_window), |
1412 if (!popup_grab_on_window (gtk_widget_get_window(box->popup_window), |
| 1414 GDK_CURRENT_TIME, TRUE)) { |
1413 GDK_CURRENT_TIME)) { |
| 1415 gtk_widget_hide (box->popup_window); |
1414 gtk_widget_hide (box->popup_window); |
| 1416 return; |
1415 return; |
| 1417 } |
1416 } |
| 1418 gtk_grab_add (box->popup_window); |
1417 gtk_grab_add (box->popup_window); |
| 1419 /*box->popup_in_progress = TRUE;*/ |
1418 /*box->popup_in_progress = TRUE;*/ |
| 1433 gtk_widget_hide(box->popup_window); |
1432 gtk_widget_hide(box->popup_window); |
| 1434 box->popup_in_progress = FALSE; |
1433 box->popup_in_progress = FALSE; |
| 1435 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (box->toggle_button), |
1434 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (box->toggle_button), |
| 1436 FALSE); |
1435 FALSE); |
| 1437 gtk_grab_remove (box->popup_window); |
1436 gtk_grab_remove (box->popup_window); |
| |
1437 gdk_pointer_ungrab(GDK_CURRENT_TIME); |
| |
1438 gdk_keyboard_ungrab(GDK_CURRENT_TIME); |
| 1438 } |
1439 } |
| 1439 |
1440 |
| 1440 static gboolean |
1441 static gboolean |
| 1441 toggle_key_press_cb(GtkWidget *widget, GdkEventKey *event, PidginStatusBox *box) |
1442 toggle_key_press_cb(GtkWidget *widget, GdkEventKey *event, PidginStatusBox *box) |
| 1442 { |
1443 { |