1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 12:28:22 +01:00

WPrefs.app: Add ability to set behavior when dragging a maximized window.

You can now set the behavior when dragging a maximized window, i.e., the
"DragMaximizedWindow" option from ~/GNUstep/Defaults/WindowMaker, from the
"Window Handling" tab of WPrefs.app.

Note that to make room for the pop-up button required to set this option, the
switch button to set the "OpenTransientOnOwnerWorkspace" option has been moved
to the "Expert User Preferences" tab and the "Edge Resistance" frame has been
made slightly smaller.

Signed-off-by: Carlos R. Mafra <crmafra@gmail.com>
This commit is contained in:
Doug Torrance
2014-09-24 22:30:52 -05:00
committed by Carlos R. Mafra
parent 9937566ec4
commit b20a58d592
2 changed files with 52 additions and 20 deletions

View File

@@ -84,8 +84,8 @@ static const struct {
{ N_("Enable window snapping."), { N_("Enable window snapping."),
/* default: */ False, OPTION_WMAKER, "WindowSnapping" }, /* default: */ False, OPTION_WMAKER, "WindowSnapping" },
{ N_("Return maximized windows to original geometry when moved."), { N_("Open dialogs in the same workspace as their owners."),
/* default: */ False, OPTION_WMAKER, "UnmaximizeOnMove" } /* default: */ False, OPTION_WMAKER, "OpenTransientOnOwnerWorkspace" }
}; };

View File

@@ -61,8 +61,8 @@ typedef struct _Panel {
WMButton *opaqresizeB; WMButton *opaqresizeB;
WMButton *opaqkeybB; WMButton *opaqkeybB;
WMFrame *tranF; WMFrame *dragmaxF;
WMButton *tranB; WMPopUpButton *dragmaxP;
} _Panel; } _Panel;
#define ICON_FILE "whandling" #define ICON_FILE "whandling"
@@ -77,7 +77,7 @@ typedef struct _Panel {
#define THUMB_SIZE 16 #define THUMB_SIZE 16
static const char *placements[] = { static const char *const placements[] = {
"auto", "auto",
"random", "random",
"manual", "manual",
@@ -86,6 +86,13 @@ static const char *placements[] = {
"center" "center"
}; };
static const char *const dragMaximizedWindowOptions[] = {
"Move",
"RestoreGeometry",
"Unmaximize",
"NoMove"
};
static void sliderCallback(WMWidget * w, void *data) static void sliderCallback(WMWidget * w, void *data)
{ {
_Panel *panel = (_Panel *) data; _Panel *panel = (_Panel *) data;
@@ -168,6 +175,25 @@ static int getPlacement(const char *str)
return 0; return 0;
} }
static int getDragMaximizedWindow(const char *str)
{
if (!str)
return 0;
if (strcasecmp(str, "Move") == 0)
return 0;
else if (strcasecmp(str, "RestoreGeometry") == 0)
return 1;
else if (strcasecmp(str, "Unmaximize") == 0)
return 2;
else if (strcasecmp(str, "NoMove") == 0)
return 3;
else
wwarning(_("bad option value %s in WindowPlacement. Using default value"), str);
return 0;
}
static void showData(_Panel * panel) static void showData(_Panel * panel)
{ {
char *str; char *str;
@@ -200,12 +226,13 @@ static void showData(_Panel * panel)
WMSetSliderValue(panel->resS, x); WMSetSliderValue(panel->resS, x);
resistanceCallback(NULL, panel); resistanceCallback(NULL, panel);
str = GetStringForKey("DragMaximizedWindow");
WMSetPopUpButtonSelectedItem(panel->dragmaxP, getDragMaximizedWindow(str));
x = GetIntegerForKey("ResizeIncrement"); x = GetIntegerForKey("ResizeIncrement");
WMSetSliderValue(panel->resizeS, x); WMSetSliderValue(panel->resizeS, x);
resizeCallback(NULL, panel); resizeCallback(NULL, panel);
WMSetButtonSelected(panel->tranB, GetBoolForKey("OpenTransientOnOwnerWorkspace"));
WMSetButtonSelected(panel->opaqB, GetBoolForKey("OpaqueMove")); WMSetButtonSelected(panel->opaqB, GetBoolForKey("OpaqueMove"));
WMSetButtonSelected(panel->opaqresizeB, GetBoolForKey("OpaqueResize")); WMSetButtonSelected(panel->opaqresizeB, GetBoolForKey("OpaqueResize"));
WMSetButtonSelected(panel->opaqkeybB, GetBoolForKey("OpaqueMoveResizeKeyboard")); WMSetButtonSelected(panel->opaqkeybB, GetBoolForKey("OpaqueMoveResizeKeyboard"));
@@ -232,8 +259,6 @@ static void storeData(_Panel * panel)
SetBoolForKey(WMGetButtonSelected(panel->opaqresizeB), "OpaqueResize"); SetBoolForKey(WMGetButtonSelected(panel->opaqresizeB), "OpaqueResize");
SetBoolForKey(WMGetButtonSelected(panel->opaqkeybB), "OpaqueMoveResizeKeyboard"); SetBoolForKey(WMGetButtonSelected(panel->opaqkeybB), "OpaqueMoveResizeKeyboard");
SetBoolForKey(WMGetButtonSelected(panel->tranB), "OpenTransientOnOwnerWorkspace");
SetStringForKey(placements[WMGetPopUpButtonSelectedItem(panel->placP)], "WindowPlacement"); SetStringForKey(placements[WMGetPopUpButtonSelectedItem(panel->placP)], "WindowPlacement");
sprintf(buf, "%i", WMGetSliderValue(panel->hsli)); sprintf(buf, "%i", WMGetSliderValue(panel->hsli));
x = WMCreatePLString(buf); x = WMCreatePLString(buf);
@@ -246,6 +271,9 @@ static void storeData(_Panel * panel)
SetIntegerForKey(WMGetSliderValue(panel->resS), "EdgeResistance"); SetIntegerForKey(WMGetSliderValue(panel->resS), "EdgeResistance");
SetStringForKey(dragMaximizedWindowOptions[WMGetPopUpButtonSelectedItem(panel->dragmaxP)],
"DragMaximizedWindow");
SetIntegerForKey(WMGetSliderValue(panel->resizeS), "ResizeIncrement"); SetIntegerForKey(WMGetSliderValue(panel->resizeS), "ResizeIncrement");
SetBoolForKey(WMGetButtonSelected(panel->resrB), "Attraction"); SetBoolForKey(WMGetButtonSelected(panel->resrB), "Attraction");
@@ -463,7 +491,7 @@ static void createPanel(Panel * p)
/**************** Edge Resistance ****************/ /**************** Edge Resistance ****************/
panel->resF = WMCreateFrame(panel->box); panel->resF = WMCreateFrame(panel->box);
WMResizeWidget(panel->resF, 289, 50); WMResizeWidget(panel->resF, 289, 47);
WMMoveWidget(panel->resF, 8, 125); WMMoveWidget(panel->resF, 8, 125);
WMSetFrameTitle(panel->resF, _("Edge Resistance")); WMSetFrameTitle(panel->resF, _("Edge Resistance"));
@@ -474,7 +502,7 @@ static void createPanel(Panel * p)
panel->resS = WMCreateSlider(panel->resF); panel->resS = WMCreateSlider(panel->resF);
WMResizeWidget(panel->resS, 80, 15); WMResizeWidget(panel->resS, 80, 15);
WMMoveWidget(panel->resS, 10, 22); WMMoveWidget(panel->resS, 10, 20);
WMSetSliderMinValue(panel->resS, 0); WMSetSliderMinValue(panel->resS, 0);
WMSetSliderMaxValue(panel->resS, 80); WMSetSliderMaxValue(panel->resS, 80);
WMSetSliderAction(panel->resS, resistanceCallback, panel); WMSetSliderAction(panel->resS, resistanceCallback, panel);
@@ -496,17 +524,21 @@ static void createPanel(Panel * p)
WMMapSubwidgets(panel->resF); WMMapSubwidgets(panel->resF);
/**************** Transients on Parent Workspace ****************/ /**************** Dragging a Maximized Window ****************/
panel->tranF = WMCreateFrame(panel->box); panel->dragmaxF = WMCreateFrame(panel->box);
WMResizeWidget(panel->tranF, 289, 40); WMResizeWidget(panel->dragmaxF, 289, 46);
WMMoveWidget(panel->tranF, 8, 185); WMMoveWidget(panel->dragmaxF, 8, 179);
WMSetFrameTitle(panel->dragmaxF, _("When dragging a maximized window..."));
panel->tranB = WMCreateSwitchButton(panel->tranF); panel->dragmaxP = WMCreatePopUpButton(panel->dragmaxF);
WMMoveWidget(panel->tranB, 10, 5); WMResizeWidget(panel->dragmaxP, 269, 20);
WMResizeWidget(panel->tranB, 250, 30); WMMoveWidget(panel->dragmaxP, 10, 20);
WMSetButtonText(panel->tranB, _("Open dialogs in the same workspace as their owners")); WMAddPopUpButtonItem(panel->dragmaxP, _("...change position (normal behavior)"));
WMAddPopUpButtonItem(panel->dragmaxP, _("...restore unmaximized geometry"));
WMAddPopUpButtonItem(panel->dragmaxP, _("...consider the window unmaximized"));
WMAddPopUpButtonItem(panel->dragmaxP, _("...do not move the window"));
WMMapSubwidgets(panel->tranF); WMMapSubwidgets(panel->dragmaxF);
WMRealizeWidget(panel->box); WMRealizeWidget(panel->box);
WMMapSubwidgets(panel->box); WMMapSubwidgets(panel->box);