Mercurial > pidgin
annotate finch/libgnt/wms/irssi.c @ 28018:8b68373bf393
Use a GSList here instead of a GQueue. Yay for simplification.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 20 Aug 2009 01:51:37 +0000 |
parents | dcf2f613a6a6 |
children | 88d889b54df4 |
rev | line source |
---|---|
24214
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
1 /* |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
2 * GNT - The GLib Ncurses Toolkit |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
3 * |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
4 * GNT is the legal property of its developers, whose names are too numerous |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
5 * to list here. Please refer to the COPYRIGHT file distributed with this |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
6 * source distribution. |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
7 * |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
8 * This library is free software; you can redistribute it and/or modify |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
9 * it under the terms of the GNU General Public License as published by |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
10 * the Free Software Foundation; either version 2 of the License, or |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
11 * (at your option) any later version. |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
12 * |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
16 * GNU General Public License for more details. |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
17 * |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
18 * You should have received a copy of the GNU General Public License |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
19 * along with this program; if not, write to the Free Software |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
21 */ |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
22 |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
23 /** |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
24 * 1. Buddylist is aligned on the left. |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
25 * 2. The rest of the screen is split into MxN grid for conversation windows. |
22988
307bab4c9e63
Correct the comments, and some position-calculation when the buddylist is not showing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18424
diff
changeset
|
26 * - M = split-h in ~/.gntrc:[irssi] |
307bab4c9e63
Correct the comments, and some position-calculation when the buddylist is not showing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18424
diff
changeset
|
27 * - N = split-v in ~/.gntrc:[irssi] |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
28 * - Press alt-shift-k/j/l/h to move the selected window to the frame |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
29 * above/below/left/right of the current frame. |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
30 * 3. All the other windows are always centered. |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
31 */ |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
32 #include <stdlib.h> |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
33 #include <string.h> |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
34 #include <sys/types.h> |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
35 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
36 #include "gnt.h" |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
37 #include "gntbox.h" |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
38 #include "gntmenu.h" |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
39 #include "gntstyle.h" |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
40 #include "gntwm.h" |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
41 #include "gntwindow.h" |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
42 #include "gntlabel.h" |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
43 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
44 #define TYPE_IRSSI (irssi_get_gtype()) |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
45 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
46 typedef struct _Irssi |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
47 { |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
48 GntWM inherit; |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
49 int vert; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
50 int horiz; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
51 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
52 /* This is changed whenever the buddylist is opened/closed or resized. */ |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
53 int buddylistwidth; |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
54 } Irssi; |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
55 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
56 typedef struct _IrssiClass |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
57 { |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
58 GntWMClass inherit; |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
59 } IrssiClass; |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
60 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
61 GType irssi_get_gtype(void); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
62 void gntwm_init(GntWM **wm); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
63 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
64 static void (*org_new_window)(GntWM *wm, GntWidget *win); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
65 |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
66 static void |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
67 get_xywh_for_frame(Irssi *irssi, int hor, int vert, int *x, int *y, int *w, int *h) |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
68 { |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
69 int width, height, rx, ry; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
70 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
71 width = (getmaxx(stdscr) - irssi->buddylistwidth) / irssi->horiz; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
72 height = (getmaxy(stdscr) - 1) / irssi->vert; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
73 |
24919
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
74 if (width) { |
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
75 rx = irssi->buddylistwidth; |
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
76 } else { |
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
77 rx = 0; |
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
78 width = getmaxx(stdscr) / irssi->horiz; |
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
79 } |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
80 if (hor) |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
81 rx += hor * width; |
22988
307bab4c9e63
Correct the comments, and some position-calculation when the buddylist is not showing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18424
diff
changeset
|
82 if (rx) |
307bab4c9e63
Correct the comments, and some position-calculation when the buddylist is not showing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18424
diff
changeset
|
83 rx++; |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
84 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
85 ry = 0; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
86 if (vert) |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
87 ry += vert * height + 1; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
88 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
89 if (x) *x = rx; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
90 if (y) *y = ry; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
91 if (w) { |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
92 *w = (hor == irssi->horiz - 1) ? (getmaxx(stdscr) - rx) : (width - 1); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
93 } |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
94 if (h) { |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
95 *h = (vert == irssi->vert - 1) ? (getmaxy(stdscr) - 1 - ry) : (height - !!vert); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
96 } |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
97 } |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
98 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
99 static void |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
100 draw_line_separators(Irssi *irssi) |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
101 { |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
102 int x, y; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
103 int width, height; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
104 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
105 wclear(stdscr); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
106 /* Draw the separator for the buddylist */ |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
107 if (irssi->buddylistwidth) |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
108 mvwvline(stdscr, 0, irssi->buddylistwidth, |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
109 ACS_VLINE | COLOR_PAIR(GNT_COLOR_NORMAL), getmaxy(stdscr) - 1); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
110 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
111 /* Now the separators for the conversation windows */ |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
112 width = (getmaxx(stdscr) - irssi->buddylistwidth) / irssi->horiz; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
113 height = (getmaxy(stdscr) - 1) / irssi->vert; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
114 for (x = 1; x < irssi->horiz; x++) { |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
115 mvwvline(stdscr, 0, irssi->buddylistwidth + x * width, |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
116 ACS_VLINE | COLOR_PAIR(GNT_COLOR_NORMAL), getmaxy(stdscr) - 1); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
117 } |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
118 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
119 for (y = 1; y < irssi->vert; y++) { |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
120 mvwhline(stdscr, y * height, irssi->buddylistwidth + 1, ACS_HLINE | COLOR_PAIR(GNT_COLOR_NORMAL), |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
121 getmaxx(stdscr) - irssi->buddylistwidth); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
122 for (x = 1; x < irssi->horiz; x++) { |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
123 mvwaddch(stdscr, y * height, x * width + irssi->buddylistwidth, ACS_PLUS | COLOR_PAIR(GNT_COLOR_NORMAL)); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
124 } |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
125 if (irssi->buddylistwidth) |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
126 mvwaddch(stdscr, y * height, irssi->buddylistwidth, ACS_LTEE | COLOR_PAIR(GNT_COLOR_NORMAL)); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
127 } |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
128 } |
17991
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
129 |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
130 static gboolean |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
131 is_budddylist(GntWidget *win) |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
132 { |
17991
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
133 const char *name = gnt_widget_get_name(win); |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
134 if (name && strcmp(name, "buddylist") == 0) |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
135 return TRUE; |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
136 return FALSE; |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
137 } |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
138 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
139 static void |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
140 remove_border_set_position_size(GntWM *wm, GntWidget *win, int x, int y, int w, int h) |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
141 { |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
142 gnt_box_set_toplevel(GNT_BOX(win), FALSE); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
143 GNT_WIDGET_SET_FLAGS(win, GNT_WIDGET_CAN_TAKE_FOCUS); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
144 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
145 gnt_widget_set_position(win, x, y); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
146 mvwin(win->window, y, x); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
147 gnt_widget_set_size(win, (w < 0) ? -1 : w + 2, h + 2); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
148 } |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
149 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
150 static void |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
151 irssi_new_window(GntWM *wm, GntWidget *win) |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
152 { |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
153 const char *name; |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
154 int x, y, w, h; |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
155 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
156 name = gnt_widget_get_name(win); |
18406
29e48078a899
Update the irssi WM to do substring-search instead of string comparison.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18367
diff
changeset
|
157 if (!name || !strstr(name, "conversation-window")) { |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
158 if (!GNT_IS_MENU(win) && !GNT_WIDGET_IS_FLAG_SET(win, GNT_WIDGET_TRANSIENT)) { |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
159 if ((!name || strcmp(name, "buddylist"))) { |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
160 gnt_widget_get_size(win, &w, &h); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
161 x = (getmaxx(stdscr) - w) / 2; |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
162 y = (getmaxy(stdscr) - h) / 2; |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
163 gnt_widget_set_position(win, x, y); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
164 mvwin(win->window, y, x); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
165 } else { |
24214
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
166 gnt_window_set_maximize(GNT_WINDOW(win), GNT_WINDOW_MAXIMIZE_Y); |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
167 remove_border_set_position_size(wm, win, 0, 0, -1, getmaxy(stdscr) - 1); |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
168 gnt_widget_get_size(win, &((Irssi*)wm)->buddylistwidth, NULL); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
169 draw_line_separators((Irssi*)wm); |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
170 } |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
171 } |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
172 org_new_window(wm, win); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
173 return; |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
174 } |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
175 |
17991
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
176 /* The window we have here is a conversation window. */ |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
177 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
178 /* XXX: There should be some way to remember which frame a conversation window |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
179 * was in the last time. Perhaps save them in some ~/.gntpositionirssi or some |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
180 * such. */ |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
181 get_xywh_for_frame((Irssi*)wm, 0, 0, &x, &y, &w, &h); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
182 remove_border_set_position_size(wm, win, x, y, w, h); |
17991
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
183 org_new_window(wm, win); |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
184 } |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
185 |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
186 static void |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
187 irssi_window_resized(GntWM *wm, GntNode *node) |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
188 { |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
189 if (!is_budddylist(node->me)) |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
190 return; |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
191 |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
192 gnt_widget_get_size(node->me, &((Irssi*)wm)->buddylistwidth, NULL); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
193 draw_line_separators((Irssi*)wm); |
17991
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
194 } |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
195 |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
196 static gboolean |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
197 irssi_close_window(GntWM *wm, GntWidget *win) |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
198 { |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
199 if (is_budddylist(win)) |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
200 ((Irssi*)wm)->buddylistwidth = 0; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
201 return FALSE; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
202 } |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
203 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
204 static gboolean |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
205 update_conv_window_title(GntNode *node) |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
206 { |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
207 char title[256]; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
208 snprintf(title, sizeof(title), "%d: %s", |
18112 | 209 GPOINTER_TO_INT(g_object_get_data(G_OBJECT(node->me), "irssi-index")) + 1, |
210 GNT_BOX(node->me)->title); | |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
211 wbkgdset(node->window, '\0' | COLOR_PAIR(gnt_widget_has_focus(node->me) ? GNT_COLOR_TITLE : GNT_COLOR_TITLE_D)); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
212 mvwaddstr(node->window, 0, 0, title); |
18424
0b71d043a1f1
Update the irssi WM to not touch the screen when something else is using it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18406
diff
changeset
|
213 if (!gnt_is_refugee()) { |
0b71d043a1f1
Update the irssi WM to not touch the screen when something else is using it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18406
diff
changeset
|
214 update_panels(); |
0b71d043a1f1
Update the irssi WM to not touch the screen when something else is using it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18406
diff
changeset
|
215 doupdate(); |
0b71d043a1f1
Update the irssi WM to not touch the screen when something else is using it.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18406
diff
changeset
|
216 } |
17991
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
217 return FALSE; |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
218 } |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
219 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
220 static void |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
221 irssi_update_window(GntWM *wm, GntNode *node) |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
222 { |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
223 GntWidget *win = node->me; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
224 const char *name = gnt_widget_get_name(win); |
18406
29e48078a899
Update the irssi WM to do substring-search instead of string comparison.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18367
diff
changeset
|
225 if (!name || !GNT_IS_BOX(win) || !strstr(name, "conversation-window")) |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
226 return; |
18074
7e309149360f
Make the irssi wm work.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18045
diff
changeset
|
227 g_object_set_data(G_OBJECT(win), "irssi-index", GINT_TO_POINTER(g_list_index(wm->cws->list, win))); |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
228 g_timeout_add(0, (GSourceFunc)update_conv_window_title, node); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
229 } |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
230 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
231 static void |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
232 find_window_position(Irssi *irssi, GntWidget *win, int *h, int *v) |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
233 { |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
234 int x, y; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
235 int width, height; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
236 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
237 gnt_widget_get_position(win, &x, &y); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
238 width = (getmaxx(stdscr) - irssi->buddylistwidth) / irssi->horiz; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
239 height = (getmaxy(stdscr) - 1) / irssi->vert; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
240 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
241 if (h) |
24919
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
242 *h = width ? (x - irssi->buddylistwidth) / width : x / (getmaxx(stdscr) / irssi->horiz); |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
243 if (v) |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
244 *v = y / height; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
245 } |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
246 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
247 static gboolean |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
248 move_direction(GntBindable *bindable, GList *list) |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
249 { |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
250 GntWM *wm = GNT_WM(bindable); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
251 Irssi *irssi = (Irssi*)wm; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
252 int vert, hor; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
253 int x, y, w, h; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
254 GntWidget *win; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
255 |
18074
7e309149360f
Make the irssi wm work.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18045
diff
changeset
|
256 if (wm->cws->ordered == NULL || is_budddylist(win = GNT_WIDGET(wm->cws->ordered->data))) |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
257 return FALSE; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
258 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
259 find_window_position(irssi, win, &hor, &vert); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
260 |
18112 | 261 switch (GPOINTER_TO_INT(list->data)) { |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
262 case 'k': |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
263 vert = MAX(0, vert - 1); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
264 break; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
265 case 'j': |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
266 vert = MIN(vert + 1, irssi->vert - 1); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
267 break; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
268 case 'l': |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
269 hor = MIN(hor + 1, irssi->horiz - 1); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
270 break; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
271 case 'h': |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
272 hor = MAX(0, hor - 1); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
273 break; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
274 } |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
275 get_xywh_for_frame(irssi, hor, vert, &x, &y, &w, &h); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
276 gnt_wm_move_window(wm, win, x, y); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
277 gnt_wm_resize_window(wm, win, w, h); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
278 return TRUE; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
279 } |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
280 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
281 static void |
24214
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
282 refresh_window(GntWidget *widget, GntNode *node, Irssi *irssi) |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
283 { |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
284 int vert, hor; |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
285 int x, y, w, h; |
24919
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
286 const char *name; |
24214
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
287 |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
288 if (!GNT_IS_WINDOW(widget)) |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
289 return; |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
290 |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
291 if (is_budddylist(widget)) { |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
292 return; |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
293 } |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
294 |
24919
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
295 name = gnt_widget_get_name(widget); |
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
296 if (name && strstr(name, "conversation-window")) { |
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
297 find_window_position(irssi, widget, &hor, &vert); |
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
298 get_xywh_for_frame(irssi, hor, vert, &x, &y, &w, &h); |
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
299 gnt_wm_move_window(GNT_WM(irssi), widget, x, y); |
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
300 gnt_wm_resize_window(GNT_WM(irssi), widget, w, h); |
dcf2f613a6a6
Don't crash on screen refresh if buddylist is maximized. Fixes #8003.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24214
diff
changeset
|
301 } |
24214
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
302 } |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
303 |
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
304 static void |
18367
1648cd94dddf
Add a callback that gets triggered by SIGWINCH.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18317
diff
changeset
|
305 irssi_terminal_refresh(GntWM *wm) |
1648cd94dddf
Add a callback that gets triggered by SIGWINCH.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18317
diff
changeset
|
306 { |
1648cd94dddf
Add a callback that gets triggered by SIGWINCH.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18317
diff
changeset
|
307 draw_line_separators((Irssi*)wm); |
24214
f8ffea0d1c65
Fix a bug in the irssi plugin where the windows wouldn't expand when the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22988
diff
changeset
|
308 g_hash_table_foreach(wm->nodes, (GHFunc)refresh_window, wm); |
18367
1648cd94dddf
Add a callback that gets triggered by SIGWINCH.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18317
diff
changeset
|
309 } |
1648cd94dddf
Add a callback that gets triggered by SIGWINCH.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18317
diff
changeset
|
310 |
1648cd94dddf
Add a callback that gets triggered by SIGWINCH.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18317
diff
changeset
|
311 static void |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
312 irssi_class_init(IrssiClass *klass) |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
313 { |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
314 GntWMClass *pclass = GNT_WM_CLASS(klass); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
315 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
316 org_new_window = pclass->new_window; |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
317 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
318 pclass->new_window = irssi_new_window; |
17991
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
319 pclass->window_resized = irssi_window_resized; |
386047fb178b
Draw a separator line between the buddylist and the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17989
diff
changeset
|
320 pclass->close_window = irssi_close_window; |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
321 pclass->window_update = irssi_update_window; |
18367
1648cd94dddf
Add a callback that gets triggered by SIGWINCH.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18317
diff
changeset
|
322 pclass->terminal_refresh = irssi_terminal_refresh; |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
323 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
324 gnt_bindable_class_register_action(GNT_BINDABLE_CLASS(klass), "move-up", move_direction, |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
325 "\033" "K", GINT_TO_POINTER('k'), NULL); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
326 gnt_bindable_class_register_action(GNT_BINDABLE_CLASS(klass), "move-down", move_direction, |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
327 "\033" "J", GINT_TO_POINTER('j'), NULL); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
328 gnt_bindable_class_register_action(GNT_BINDABLE_CLASS(klass), "move-right", move_direction, |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
329 "\033" "L", GINT_TO_POINTER('l'), NULL); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
330 gnt_bindable_class_register_action(GNT_BINDABLE_CLASS(klass), "move-left", move_direction, |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
331 "\033" "H", GINT_TO_POINTER('h'), NULL); |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
332 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
333 gnt_style_read_actions(G_OBJECT_CLASS_TYPE(klass), GNT_BINDABLE_CLASS(klass)); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
334 GNTDEBUG; |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
335 } |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
336 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
337 void gntwm_init(GntWM **wm) |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
338 { |
18317
8aff2d3d6820
Plug a memory leak.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18312
diff
changeset
|
339 char *style = NULL; |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
340 Irssi *irssi; |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
341 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
342 irssi = g_object_new(TYPE_IRSSI, NULL); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
343 *wm = GNT_WM(irssi); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
344 |
18312
adcb44a07a2d
This is a more flexible way of getting random settings from .gntrc.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18112
diff
changeset
|
345 style = gnt_style_get_from_name("irssi", "split-v"); |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
346 irssi->vert = style ? atoi(style) : 1; |
18317
8aff2d3d6820
Plug a memory leak.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18312
diff
changeset
|
347 g_free(style); |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
348 |
18312
adcb44a07a2d
This is a more flexible way of getting random settings from .gntrc.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18112
diff
changeset
|
349 style = gnt_style_get_from_name("irssi", "split-h"); |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
350 irssi->horiz = style ? atoi(style) : 1; |
18317
8aff2d3d6820
Plug a memory leak.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18312
diff
changeset
|
351 g_free(style); |
18045
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
352 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
353 irssi->vert = MAX(irssi->vert, 1); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
354 irssi->horiz = MAX(irssi->horiz, 1); |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
355 |
08e93462f189
Update the irssi WM to allow tiling the conversation windows.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17991
diff
changeset
|
356 irssi->buddylistwidth = 0; |
17989
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
357 } |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
358 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
359 GType irssi_get_gtype(void) |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
360 { |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
361 static GType type = 0; |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
362 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
363 if(type == 0) { |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
364 static const GTypeInfo info = { |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
365 sizeof(IrssiClass), |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
366 NULL, /* base_init */ |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
367 NULL, /* base_finalize */ |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
368 (GClassInitFunc)irssi_class_init, |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
369 NULL, |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
370 NULL, /* class_data */ |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
371 sizeof(Irssi), |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
372 0, /* n_preallocs */ |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
373 NULL, /* instance_init */ |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
374 NULL |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
375 }; |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
376 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
377 type = g_type_register_static(GNT_TYPE_WM, |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
378 "GntIrssi", |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
379 &info, 0); |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
380 } |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
381 |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
382 return type; |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
383 } |
1bccb9641ef3
Add a new WM, irssi. Put the wm's in $(libdir)/gnt instead of in /finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
384 |