Merge branch 'backport' into work

Conflicts:

	openbox/client.c
This commit is contained in:
Dana Jansens 2008-03-06 02:46:32 -05:00
commit 18141d78da
7 changed files with 99 additions and 52 deletions

2
.gitignore vendored
View file

@ -51,6 +51,7 @@ po/remove-potcdate.sed
render/obrender-4.0.pc render/obrender-4.0.pc
obt/obt-4.0.pc obt/obt-4.0.pc
tools/gnome-panel-control/gnome-panel-control tools/gnome-panel-control/gnome-panel-control
tools/gdm-control/gdm-control
version.h version.h
.libs .libs
.deps .deps
@ -91,3 +92,4 @@ tests/title
tests/urgent tests/urgent
tests/usertimewin tests/usertimewin
data/autostart.sh data/autostart.sh
<+

View file

@ -414,12 +414,14 @@ void client_manage(Window window, ObPrompt *prompt)
activate ? "yes" : "no"); activate ? "yes" : "no");
if (activate) { if (activate) {
gboolean raise = FALSE; gboolean raise = FALSE;
gboolean relative_focused = FALSE; gboolean relative_focused;
gboolean parent_focused;
parent_focused = (focus_client != NULL &&
client_search_focus_parent(self));
relative_focused = (focus_client != NULL && relative_focused = (focus_client != NULL &&
client_search_focus_tree_full(self) != NULL && (client_search_focus_tree_full(self) != NULL ||
client_search_focus_group_full(self) != NULL); client_search_focus_group_full(self) != NULL));
/* This is focus stealing prevention */ /* This is focus stealing prevention */
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
@ -427,6 +429,12 @@ void client_manage(Window window, ObPrompt *prompt)
"launched at %u (last user interaction time %u)", "launched at %u (last user interaction time %u)",
self->window, map_time, launch_time, self->window, map_time, launch_time,
event_last_user_time); event_last_user_time);
ob_debug_type(OB_DEBUG_FOCUS,
"Current focus_client: %s",
(focus_client ? focus_client->title : "(none)"));
ob_debug_type(OB_DEBUG_FOCUS,
"parent focuesed: %d relative focused: %d",
parent_focused, relative_focused);
if (menu_frame_visible || moveresize_in_progress) { if (menu_frame_visible || moveresize_in_progress) {
activate = FALSE; activate = FALSE;
@ -454,7 +462,8 @@ void client_manage(Window window, ObPrompt *prompt)
else if (focus_client) { else if (focus_client) {
/* If the user is working in another window right now, then don't /* If the user is working in another window right now, then don't
steal focus */ steal focus */
if (event_last_user_time && launch_time && if (!parent_focused &&
event_last_user_time && launch_time &&
event_time_after(event_last_user_time, launch_time) && event_time_after(event_last_user_time, launch_time) &&
event_last_user_time != launch_time && event_last_user_time != launch_time &&
event_time_after(event_last_user_time, event_time_after(event_last_user_time,
@ -463,7 +472,8 @@ void client_manage(Window window, ObPrompt *prompt)
activate = FALSE; activate = FALSE;
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Not focusing the window because the user is " "Not focusing the window because the user is "
"working in another window"); "working in another window that is not "
"its parent");
} }
/* If the new window is a transient (and its relatives aren't /* If the new window is a transient (and its relatives aren't
focused) */ focused) */
@ -3958,6 +3968,21 @@ ObClient *client_search_focus_parent(ObClient *self)
return NULL; return NULL;
} }
ObClient *client_search_focus_parent_full(ObClient *self)
{
GSList *it;
ObClient *ret = NULL;
for (it = self->parents; it; it = g_slist_next(it)) {
if (client_focused(it->data))
ret = it->data;
else
ret = client_search_focus_parent_full(it->data);
if (ret) break;
}
return ret;
}
ObClient *client_search_parent(ObClient *self, ObClient *search) ObClient *client_search_parent(ObClient *self, ObClient *search)
{ {
GSList *it; GSList *it;

View file

@ -641,12 +641,18 @@ RrImage* client_icon(ObClient *self);
transient for */ transient for */
gboolean client_has_parent(ObClient *self); gboolean client_has_parent(ObClient *self);
/*! Searches a client's direct parents for a focused window. The function does /*! Searches a client's immediate parents for a focused window. The function
not check for the passed client, only for *ONE LEVEL* of its parents. does not check for the passed client, only for *ONE LEVEL* of its parents.
If no focused parentt is found, NULL is returned. If no focused parent is found, NULL is returned.
*/ */
ObClient *client_search_focus_parent(ObClient *self); ObClient *client_search_focus_parent(ObClient *self);
/*! Searches a client's parents for a focused window. The function
does not check for the passed client, but searches through all of its
parents. If no focused parent is found, NULL is returned.
*/
ObClient *client_search_focus_parent_full(ObClient *self);
/*! Searches a client's transients for a focused window. The function does not /*! Searches a client's transients for a focused window. The function does not
check for the passed client, only for its transients. check for the passed client, only for its transients.
If no focused transient is found, NULL is returned. If no focused transient is found, NULL is returned.

View file

@ -6,10 +6,10 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Openbox 3.4.6.1\n" "Project-Id-Version: Openbox 3.4.7\n"
"Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
"POT-Creation-Date: 2008-03-03 02:10+0100\n" "POT-Creation-Date: 2008-03-04 16:31+0100\n"
"PO-Revision-Date: 2008-03-02 17:18+0100\n" "PO-Revision-Date: 2008-03-04 16:32+0100\n"
"Last-Translator: Ryoichiro Suzuki <ryoichiro.suzuki@gmail.com>\n" "Last-Translator: Ryoichiro Suzuki <ryoichiro.suzuki@gmail.com>\n"
"Language-Team: Japanese <ja@li.org>\n" "Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -33,7 +33,7 @@ msgstr "はい"
#: openbox/actions/execute.c:133 #: openbox/actions/execute.c:133
msgid "Execute" msgid "Execute"
msgstr "" msgstr "実行する"
#: openbox/actions/execute.c:142 #: openbox/actions/execute.c:142
#, c-format #, c-format
@ -55,21 +55,23 @@ msgstr "Openbox を終了してもよろしいですか?"
#: openbox/actions/exit.c:57 #: openbox/actions/exit.c:57
msgid "Exit Openbox" msgid "Exit Openbox"
msgstr "" msgstr "Openbox を終了する"
#: openbox/actions/session.c:41 #: openbox/actions/session.c:41
msgid "" msgid ""
"The SessionLogout action is not available since Openbox was built without " "The SessionLogout action is not available since Openbox was built without "
"session management support" "session management support"
msgstr "" msgstr ""
"Openbox がセッション管理の機能なしに作られたので SessionLogout アクションは利"
"用できません。"
#: openbox/actions/session.c:63 openbox/actions/session.c:68 #: openbox/actions/session.c:63 openbox/actions/session.c:68
msgid "Log Out" msgid "Log Out"
msgstr "" msgstr "ログアウト"
#: openbox/actions/session.c:67 #: openbox/actions/session.c:67
msgid "Are you sure you want to log out?" msgid "Are you sure you want to log out?"
msgstr "" msgstr "ログアウトしてもよろしいですか?"
#: openbox/client.c:2004 #: openbox/client.c:2004
msgid "Unnamed Window" msgid "Unnamed Window"
@ -269,10 +271,13 @@ msgid ""
"configuration files. See stdout for more information. The last error seen " "configuration files. See stdout for more information. The last error seen "
"was in file \"%s\" line %d, with message: %s" "was in file \"%s\" line %d, with message: %s"
msgstr "" msgstr ""
"Openbox の設定ファイルを解析中に XML の構文エラーが見つかりました。詳しい情報"
"は標準出力を見て下さい。最後に見つかったエラーは\"%s\"ファイルの%d 行目で、説"
"明はこうです:%s"
#: openbox/openbox.c:382 #: openbox/openbox.c:382
msgid "Openbox Syntax Error" msgid "Openbox Syntax Error"
msgstr "" msgstr "Openbox 構文エラー"
#: openbox/openbox.c:382 #: openbox/openbox.c:382
msgid "Close" msgid "Close"
@ -328,7 +333,7 @@ msgid ""
"Passing messages to a running Openbox instance:\n" "Passing messages to a running Openbox instance:\n"
msgstr "" msgstr ""
"\n" "\n"
"実行中の Openbox にメッセージを送ります:\n" "実行中の Openbox に命令を送ります:\n"
#: openbox/openbox.c:543 #: openbox/openbox.c:543
msgid " --reconfigure Reload Openbox's configuration\n" msgid " --reconfigure Reload Openbox's configuration\n"
@ -423,19 +428,19 @@ msgstr "デスクトップ%i"
msgid "Unable to make directory \"%s\": %s" msgid "Unable to make directory \"%s\": %s"
msgstr "ディレクトリ\"%s\"を作れません: %s" msgstr "ディレクトリ\"%s\"を作れません: %s"
#: openbox/session.c:452 #: openbox/session.c:467
#, c-format #, c-format
msgid "Unable to save the session to \"%s\": %s" msgid "Unable to save the session to \"%s\": %s"
msgstr "セッションを\"%s\"に保存できません: %s" msgstr "セッションを\"%s\"に保存できません: %s"
#: openbox/session.c:584 #: openbox/session.c:599
#, c-format #, c-format
msgid "Error while saving the session to \"%s\": %s" msgid "Error while saving the session to \"%s\": %s"
msgstr "セッションを\"%s\"に保存中にエラーが起きました: %s" msgstr "セッションを\"%s\"に保存中にエラーが起きました: %s"
#: openbox/session.c:821 #: openbox/session.c:836
msgid "Not connected to a session manager" msgid "Not connected to a session manager"
msgstr "" msgstr "セッションマネージャに接続されていません。"
#: openbox/startupnotify.c:243 #: openbox/startupnotify.c:243
#, c-format #, c-format

View file

@ -6,10 +6,10 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Openbox 3.4.6.1\n" "Project-Id-Version: Openbox 3.4.7\n"
"Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
"POT-Creation-Date: 2008-03-03 02:10+0100\n" "POT-Creation-Date: 2008-03-04 22:06+0100\n"
"PO-Revision-Date: 2008-02-28 17:26-0500\n" "PO-Revision-Date: 2008-03-04 16:07-0500\n"
"Last-Translator: Og Maciel <ogmaciel@gnome.org>\n" "Last-Translator: Og Maciel <ogmaciel@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-l10n-br@listas.cipsga.org.br>\n" "Language-Team: Brazilian Portuguese <gnome-l10n-br@listas.cipsga.org.br>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -32,7 +32,7 @@ msgstr "Sim"
#: openbox/actions/execute.c:133 #: openbox/actions/execute.c:133
msgid "Execute" msgid "Execute"
msgstr "" msgstr "Executar"
#: openbox/actions/execute.c:142 #: openbox/actions/execute.c:142
#, c-format #, c-format
@ -54,21 +54,23 @@ msgstr "Você tem certeza que deseja sair do Openbox?"
#: openbox/actions/exit.c:57 #: openbox/actions/exit.c:57
msgid "Exit Openbox" msgid "Exit Openbox"
msgstr "" msgstr "Sair do Openbox"
#: openbox/actions/session.c:41 #: openbox/actions/session.c:41
msgid "" msgid ""
"The SessionLogout action is not available since Openbox was built without " "The SessionLogout action is not available since Openbox was built without "
"session management support" "session management support"
msgstr "" msgstr ""
"A ação SessionLogout não está disponível já que o Openbox foi compilado sem "
"suporte de gerenciamento de sessões"
#: openbox/actions/session.c:63 openbox/actions/session.c:68 #: openbox/actions/session.c:63 openbox/actions/session.c:68
msgid "Log Out" msgid "Log Out"
msgstr "" msgstr "Sair"
#: openbox/actions/session.c:67 #: openbox/actions/session.c:67
msgid "Are you sure you want to log out?" msgid "Are you sure you want to log out?"
msgstr "" msgstr "Você tem certeza que deseja sair?"
#: openbox/client.c:2004 #: openbox/client.c:2004
msgid "Unnamed Window" msgid "Unnamed Window"
@ -273,10 +275,13 @@ msgid ""
"configuration files. See stdout for more information. The last error seen " "configuration files. See stdout for more information. The last error seen "
"was in file \"%s\" line %d, with message: %s" "was in file \"%s\" line %d, with message: %s"
msgstr "" msgstr ""
"Um ou mais erros de sintaxe de XML foram encontrados ao analisar os arquivos "
"de configuração do Openbox. Veja a saída padrão para mais informação. O "
"último erro relatado foi no arquivo \"%s\" linha %d, com a mensagem: %s"
#: openbox/openbox.c:382 #: openbox/openbox.c:382
msgid "Openbox Syntax Error" msgid "Openbox Syntax Error"
msgstr "" msgstr "Erro de Sintaxe do Openbox"
#: openbox/openbox.c:382 #: openbox/openbox.c:382
msgid "Close" msgid "Close"
@ -434,19 +439,19 @@ msgstr "área de trabalho %i"
msgid "Unable to make directory \"%s\": %s" msgid "Unable to make directory \"%s\": %s"
msgstr "Não foi possível criar o diretório \"%s\": %s" msgstr "Não foi possível criar o diretório \"%s\": %s"
#: openbox/session.c:452 #: openbox/session.c:467
#, c-format #, c-format
msgid "Unable to save the session to \"%s\": %s" msgid "Unable to save the session to \"%s\": %s"
msgstr "Não foi possível salvar a sessão em \"%s\": %s" msgstr "Não foi possível salvar a sessão em \"%s\": %s"
#: openbox/session.c:584 #: openbox/session.c:599
#, c-format #, c-format
msgid "Error while saving the session to \"%s\": %s" msgid "Error while saving the session to \"%s\": %s"
msgstr "Erro enquanto salvando a sessão em \"%s\": %s" msgstr "Erro enquanto salvando a sessão em \"%s\": %s"
#: openbox/session.c:821 #: openbox/session.c:836
msgid "Not connected to a session manager" msgid "Not connected to a session manager"
msgstr "" msgstr "Não está conectado à um gerente de sessões"
#: openbox/startupnotify.c:243 #: openbox/startupnotify.c:243
#, c-format #, c-format

View file

@ -6,10 +6,10 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Openbox 3.4.6.1\n" "Project-Id-Version: Openbox 3.4.7\n"
"Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n" "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
"POT-Creation-Date: 2008-03-03 02:10+0100\n" "POT-Creation-Date: 2008-03-05 18:10+0100\n"
"PO-Revision-Date: 2008-02-17 23:29+0800\n" "PO-Revision-Date: 2008-03-06 01:01+0800\n"
"Last-Translator: 洪任諭 <pcman.tw@gmail.com>\n" "Last-Translator: 洪任諭 <pcman.tw@gmail.com>\n"
"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n" "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -32,7 +32,7 @@ msgstr "是"
#: openbox/actions/execute.c:133 #: openbox/actions/execute.c:133
msgid "Execute" msgid "Execute"
msgstr "" msgstr "執行"
#: openbox/actions/execute.c:142 #: openbox/actions/execute.c:142
#, c-format #, c-format
@ -42,37 +42,38 @@ msgstr "轉換路徑「%s」自 utf8 時失敗"
#: openbox/actions/exit.c:52 openbox/actions/session.c:62 #: openbox/actions/exit.c:52 openbox/actions/session.c:62
#: openbox/client.c:3460 #: openbox/client.c:3460
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr "取消"
#: openbox/actions/exit.c:53 #: openbox/actions/exit.c:53
msgid "Exit" msgid "Exit"
msgstr "" msgstr "離開"
#: openbox/actions/exit.c:56 #: openbox/actions/exit.c:56
msgid "Are you sure you want to exit Openbox?" msgid "Are you sure you want to exit Openbox?"
msgstr "" msgstr "你確定要離開 Openbox"
#: openbox/actions/exit.c:57 #: openbox/actions/exit.c:57
msgid "Exit Openbox" msgid "Exit Openbox"
msgstr "" msgstr "離開 Openbox"
#: openbox/actions/session.c:41 #: openbox/actions/session.c:41
msgid "" msgid ""
"The SessionLogout action is not available since Openbox was built without " "The SessionLogout action is not available since Openbox was built without "
"session management support" "session management support"
msgstr "" msgstr ""
"SessionLogout 動作無法使用,因為 Openbox 在編譯時沒有使用作業階段管理支援"
#: openbox/actions/session.c:63 openbox/actions/session.c:68 #: openbox/actions/session.c:63 openbox/actions/session.c:68
msgid "Log Out" msgid "Log Out"
msgstr "" msgstr "登出"
#: openbox/actions/session.c:67 #: openbox/actions/session.c:67
msgid "Are you sure you want to log out?" msgid "Are you sure you want to log out?"
msgstr "" msgstr "你確定要登出嗎?"
#: openbox/client.c:2004 #: openbox/client.c:2004
msgid "Unnamed Window" msgid "Unnamed Window"
msgstr "" msgstr "未命名視窗"
#: openbox/client.c:2018 openbox/client.c:2050 #: openbox/client.c:2018 openbox/client.c:2050
msgid "Killing..." msgid "Killing..."
@ -91,7 +92,7 @@ msgstr "視窗「%s」似乎已經停止回應。 你想送出 \"%s\" 訊息強
#: openbox/client.c:3451 #: openbox/client.c:3451
msgid "End Process" msgid "End Process"
msgstr "" msgstr "結束 Process"
#: openbox/client.c:3455 #: openbox/client.c:3455
#, c-format #, c-format
@ -102,7 +103,7 @@ msgstr "視窗「%s」似乎已經停止回應。 你想從 X 伺服器將它
#: openbox/client.c:3457 #: openbox/client.c:3457
msgid "Disconnect" msgid "Disconnect"
msgstr "" msgstr "斷線"
#: openbox/client_list_combined_menu.c:87 openbox/client_list_menu.c:91 #: openbox/client_list_combined_menu.c:87 openbox/client_list_menu.c:91
msgid "Go there..." msgid "Go there..."
@ -267,10 +268,12 @@ msgid ""
"configuration files. See stdout for more information. The last error seen " "configuration files. See stdout for more information. The last error seen "
"was in file \"%s\" line %d, with message: %s" "was in file \"%s\" line %d, with message: %s"
msgstr "" msgstr ""
"解析 Openbox 設定檔 XML 語法時發現一個或多個錯誤。 查看 stdout 以獲得更多資"
"訊。 最後一個發現的錯誤在檔案 \"%s\" 第 %d 行。訊息:%s"
#: openbox/openbox.c:382 #: openbox/openbox.c:382
msgid "Openbox Syntax Error" msgid "Openbox Syntax Error"
msgstr "" msgstr "Openbox 語法錯誤"
#: openbox/openbox.c:382 #: openbox/openbox.c:382
msgid "Close" msgid "Close"
@ -420,19 +423,19 @@ msgstr "桌面 %i"
msgid "Unable to make directory \"%s\": %s" msgid "Unable to make directory \"%s\": %s"
msgstr "無法製作目錄「%s」%s" msgstr "無法製作目錄「%s」%s"
#: openbox/session.c:452 #: openbox/session.c:467
#, c-format #, c-format
msgid "Unable to save the session to \"%s\": %s" msgid "Unable to save the session to \"%s\": %s"
msgstr "無法儲存執行階段到「%s」%s" msgstr "無法儲存執行階段到「%s」%s"
#: openbox/session.c:584 #: openbox/session.c:599
#, c-format #, c-format
msgid "Error while saving the session to \"%s\": %s" msgid "Error while saving the session to \"%s\": %s"
msgstr "當儲存執行階段「%s」時發生錯誤%s" msgstr "當儲存執行階段「%s」時發生錯誤%s"
#: openbox/session.c:821 #: openbox/session.c:836
msgid "Not connected to a session manager" msgid "Not connected to a session manager"
msgstr "" msgstr "沒有連接到作業階段管理員"
#: openbox/startupnotify.c:243 #: openbox/startupnotify.c:243
#, c-format #, c-format

View file

@ -294,6 +294,7 @@ void RrImageDrawRGBA(RrPixel32 *target, RrTextureRGBA *rgba,
DrawRGBA(target, target_w, target_h, DrawRGBA(target, target_w, target_h,
scaled->data, scaled->width, scaled->height, scaled->data, scaled->width, scaled->height,
rgba->alpha, area); rgba->alpha, area);
RrImagePicFree(scaled);
} }
else else
DrawRGBA(target, target_w, target_h, DrawRGBA(target, target_w, target_h,