1 To: [email protected] |
|
2 Subject: Patch 7.2.264 |
|
3 Fcc: outbox |
|
4 From: Bram Moolenaar <[email protected]> |
|
5 Mime-Version: 1.0 |
|
6 Content-Type: text/plain; charset=UTF-8 |
|
7 Content-Transfer-Encoding: 8bit |
|
8 ------------ |
|
9 |
|
10 Patch 7.2.264 |
|
11 Problem: GTK2: When the Vim window is maximized setting 'columns' or |
|
12 'lines' doesn't work. |
|
13 Solution: Unmaximize the window before setting the size. (Vitaly Minko) |
|
14 Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro |
|
15 |
|
16 |
|
17 *** ../vim-7.2.263/src/gui.c 2009-07-29 11:10:31.000000000 +0200 |
|
18 --- src/gui.c 2009-09-23 16:28:09.000000000 +0200 |
|
19 *************** |
|
20 *** 1386,1391 **** |
|
21 --- 1386,1395 ---- |
|
22 int min_height; |
|
23 int screen_w; |
|
24 int screen_h; |
|
25 + #ifdef HAVE_GTK2 |
|
26 + int un_maximize = mustset; |
|
27 + int did_adjust = 0; |
|
28 + #endif |
|
29 |
|
30 if (!gui.shell_created) |
|
31 return; |
|
32 *************** |
|
33 *** 1425,1446 **** |
|
34 if (Columns < MIN_COLUMNS) |
|
35 Columns = MIN_COLUMNS; |
|
36 width = Columns * gui.char_width + base_width; |
|
37 } |
|
38 if ((direction & RESIZE_VERT) && height > screen_h) |
|
39 { |
|
40 Rows = (screen_h - base_height) / gui.char_height; |
|
41 check_shellsize(); |
|
42 height = Rows * gui.char_height + base_height; |
|
43 } |
|
44 } |
|
45 gui.num_cols = Columns; |
|
46 gui.num_rows = Rows; |
|
47 |
|
48 min_width = base_width + MIN_COLUMNS * gui.char_width; |
|
49 min_height = base_height + MIN_LINES * gui.char_height; |
|
50 ! # ifdef FEAT_WINDOWS |
|
51 min_height += tabline_height() * gui.char_height; |
|
52 ! # endif |
|
53 |
|
54 gui_mch_set_shellsize(width, height, min_width, min_height, |
|
55 base_width, base_height, direction); |
|
56 --- 1429,1475 ---- |
|
57 if (Columns < MIN_COLUMNS) |
|
58 Columns = MIN_COLUMNS; |
|
59 width = Columns * gui.char_width + base_width; |
|
60 + #ifdef HAVE_GTK2 |
|
61 + ++did_adjust; |
|
62 + #endif |
|
63 } |
|
64 if ((direction & RESIZE_VERT) && height > screen_h) |
|
65 { |
|
66 Rows = (screen_h - base_height) / gui.char_height; |
|
67 check_shellsize(); |
|
68 height = Rows * gui.char_height + base_height; |
|
69 + #ifdef HAVE_GTK2 |
|
70 + ++did_adjust; |
|
71 + #endif |
|
72 } |
|
73 + #ifdef HAVE_GTK2 |
|
74 + if (did_adjust == 2 || (width + gui.char_width >= screen_w |
|
75 + && height + gui.char_height >= screen_h)) |
|
76 + /* don't unmaximize if at maximum size */ |
|
77 + un_maximize = FALSE; |
|
78 + #endif |
|
79 } |
|
80 gui.num_cols = Columns; |
|
81 gui.num_rows = Rows; |
|
82 |
|
83 min_width = base_width + MIN_COLUMNS * gui.char_width; |
|
84 min_height = base_height + MIN_LINES * gui.char_height; |
|
85 ! #ifdef FEAT_WINDOWS |
|
86 min_height += tabline_height() * gui.char_height; |
|
87 ! #endif |
|
88 ! |
|
89 ! #ifdef HAVE_GTK2 |
|
90 ! if (un_maximize) |
|
91 ! { |
|
92 ! /* If the window size is smaller than the screen unmaximize the |
|
93 ! * window, otherwise resizing won't work. */ |
|
94 ! gui_mch_get_screen_dimensions(&screen_w, &screen_h); |
|
95 ! if ((width + gui.char_width < screen_w |
|
96 ! || height + gui.char_height * 2 < screen_h) |
|
97 ! && gui_mch_maximized()) |
|
98 ! gui_mch_unmaximize(); |
|
99 ! } |
|
100 ! #endif |
|
101 |
|
102 gui_mch_set_shellsize(width, height, min_width, min_height, |
|
103 base_width, base_height, direction); |
|
104 *** ../vim-7.2.263/src/gui_gtk_x11.c 2009-09-23 17:35:17.000000000 +0200 |
|
105 --- src/gui_gtk_x11.c 2009-09-23 15:43:52.000000000 +0200 |
|
106 *************** |
|
107 *** 4376,4381 **** |
|
108 --- 4376,4404 ---- |
|
109 #endif |
|
110 #endif /* HAVE_GTK2 */ |
|
111 |
|
112 + #if defined(HAVE_GTK2) || defined(PROTO) |
|
113 + /* |
|
114 + * Return TRUE if the main window is maximized. |
|
115 + */ |
|
116 + int |
|
117 + gui_mch_maximized() |
|
118 + { |
|
119 + return (gui.mainwin != NULL && gui.mainwin->window != NULL |
|
120 + && (gdk_window_get_state(gui.mainwin->window) |
|
121 + & GDK_WINDOW_STATE_MAXIMIZED)); |
|
122 + } |
|
123 + |
|
124 + /* |
|
125 + * Unmaximize the main window |
|
126 + */ |
|
127 + void |
|
128 + gui_mch_unmaximize() |
|
129 + { |
|
130 + if (gui.mainwin != NULL) |
|
131 + gtk_window_unmaximize(GTK_WINDOW(gui.mainwin)); |
|
132 + } |
|
133 + #endif |
|
134 + |
|
135 /* |
|
136 * Set the windows size. |
|
137 */ |
|
138 *** ../vim-7.2.263/src/proto/gui_gtk_x11.pro 2007-05-05 19:18:54.000000000 +0200 |
|
139 --- src/proto/gui_gtk_x11.pro 2009-09-23 15:43:45.000000000 +0200 |
|
140 *************** |
|
141 *** 16,21 **** |
|
142 --- 16,23 ---- |
|
143 void gui_mch_exit __ARGS((int rc)); |
|
144 int gui_mch_get_winpos __ARGS((int *x, int *y)); |
|
145 void gui_mch_set_winpos __ARGS((int x, int y)); |
|
146 + int gui_mch_maximized __ARGS((void)); |
|
147 + void gui_mch_unmaximize __ARGS((void)); |
|
148 void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction)); |
|
149 void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h)); |
|
150 void gui_mch_settitle __ARGS((char_u *title, char_u *icon)); |
|
151 *** ../vim-7.2.263/src/version.c 2009-09-23 17:35:17.000000000 +0200 |
|
152 --- src/version.c 2009-09-23 18:12:21.000000000 +0200 |
|
153 *************** |
|
154 *** 678,679 **** |
|
155 --- 678,681 ---- |
|
156 { /* Add new patch number below this line */ |
|
157 + /**/ |
|
158 + 264, |
|
159 /**/ |
|
160 |
|
161 -- |
|
162 hundred-and-one symptoms of being an internet addict: |
|
163 268. You get up in the morning and go online before getting your coffee. |
|
164 |
|
165 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\ |
|
166 /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
|
167 \\\ download, build and distribute -- http://www.A-A-P.org /// |
|
168 \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |
|