fixed right and left placement
This commit is contained in:
parent
9acaeba680
commit
27a73906fe
1 changed files with 134 additions and 52 deletions
186
src/Toolbar.cc
186
src/Toolbar.cc
|
@ -22,7 +22,7 @@
|
|||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
// $Id: Toolbar.cc,v 1.47 2002/12/03 17:02:53 fluxgen Exp $
|
||||
// $Id: Toolbar.cc,v 1.48 2002/12/04 17:58:01 fluxgen Exp $
|
||||
|
||||
#include "Toolbar.hh"
|
||||
|
||||
|
@ -69,6 +69,7 @@
|
|||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// toolbar frame
|
||||
Toolbar::Frame::Frame(FbTk::EventHandler &evh, int screen_num):
|
||||
window(screen_num, // screen (parent)
|
||||
|
@ -276,7 +277,7 @@ void Toolbar::reconfigure() {
|
|||
if (w > frame.workspace_label_w)
|
||||
frame.workspace_label_w = w;
|
||||
}
|
||||
|
||||
|
||||
if (frame.workspace_label_w < frame.clock_w)
|
||||
frame.workspace_label_w = frame.clock_w;
|
||||
else if (frame.workspace_label_w > frame.clock_w)
|
||||
|
@ -285,7 +286,7 @@ void Toolbar::reconfigure() {
|
|||
frame.window_label_w =
|
||||
(frame.width - (frame.clock_w + (frame.button_w * 4) +
|
||||
frame.workspace_label_w + (frame.bevel_w * 8) + 6));
|
||||
|
||||
|
||||
if (hidden)
|
||||
frame.window.moveResize(frame.x_hidden, frame.y_hidden,
|
||||
frame.width, frame.height);
|
||||
|
@ -293,51 +294,75 @@ void Toolbar::reconfigure() {
|
|||
frame.window.moveResize(frame.x, frame.y,
|
||||
frame.width, frame.height);
|
||||
}
|
||||
|
||||
cerr<<"workspace label width = "<<frame.workspace_label_w<<endl;
|
||||
|
||||
bool vertical = isVertical();
|
||||
unsigned int size_w = frame.workspace_label_w;
|
||||
unsigned int size_h = frame.label_h;
|
||||
unsigned int swap_var = 0;
|
||||
if (vertical) {
|
||||
swap_var = size_w;
|
||||
size_w = size_h;
|
||||
size_h = swap_var;
|
||||
}
|
||||
frame.workspace_label.moveResize(frame.bevel_w, frame.bevel_w, size_w, size_h);
|
||||
unsigned int next_x = frame.workspace_label_w;
|
||||
unsigned int next_y = frame.window.height();
|
||||
|
||||
size_w = frame.workspace_label_w + 1;
|
||||
size_h = frame.bevel_w + 1;
|
||||
if (vertical) {
|
||||
swap_var = size_w;
|
||||
size_w = size_h;
|
||||
size_h = swap_var;
|
||||
next_x = frame.window.width();
|
||||
next_y = frame.workspace_label_w;
|
||||
}
|
||||
|
||||
frame.workspace_label.moveResize(frame.bevel_w, frame.bevel_w, next_x, next_y);
|
||||
next_x = 0;
|
||||
next_y = 0;
|
||||
if (vertical) {
|
||||
next_y += frame.workspace_label.height() + 1;
|
||||
} else {
|
||||
next_x += frame.workspace_label.width() + 1;
|
||||
}
|
||||
|
||||
frame.psbutton.moveResize(frame.bevel_w * 2 +
|
||||
size_w , size_h,
|
||||
next_x , next_y,
|
||||
frame.button_w, frame.button_w);
|
||||
if (vertical)
|
||||
size_h += frame.button_w + 1;
|
||||
next_y += frame.psbutton.height() + 1;
|
||||
else
|
||||
size_w += frame.button_w + 1;
|
||||
next_x += frame.psbutton.width() + 1;
|
||||
|
||||
frame.nsbutton.moveResize(frame.bevel_w * 3 +
|
||||
size_w, size_h,
|
||||
next_x, next_y,
|
||||
frame.button_w, frame.button_w);
|
||||
frame.window_label.moveResize(frame.bevel_w * 4 +
|
||||
frame.button_w * 2 + frame.workspace_label_w + 3,
|
||||
frame.bevel_w, frame.window_label_w, frame.label_h);
|
||||
frame.pwbutton.moveResize(frame.bevel_w * 5 +
|
||||
frame.button_w * 2 + frame.workspace_label_w +
|
||||
frame.window_label_w + 4, frame.bevel_w + 1,
|
||||
size_t label_w = frame.window_label_w;
|
||||
size_t label_h = frame.height;
|
||||
|
||||
if (vertical) {
|
||||
next_y += frame.nsbutton.height() + 1;
|
||||
label_w = frame.width;
|
||||
label_h = frame.window_label_w - frame.width + frame.height;
|
||||
|
||||
} else
|
||||
next_x += frame.nsbutton.width() + 1;
|
||||
|
||||
|
||||
frame.window_label.moveResize(next_x, next_y,
|
||||
label_w, label_h);
|
||||
if (vertical)
|
||||
next_y += frame.window_label.height() + 1;
|
||||
else
|
||||
next_x += frame.window_label.width() + 1;
|
||||
|
||||
frame.pwbutton.moveResize(next_x, next_y,
|
||||
frame.button_w, frame.button_w);
|
||||
frame.nwbutton.moveResize(frame.bevel_w * 6 +
|
||||
frame.button_w * 3 + frame.workspace_label_w +
|
||||
frame.window_label_w + 5, frame.bevel_w + 1,
|
||||
if (vertical)
|
||||
next_y += frame.pwbutton.height() + 1;
|
||||
else
|
||||
next_x += frame.pwbutton.width() + 1;
|
||||
|
||||
frame.nwbutton.moveResize(next_x, next_y,
|
||||
frame.button_w, frame.button_w);
|
||||
frame.clock.moveResize(frame.width - frame.clock_w -
|
||||
frame.bevel_w, frame.bevel_w, frame.clock_w,
|
||||
frame.label_h);
|
||||
size_t clock_w = frame.width - next_x - frame.nwbutton.width() - 1;
|
||||
size_t clock_h = frame.height;
|
||||
if (vertical) {
|
||||
next_y += frame.nwbutton.height() + 1;
|
||||
clock_w = frame.width;
|
||||
clock_h = frame.height - next_y;
|
||||
} else
|
||||
next_x += frame.nwbutton.width() + 1;
|
||||
|
||||
frame.clock.moveResize(next_x, next_y,
|
||||
clock_w, clock_h);
|
||||
|
||||
Pixmap tmp = frame.base;
|
||||
const FbTk::Texture *texture = &(m_theme.toolbar());
|
||||
|
@ -345,7 +370,7 @@ void Toolbar::reconfigure() {
|
|||
frame.base = None;
|
||||
frame.window.setBackgroundColor(texture->color());
|
||||
} else {
|
||||
frame.base = image_ctrl.renderImage(frame.width, frame.height, *texture);
|
||||
frame.base = image_ctrl.renderImage(frame.window.width(), frame.window.height(), *texture);
|
||||
frame.window.setBackgroundPixmap(frame.base);
|
||||
}
|
||||
if (tmp) image_ctrl.removeImage(tmp);
|
||||
|
@ -357,7 +382,7 @@ void Toolbar::reconfigure() {
|
|||
frame.window_label.setBackgroundColor(texture->color());
|
||||
} else {
|
||||
frame.label =
|
||||
image_ctrl.renderImage(frame.window_label_w, frame.label_h, *texture);
|
||||
image_ctrl.renderImage(frame.window_label.width(), frame.window_label.height(), *texture);
|
||||
frame.window_label.setBackgroundPixmap(frame.label);
|
||||
}
|
||||
if (tmp) image_ctrl.removeImage(tmp);
|
||||
|
@ -369,7 +394,8 @@ void Toolbar::reconfigure() {
|
|||
frame.workspace_label.setBackgroundColor(texture->color());
|
||||
} else {
|
||||
frame.wlabel =
|
||||
image_ctrl.renderImage(frame.workspace_label_w, frame.label_h, *texture);
|
||||
image_ctrl.renderImage(frame.workspace_label.width(),
|
||||
frame.workspace_label.height(), *texture);
|
||||
frame.workspace_label.setBackgroundPixmap(frame.wlabel);
|
||||
}
|
||||
if (tmp) image_ctrl.removeImage(tmp);
|
||||
|
@ -381,7 +407,7 @@ void Toolbar::reconfigure() {
|
|||
frame.clock.setBackgroundColor(texture->color());
|
||||
} else {
|
||||
frame.clk =
|
||||
image_ctrl.renderImage(frame.clock_w, frame.label_h, *texture);
|
||||
image_ctrl.renderImage(frame.clock.width(), frame.clock.height(), *texture);
|
||||
frame.clock.setBackgroundPixmap(frame.clk);
|
||||
}
|
||||
if (tmp) image_ctrl.removeImage(tmp);
|
||||
|
@ -543,13 +569,18 @@ void Toolbar::checkClock(bool redraw, bool date) {
|
|||
m_theme.justify(),
|
||||
m_theme.font(),
|
||||
t, strlen(t), newlen);
|
||||
|
||||
int dy = 1 + m_theme.font().ascent();
|
||||
if (m_theme.font().isRotated()) {
|
||||
int tmp = dy;
|
||||
dy = frame.clock.height() - dx;
|
||||
dx = tmp;
|
||||
}
|
||||
m_theme.font().drawText(
|
||||
frame.clock.window(),
|
||||
screen()->getScreenNumber(),
|
||||
m_theme.clockTextGC(),
|
||||
t, newlen,
|
||||
dx, 1 + m_theme.font().ascent());
|
||||
dx, dy);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -568,13 +599,20 @@ void Toolbar::redrawWindowLabel(bool redraw) {
|
|||
m_theme.justify(),
|
||||
m_theme.font(),
|
||||
foc->getTitle().c_str(), foc->getTitle().size(), newlen);
|
||||
|
||||
int dy = 1 + m_theme.font().ascent();
|
||||
|
||||
if (m_theme.font().isRotated()) {
|
||||
int tmp = dy;
|
||||
dy = frame.window_label.height() - dx;
|
||||
dx = tmp;
|
||||
}
|
||||
|
||||
m_theme.font().drawText(
|
||||
frame.window_label.window(),
|
||||
screen()->getScreenNumber(),
|
||||
m_theme.windowTextGC(),
|
||||
foc->getTitle().c_str(), newlen,
|
||||
dx, 1 + m_theme.font().ascent());
|
||||
dx, dy);
|
||||
} else
|
||||
frame.window_label.clear();
|
||||
}
|
||||
|
@ -594,13 +632,18 @@ void Toolbar::redrawWorkspaceLabel(bool redraw) {
|
|||
m_theme.justify(),
|
||||
m_theme.font(),
|
||||
text, textlen, newlen);
|
||||
|
||||
int dy = 1 + m_theme.font().ascent();
|
||||
if (m_theme.font().isRotated()) {
|
||||
int tmp = dy;
|
||||
dy = frame.workspace_label_w - dx;
|
||||
dx = tmp;
|
||||
}
|
||||
m_theme.font().drawText(
|
||||
frame.workspace_label.window(),
|
||||
screen()->getScreenNumber(),
|
||||
m_theme.labelTextGC(),
|
||||
text, newlen,
|
||||
dx, 1 + m_theme.font().ascent());
|
||||
dx, dy);
|
||||
}
|
||||
|
||||
|
||||
|
@ -693,7 +736,7 @@ void Toolbar::edit() {
|
|||
|
||||
editing = true; //mark for editing
|
||||
|
||||
//workspace labe already got intput focus ?
|
||||
//workspace label already has intput focus ?
|
||||
if (XGetInputFocus(display, &window, &foo) &&
|
||||
window == frame.workspace_label)
|
||||
return;
|
||||
|
@ -1069,9 +1112,39 @@ void Toolbar::setPlacement(Toolbar::Placement where) {
|
|||
screen()->getBorderWidth();
|
||||
break;
|
||||
case LEFTCENTER:
|
||||
frame.x = 0;
|
||||
frame.x = head_x;
|
||||
frame.y = head_y + (head_h - frame.height)/2;
|
||||
frame.x_hidden = head_x + head_w - screen()->getBevelWidth() - screen()->getBorderWidth();
|
||||
frame.x_hidden = frame.x - frame.width + screen()->getBevelWidth() + screen()->getBorderWidth();
|
||||
frame.y_hidden = frame.y;
|
||||
break;
|
||||
case LEFTTOP:
|
||||
frame.x = head_x;
|
||||
frame.y = head_y;
|
||||
frame.x_hidden = frame.x - frame.width + screen()->getBevelWidth() + screen()->getBorderWidth();
|
||||
frame.y_hidden = frame.y;
|
||||
break;
|
||||
case LEFTBOTTOM:
|
||||
frame.x = head_x;
|
||||
frame.y = head_y + head_h - frame.height;
|
||||
frame.x_hidden = frame.x - frame.width + screen()->getBevelWidth() + screen()->getBorderWidth();
|
||||
frame.y_hidden = frame.y;
|
||||
break;
|
||||
case RIGHTCENTER:
|
||||
frame.x = head_x + head_w - frame.width;
|
||||
frame.y = head_y + (head_h - frame.height)/2;
|
||||
frame.x_hidden = frame.x + frame.width - screen()->getBevelWidth() - screen()->getBorderWidth();
|
||||
frame.y_hidden = frame.y;
|
||||
break;
|
||||
case RIGHTTOP:
|
||||
frame.x = head_x + head_w - frame.width;
|
||||
frame.y = head_y;
|
||||
frame.x_hidden = frame.x + frame.width - screen()->getBevelWidth() - screen()->getBorderWidth();
|
||||
frame.y_hidden = frame.y;
|
||||
break;
|
||||
case RIGHTBOTTOM:
|
||||
frame.x = head_x + head_w - frame.width;
|
||||
frame.y = head_y + head_h - frame.height;
|
||||
frame.x_hidden = frame.x + frame.width - screen()->getBevelWidth() - screen()->getBorderWidth();
|
||||
frame.y_hidden = frame.y;
|
||||
break;
|
||||
}
|
||||
|
@ -1207,7 +1280,7 @@ void Toolbarmenu::reconfigure() {
|
|||
Basemenu::reconfigure();
|
||||
}
|
||||
|
||||
|
||||
//TODO: fix placement
|
||||
Toolbarmenu::Placementmenu::Placementmenu(Toolbarmenu &tm)
|
||||
: Basemenu(tm.m_toolbar.screen()), m_toolbarmenu(tm) {
|
||||
|
||||
|
@ -1217,12 +1290,18 @@ Toolbarmenu::Placementmenu::Placementmenu(Toolbarmenu &tm)
|
|||
ToolbarSet, ToolbarToolbarPlacement,
|
||||
"Toolbar Placement"));
|
||||
setInternalMenu();
|
||||
setMinimumSublevels(3);
|
||||
setMinimumSublevels(5);
|
||||
|
||||
insert("Left Top", Toolbar::LEFTTOP);
|
||||
insert("Left Center", Toolbar::LEFTCENTER);
|
||||
insert("Left Bottom", Toolbar::LEFTBOTTOM);
|
||||
|
||||
insert(i18n->getMessage(
|
||||
CommonSet, CommonPlacementTopLeft,
|
||||
"Top Left"),
|
||||
Toolbar::TOPLEFT);
|
||||
insert("");
|
||||
|
||||
insert(i18n->getMessage(
|
||||
CommonSet, CommonPlacementBottomLeft,
|
||||
"Bottom Left"),
|
||||
|
@ -1231,6 +1310,7 @@ Toolbarmenu::Placementmenu::Placementmenu(Toolbarmenu &tm)
|
|||
CommonSet, CommonPlacementTopCenter,
|
||||
"Top Center"),
|
||||
Toolbar::TOPCENTER);
|
||||
insert("");
|
||||
insert(i18n->getMessage(
|
||||
CommonSet, CommonPlacementBottomCenter,
|
||||
"Bottom Center"),
|
||||
|
@ -1239,13 +1319,15 @@ Toolbarmenu::Placementmenu::Placementmenu(Toolbarmenu &tm)
|
|||
CommonSet, CommonPlacementTopRight,
|
||||
"Top Right"),
|
||||
Toolbar::TOPRIGHT);
|
||||
insert("");
|
||||
insert(i18n->getMessage(
|
||||
CommonSet, CommonPlacementBottomRight,
|
||||
"Bottom Right"),
|
||||
Toolbar::BOTTOMRIGHT);
|
||||
|
||||
insert("Left Center", Toolbar::LEFTCENTER);
|
||||
|
||||
insert("Right Top", Toolbar::RIGHTTOP);
|
||||
insert("Right Center", Toolbar::RIGHTCENTER);
|
||||
insert("Right Bottom", Toolbar::RIGHTBOTTOM);
|
||||
update();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue